[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝ : Mul β
⊢ let mul := Equiv.mul e;
  α ≃* β
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝ : Mul β
mul✝ : Mul α := Equiv.mul e
⊢ α ≃* β
[PROOFSTEP]
exact
  { e with
    map_mul' := fun x y => by
      apply e.symm.injective
      simp [mul_def] }
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝ : Mul β
mul✝ : Mul α := Equiv.mul e
x y : α
⊢ toFun
      { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
        right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
      (x * y) =
    toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        x *
      toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        y
[PROOFSTEP]
apply e.symm.injective
[GOAL]
case a
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝ : Mul β
mul✝ : Mul α := Equiv.mul e
x y : α
⊢ ↑e.symm
      (toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        (x * y)) =
    ↑e.symm
      (toFun
          { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
            right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
          x *
        toFun
          { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
            right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
          y)
[PROOFSTEP]
simp [mul_def]
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝ : Mul β
b : β
⊢ ↑(MulEquiv.symm (mulEquiv e)) b = ↑e.symm b
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝ : Mul β
b : β
⊢ ↑(MulEquiv.symm (mulEquiv e)) b = ↑e.symm b
[PROOFSTEP]
rfl
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
⊢ Sort ?u.112825
[PROOFSTEP]
let add := Equiv.add e
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
add : Add α := Equiv.add e
⊢ Sort ?u.112825
[PROOFSTEP]
let mul := Equiv.mul e
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
⊢ Sort ?u.112825
[PROOFSTEP]
exact α ≃+* β
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
⊢ let add := Equiv.add e;
  let mul := Equiv.mul e;
  α ≃+* β
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
add✝ : Add α := Equiv.add e
mul✝ : Mul α := Equiv.mul e
⊢ α ≃+* β
[PROOFSTEP]
exact
  {
    e with
    map_add' := fun x y => by
      apply e.symm.injective
      simp [add_def]
    map_mul' := fun x y => by
      apply e.symm.injective
      simp [mul_def] }
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
add✝ : Add α := Equiv.add e
mul✝ : Mul α := Equiv.mul e
x y : α
⊢ toFun
      { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
        right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
      (x * y) =
    toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        x *
      toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        y
[PROOFSTEP]
apply e.symm.injective
[GOAL]
case a
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
add✝ : Add α := Equiv.add e
mul✝ : Mul α := Equiv.mul e
x y : α
⊢ ↑e.symm
      (toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        (x * y)) =
    ↑e.symm
      (toFun
          { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
            right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
          x *
        toFun
          { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
            right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
          y)
[PROOFSTEP]
simp [mul_def]
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
add✝ : Add α := Equiv.add e
mul✝ : Mul α := Equiv.mul e
x y : α
⊢ toFun
      { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
        right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
      (x + y) =
    toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        x +
      toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        y
[PROOFSTEP]
apply e.symm.injective
[GOAL]
case a
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
add✝ : Add α := Equiv.add e
mul✝ : Mul α := Equiv.mul e
x y : α
⊢ ↑e.symm
      (toFun
        { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
          right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
        (x + y)) =
    ↑e.symm
      (toFun
          { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
            right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
          x +
        toFun
          { toFun := e.toFun, invFun := e.invFun, left_inv := (_ : Function.LeftInverse e.invFun e.toFun),
            right_inv := (_ : Function.RightInverse e.invFun e.toFun) }
          y)
[PROOFSTEP]
simp [add_def]
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
⊢ Sort ?u.184035
[PROOFSTEP]
letI := Equiv.add e
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
this : Add α := Equiv.add e
⊢ Sort ?u.184035
[PROOFSTEP]
letI := Equiv.mul e
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
this✝ : Add α := Equiv.add e
this : Mul α := Equiv.mul e
⊢ Sort ?u.184035
[PROOFSTEP]
exact (ringEquiv e).symm b = e.symm b
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
⊢ ↑(RingEquiv.symm (ringEquiv e)) b = ↑e.symm b
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
⊢ ↑(RingEquiv.symm (ringEquiv e)) b = ↑e.symm b
[PROOFSTEP]
rfl
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semigroup β
⊢ Semigroup α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semigroup β
mul : Mul α := Equiv.mul e
⊢ Semigroup α
[PROOFSTEP]
apply e.injective.semigroup _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semigroup β
mul : Mul α := Equiv.mul e
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semigroup β
mul : Mul α := Equiv.mul e
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : SemigroupWithZero β
⊢ SemigroupWithZero α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : SemigroupWithZero β
mul : Mul α := Equiv.mul e
⊢ SemigroupWithZero α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : SemigroupWithZero β
mul : Mul α := Equiv.mul e
zero : Zero α := Equiv.zero e
⊢ SemigroupWithZero α
[PROOFSTEP]
apply e.injective.semigroupWithZero _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : SemigroupWithZero β
mul : Mul α := Equiv.mul e
zero : Zero α := Equiv.zero e
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : SemigroupWithZero β
mul : Mul α := Equiv.mul e
zero : Zero α := Equiv.zero e
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : SemigroupWithZero β
mul : Mul α := Equiv.mul e
zero : Zero α := Equiv.zero e
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : SemigroupWithZero β
mul : Mul α := Equiv.mul e
zero : Zero α := Equiv.zero e
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemigroup β
⊢ CommSemigroup α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemigroup β
mul : Mul α := Equiv.mul e
⊢ CommSemigroup α
[PROOFSTEP]
apply e.injective.commSemigroup _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemigroup β
mul : Mul α := Equiv.mul e
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemigroup β
mul : Mul α := Equiv.mul e
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroClass β
⊢ MulZeroClass α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroClass β
zero : Zero α := Equiv.zero e
⊢ MulZeroClass α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroClass β
zero : Zero α := Equiv.zero e
mul : Mul α := Equiv.mul e
⊢ MulZeroClass α
[PROOFSTEP]
apply e.injective.mulZeroClass _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroClass β
zero : Zero α := Equiv.zero e
mul : Mul α := Equiv.mul e
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroClass β
zero : Zero α := Equiv.zero e
mul : Mul α := Equiv.mul e
⊢ ∀ (a b : α), ↑e (a * b) = ↑e a * ↑e b
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroClass β
zero : Zero α := Equiv.zero e
mul : Mul α := Equiv.mul e
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroClass β
zero : Zero α := Equiv.zero e
mul : Mul α := Equiv.mul e
a✝ b✝ : α
⊢ ↑e (a✝ * b✝) = ↑e a✝ * ↑e b✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulOneClass β
⊢ MulOneClass α
[PROOFSTEP]
let one := e.one
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulOneClass β
one : One α := Equiv.one e
⊢ MulOneClass α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulOneClass β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ MulOneClass α
[PROOFSTEP]
apply e.injective.mulOneClass _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulOneClass β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulOneClass β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulOneClass β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulOneClass β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
⊢ MulZeroOneClass α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
⊢ MulZeroOneClass α
[PROOFSTEP]
let one := e.one
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
⊢ MulZeroOneClass α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ MulZeroOneClass α
[PROOFSTEP]
apply e.injective.mulZeroOneClass _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ∀ (a b : α), ↑e (a * b) = ↑e a * ↑e b
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : MulZeroOneClass β
zero : Zero α := Equiv.zero e
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
a✝ b✝ : α
⊢ ↑e (a✝ * b✝) = ↑e a✝ * ↑e b✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
⊢ Monoid α
[PROOFSTEP]
let one := e.one
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
⊢ Monoid α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ Monoid α
[PROOFSTEP]
let pow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ Monoid α
[PROOFSTEP]
apply e.injective.monoid _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Monoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
⊢ CommMonoid α
[PROOFSTEP]
let one := e.one
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
⊢ CommMonoid α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ CommMonoid α
[PROOFSTEP]
let pow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ CommMonoid α
[PROOFSTEP]
apply e.injective.commMonoid _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommMonoid β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
pow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
⊢ Group α
[PROOFSTEP]
let one := e.one
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
⊢ Group α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ Group α
[PROOFSTEP]
let inv := e.Inv
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
⊢ Group α
[PROOFSTEP]
let div := e.div
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
⊢ Group α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ Group α
[PROOFSTEP]
let zpow := e.pow ℤ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ Group α
[PROOFSTEP]
apply e.injective.group _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x : α), ↑e x⁻¹ = (↑e x)⁻¹
[PROOFSTEP]
intros
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x y : α), ↑e (x / y) = ↑e x / ↑e y
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x : α) (n : ℤ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ : α
⊢ ↑e x✝⁻¹ = (↑e x✝)⁻¹
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ / y✝) = ↑e x✝ / ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Group β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ : α
n✝ : ℤ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
⊢ CommGroup α
[PROOFSTEP]
let one := e.one
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
⊢ CommGroup α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
⊢ CommGroup α
[PROOFSTEP]
let inv := e.Inv
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
⊢ CommGroup α
[PROOFSTEP]
let div := e.div
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
⊢ CommGroup α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ CommGroup α
[PROOFSTEP]
let zpow := e.pow ℤ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ CommGroup α
[PROOFSTEP]
apply e.injective.commGroup _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x : α), ↑e x⁻¹ = (↑e x)⁻¹
[PROOFSTEP]
intros
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x y : α), ↑e (x / y) = ↑e x / ↑e y
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ∀ (x : α) (n : ℤ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ : α
⊢ ↑e x✝⁻¹ = (↑e x✝)⁻¹
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ / y✝) = ↑e x✝ / ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommGroup β
one : One α := Equiv.one e
mul : Mul α := Equiv.mul e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
x✝ : α
n✝ : ℤ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
⊢ NonUnitalNonAssocSemiring α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
⊢ NonUnitalNonAssocSemiring α
[PROOFSTEP]
let add := e.add
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
⊢ NonUnitalNonAssocSemiring α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
⊢ NonUnitalNonAssocSemiring α
[PROOFSTEP]
let nsmul := e.smul ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ NonUnitalNonAssocSemiring α
[PROOFSTEP]
apply e.injective.nonUnitalNonAssocSemiring _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
⊢ NonUnitalSemiring α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
⊢ NonUnitalSemiring α
[PROOFSTEP]
let add := e.add
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
⊢ NonUnitalSemiring α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
⊢ NonUnitalSemiring α
[PROOFSTEP]
let nsmul := e.smul ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ NonUnitalSemiring α
[PROOFSTEP]
apply e.injective.nonUnitalSemiring _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : AddMonoidWithOne β
src✝¹ : AddMonoid α := Equiv.addMonoid e
src✝ : One α := Equiv.one e
⊢ ↑e (NatCast.natCast 0) = ↑e 0
[PROOFSTEP]
simp [zero_def]
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : AddMonoidWithOne β
src✝¹ : AddMonoid α := Equiv.addMonoid e
src✝ : One α := Equiv.one e
n : ℕ
⊢ ↑e (NatCast.natCast (n + 1)) = ↑e (NatCast.natCast n + 1)
[PROOFSTEP]
simp [add_def, one_def]
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : AddGroupWithOne β
src✝¹ : AddMonoidWithOne α := Equiv.addMonoidWithOne e
src✝ : AddGroup α := Equiv.addGroup e
n : ℕ
⊢ IntCast.intCast ↑n = ↑n
[PROOFSTEP]
simp only [Int.cast_ofNat]
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : AddGroupWithOne β
src✝¹ : AddMonoidWithOne α := Equiv.addMonoidWithOne e
src✝ : AddGroup α := Equiv.addGroup e
n : ℕ
⊢ ↑e.symm ↑n = ↑n
[PROOFSTEP]
rfl
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
⊢ NonAssocSemiring α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
⊢ NonAssocSemiring α
[PROOFSTEP]
let add_monoid_with_one := e.addMonoidWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ NonAssocSemiring α
[PROOFSTEP]
apply e.injective.nonAssocSemiring _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
⊢ Semiring α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
⊢ Semiring α
[PROOFSTEP]
let add_monoid_with_one := e.addMonoidWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ Semiring α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ Semiring α
[PROOFSTEP]
apply e.injective.semiring _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Semiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
⊢ NonUnitalCommSemiring α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
⊢ NonUnitalCommSemiring α
[PROOFSTEP]
let add := e.add
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
⊢ NonUnitalCommSemiring α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
⊢ NonUnitalCommSemiring α
[PROOFSTEP]
let nsmul := e.smul ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ NonUnitalCommSemiring α
[PROOFSTEP]
apply e.injective.nonUnitalCommSemiring _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommSemiring β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
nsmul : SMul ℕ α := Equiv.smul e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
⊢ CommSemiring α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
⊢ CommSemiring α
[PROOFSTEP]
let add_monoid_with_one := e.addMonoidWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
⊢ CommSemiring α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ CommSemiring α
[PROOFSTEP]
apply e.injective.commSemiring _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommSemiring β
mul : Mul α := Equiv.mul e
add_monoid_with_one : AddMonoidWithOne α := Equiv.addMonoidWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
let add := e.add
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
let neg := e.Neg
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
let sub := e.sub
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
let nsmul := e.smul ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
let zsmul := e.smul ℤ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ NonUnitalNonAssocRing α
[PROOFSTEP]
apply e.injective.nonUnitalNonAssocRing _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalNonAssocRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
⊢ NonUnitalRing α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
⊢ NonUnitalRing α
[PROOFSTEP]
let add := e.add
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
⊢ NonUnitalRing α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
⊢ NonUnitalRing α
[PROOFSTEP]
let neg := e.Neg
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
⊢ NonUnitalRing α
[PROOFSTEP]
let sub := e.sub
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
⊢ NonUnitalRing α
[PROOFSTEP]
let nsmul := e.smul ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ NonUnitalRing α
[PROOFSTEP]
let zsmul := e.smul ℤ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ NonUnitalRing α
[PROOFSTEP]
apply e.injective.nonUnitalRing _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case gsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case gsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
⊢ NonAssocRing α
[PROOFSTEP]
let add_group_with_one := e.addGroupWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
⊢ NonAssocRing α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ NonAssocRing α
[PROOFSTEP]
apply e.injective.nonAssocRing _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case gsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ∀ (n : ℤ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case gsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonAssocRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
mul : Mul α := Equiv.mul e
n✝ : ℤ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
⊢ Ring α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
⊢ Ring α
[PROOFSTEP]
let add_group_with_one := e.addGroupWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
⊢ Ring α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ Ring α
[PROOFSTEP]
apply e.injective.ring _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (n : ℤ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Ring β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
n✝ : ℤ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
⊢ NonUnitalCommRing α
[PROOFSTEP]
let zero := e.zero
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
⊢ NonUnitalCommRing α
[PROOFSTEP]
let add := e.add
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
⊢ NonUnitalCommRing α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
⊢ NonUnitalCommRing α
[PROOFSTEP]
let neg := e.Neg
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
⊢ NonUnitalCommRing α
[PROOFSTEP]
let sub := e.sub
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
⊢ NonUnitalCommRing α
[PROOFSTEP]
let nsmul := e.smul ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
⊢ NonUnitalCommRing α
[PROOFSTEP]
let zsmul := e.smul ℤ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ NonUnitalCommRing α
[PROOFSTEP]
apply e.injective.nonUnitalCommRing _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : NonUnitalCommRing β
zero : Zero α := Equiv.zero e
add : Add α := Equiv.add e
mul : Mul α := Equiv.mul e
neg : Neg α := Equiv.Neg e
sub : Sub α := Equiv.sub e
nsmul : SMul ℕ α := Equiv.smul e ℕ
zsmul : SMul ℤ α := Equiv.smul e ℤ
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
⊢ CommRing α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
⊢ CommRing α
[PROOFSTEP]
let add_group_with_one := e.addGroupWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
⊢ CommRing α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ CommRing α
[PROOFSTEP]
apply e.injective.commRing _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ∀ (n : ℤ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : CommRing β
mul : Mul α := Equiv.mul e
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
npow : Pow α ℕ := Equiv.pow e ℕ
n✝ : ℤ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
⊢ DivisionRing α
[PROOFSTEP]
let add_group_with_one := e.addGroupWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
⊢ DivisionRing α
[PROOFSTEP]
let inv := e.Inv
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
⊢ DivisionRing α
[PROOFSTEP]
let div := e.div
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
⊢ DivisionRing α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
⊢ DivisionRing α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ DivisionRing α
[PROOFSTEP]
let zpow := e.pow ℤ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ DivisionRing α
[PROOFSTEP]
let rat_cast := e.RatCast
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
⊢ DivisionRing α
[PROOFSTEP]
let qsmul := e.smul ℚ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ DivisionRing α
[PROOFSTEP]
apply e.injective.divisionRing _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α), ↑e x⁻¹ = (↑e x)⁻¹
[PROOFSTEP]
intros
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x / y) = ↑e x / ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case qsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℚ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℤ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (n : ℤ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case rat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (n : ℚ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
⊢ ↑e x✝⁻¹ = (↑e x✝)⁻¹
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ / y✝) = ↑e x✝ / ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case qsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℚ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℤ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
n✝ : ℤ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case rat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : DivisionRing β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
n✝ : ℚ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
⊢ Field α
[PROOFSTEP]
let add_group_with_one := e.addGroupWithOne
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
⊢ Field α
[PROOFSTEP]
let neg := e.Neg
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
⊢ Field α
[PROOFSTEP]
let inv := e.Inv
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
⊢ Field α
[PROOFSTEP]
let div := e.div
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
⊢ Field α
[PROOFSTEP]
let mul := e.mul
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
⊢ Field α
[PROOFSTEP]
let npow := e.pow ℕ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
⊢ Field α
[PROOFSTEP]
let zpow := e.pow ℤ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
⊢ Field α
[PROOFSTEP]
let rat_cast := e.RatCast
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
⊢ Field α
[PROOFSTEP]
let qsmul := e.smul ℚ
[GOAL]
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ Field α
[PROOFSTEP]
apply e.injective.field _
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 0 = 0
[PROOFSTEP]
intros
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 1 = 1
[PROOFSTEP]
intros
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x + y) = ↑e x + ↑e y
[PROOFSTEP]
intros
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x * y) = ↑e x * ↑e y
[PROOFSTEP]
intros
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α), ↑e (-x) = -↑e x
[PROOFSTEP]
intros
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x - y) = ↑e x - ↑e y
[PROOFSTEP]
intros
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α), ↑e x⁻¹ = (↑e x)⁻¹
[PROOFSTEP]
intros
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x y : α), ↑e (x / y) = ↑e x / ↑e y
[PROOFSTEP]
intros
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℕ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℤ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case qsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℚ), ↑e (n • x) = n • ↑e x
[PROOFSTEP]
intros
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℕ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (x : α) (n : ℤ), ↑e (x ^ n) = ↑e x ^ n
[PROOFSTEP]
intros
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (n : ℕ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (n : ℤ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case rat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ∀ (n : ℚ), ↑e ↑n = ↑n
[PROOFSTEP]
intros
[GOAL]
case zero
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 0 = 0
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case one
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
⊢ ↑e 1 = 1
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case add
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ + y✝) = ↑e x✝ + ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case mul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ * y✝) = ↑e x✝ * ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case neg
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
⊢ ↑e (-x✝) = -↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case sub
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ - y✝) = ↑e x✝ - ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case inv
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
⊢ ↑e x✝⁻¹ = (↑e x✝)⁻¹
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case div
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ y✝ : α
⊢ ↑e (x✝ / y✝) = ↑e x✝ / ↑e y✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℕ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℤ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case qsmul
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℚ
⊢ ↑e (n✝ • x✝) = n✝ • ↑e x✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case npow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℕ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case zpow
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
x✝ : α
n✝ : ℤ
⊢ ↑e (x✝ ^ n✝) = ↑e x✝ ^ n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case nat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
n✝ : ℕ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case int_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
n✝ : ℤ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
case rat_cast
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
inv : Inv α := Equiv.Inv e
div : Div α := Equiv.div e
mul : Mul α := Equiv.mul e
npow : Pow α ℕ := Equiv.pow e ℕ
zpow : Pow α ℤ := Equiv.pow e ℤ
rat_cast : RatCast α := Equiv.RatCast e
qsmul : SMul ℚ α := Equiv.smul e ℚ
n✝ : ℚ
⊢ ↑e ↑n✝ = ↑n✝
[PROOFSTEP]
exact e.apply_symm_apply _
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝¹ : Monoid R
e : α ≃ β
inst✝ : MulAction R β
src✝ : SMul R α := Equiv.smul e R
⊢ ∀ (b : α), 1 • b = b
[PROOFSTEP]
simp [smul_def]
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝¹ : Monoid R
e : α ≃ β
inst✝ : MulAction R β
src✝ : SMul R α := Equiv.smul e R
⊢ ∀ (x y : R) (b : α), (x * y) • b = x • y • b
[PROOFSTEP]
simp [smul_def, mul_smul]
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝¹ : Monoid R
e : α ≃ β
inst✝ : AddCommMonoid β
⊢ [inst : DistribMulAction R β] → DistribMulAction R α
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Monoid R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : DistribMulAction R β
⊢ DistribMulAction R α
[PROOFSTEP]
letI := Equiv.addCommMonoid e
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Monoid R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : DistribMulAction R β
this : AddCommMonoid α := Equiv.addCommMonoid e
⊢ DistribMulAction R α
[PROOFSTEP]
exact
  ({ Equiv.mulAction R e with
      smul_zero := by simp [zero_def, smul_def]
      smul_add := by simp [add_def, smul_def, smul_add] } :
    DistribMulAction R α)
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Monoid R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : DistribMulAction R β
this : AddCommMonoid α := Equiv.addCommMonoid e
src✝ : MulAction R α := Equiv.mulAction R e
⊢ ∀ (a : R), a • 0 = 0
[PROOFSTEP]
simp [zero_def, smul_def]
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Monoid R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : DistribMulAction R β
this : AddCommMonoid α := Equiv.addCommMonoid e
src✝ : MulAction R α := Equiv.mulAction R e
⊢ ∀ (a : R) (x y : α), a • (x + y) = a • x + a • y
[PROOFSTEP]
simp [add_def, smul_def, smul_add]
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝¹ : Semiring R
e : α ≃ β
inst✝ : AddCommMonoid β
⊢ let addCommMonoid := Equiv.addCommMonoid e;
  [inst : Module R β] → Module R α
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
addCommMonoid✝ : AddCommMonoid α := Equiv.addCommMonoid e
inst✝ : Module R β
⊢ Module R α
[PROOFSTEP]
exact
  ({ Equiv.distribMulAction R e with
      zero_smul := by simp [smul_def, zero_smul, zero_def]
      add_smul := by simp [add_def, smul_def, add_smul] } :
    Module R α)
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
addCommMonoid✝ : AddCommMonoid α := Equiv.addCommMonoid e
inst✝ : Module R β
src✝ : DistribMulAction R α := Equiv.distribMulAction R e
⊢ ∀ (r s : R) (x : α), (r + s) • x = r • x + s • x
[PROOFSTEP]
simp [add_def, smul_def, add_smul]
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
addCommMonoid✝ : AddCommMonoid α := Equiv.addCommMonoid e
inst✝ : Module R β
src✝ : DistribMulAction R α := Equiv.distribMulAction R e
⊢ ∀ (x : α), 0 • x = 0
[PROOFSTEP]
simp [smul_def, zero_smul, zero_def]
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
⊢ Sort ?u.508797
[PROOFSTEP]
let addCommMonoid := Equiv.addCommMonoid e
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
addCommMonoid : AddCommMonoid α := Equiv.addCommMonoid e
⊢ Sort ?u.508797
[PROOFSTEP]
let module := Equiv.module R e
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
addCommMonoid : AddCommMonoid α := Equiv.addCommMonoid e
module : Module R α := Equiv.module R e
⊢ Sort ?u.508797
[PROOFSTEP]
exact α ≃ₗ[R] β
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
⊢ let addCommMonoid := Equiv.addCommMonoid e;
  let module := Equiv.module R e;
  α ≃ₗ[R] β
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
addCommMonoid✝ : AddCommMonoid α := Equiv.addCommMonoid e
module✝ : Module R α := Equiv.module R e
⊢ α ≃ₗ[R] β
[PROOFSTEP]
exact
  { Equiv.addEquiv e with
    map_smul' := fun r x => by
      apply e.symm.injective
      simp
      exact Iff.mpr (apply_eq_iff_eq_symm_apply _) rfl }
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
addCommMonoid✝ : AddCommMonoid α := Equiv.addCommMonoid e
module✝ : Module R α := Equiv.module R e
src✝ : let mul := Equiv.add e;
α ≃+ β :=
  addEquiv e
r : R
x : α
⊢ AddHom.toFun
      { toFun := src✝.toFun,
        map_add' := (_ : ∀ (x y : α), toFun src✝.toEquiv (x + y) = toFun src✝.toEquiv x + toFun src✝.toEquiv y) }
      (r • x) =
    ↑(RingHom.id R) r •
      AddHom.toFun
        { toFun := src✝.toFun,
          map_add' := (_ : ∀ (x y : α), toFun src✝.toEquiv (x + y) = toFun src✝.toEquiv x + toFun src✝.toEquiv y) }
        x
[PROOFSTEP]
apply e.symm.injective
[GOAL]
case a
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
addCommMonoid✝ : AddCommMonoid α := Equiv.addCommMonoid e
module✝ : Module R α := Equiv.module R e
src✝ : let mul := Equiv.add e;
α ≃+ β :=
  addEquiv e
r : R
x : α
⊢ ↑e.symm
      (AddHom.toFun
        { toFun := src✝.toFun,
          map_add' := (_ : ∀ (x y : α), toFun src✝.toEquiv (x + y) = toFun src✝.toEquiv x + toFun src✝.toEquiv y) }
        (r • x)) =
    ↑e.symm
      (↑(RingHom.id R) r •
        AddHom.toFun
          { toFun := src✝.toFun,
            map_add' := (_ : ∀ (x y : α), toFun src✝.toEquiv (x + y) = toFun src✝.toEquiv x + toFun src✝.toEquiv y) }
          x)
[PROOFSTEP]
simp
[GOAL]
case a
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : Semiring R
e : α ≃ β
inst✝¹ : AddCommMonoid β
inst✝ : Module R β
addCommMonoid✝ : AddCommMonoid α := Equiv.addCommMonoid e
module✝ : Module R α := Equiv.module R e
src✝ : let mul := Equiv.add e;
α ≃+ β :=
  addEquiv e
r : R
x : α
⊢ ↑(addEquiv e).toEquiv (r • x) = r • ↑(addEquiv e).toEquiv x
[PROOFSTEP]
exact Iff.mpr (apply_eq_iff_eq_symm_apply _) rfl
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝¹ : CommSemiring R
e : α ≃ β
inst✝ : Semiring β
⊢ let semiring := Equiv.semiring e;
  [inst : Algebra R β] → Algebra R α
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
⊢ Algebra R α
[PROOFSTEP]
fapply RingHom.toAlgebra'
[GOAL]
case i
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
⊢ R →+* α
[PROOFSTEP]
exact ((ringEquiv e).symm : β →+* α).comp (algebraMap R β)
[GOAL]
case h
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
⊢ ∀ (c : R) (x : (fun x => α) c),
    ↑(RingHom.comp (↑(RingEquiv.symm (ringEquiv e))) (algebraMap R β)) c * x =
      x * ↑(RingHom.comp (↑(RingEquiv.symm (ringEquiv e))) (algebraMap R β)) c
[PROOFSTEP]
intro r x
[GOAL]
case h
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
⊢ ↑(RingHom.comp (↑(RingEquiv.symm (ringEquiv e))) (algebraMap R β)) r * x =
    x * ↑(RingHom.comp (↑(RingEquiv.symm (ringEquiv e))) (algebraMap R β)) r
[PROOFSTEP]
simp only [Function.comp_apply, RingHom.coe_comp]
[GOAL]
case h
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
⊢ ↑↑(RingEquiv.symm (ringEquiv e)) (↑(algebraMap R β) r) * x =
    x * ↑↑(RingEquiv.symm (ringEquiv e)) (↑(algebraMap R β) r)
[PROOFSTEP]
have p := ringEquiv_symm_apply e
[GOAL]
case h
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
p : ∀ (b : β), ↑(RingEquiv.symm (ringEquiv e)) b = ↑e.symm b
⊢ ↑↑(RingEquiv.symm (ringEquiv e)) (↑(algebraMap R β) r) * x =
    x * ↑↑(RingEquiv.symm (ringEquiv e)) (↑(algebraMap R β) r)
[PROOFSTEP]
dsimp at p
[GOAL]
case h
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
p : ∀ (b : β), ↑(RingEquiv.symm (ringEquiv e)) b = ↑e.symm b
⊢ ↑↑(RingEquiv.symm (ringEquiv e)) (↑(algebraMap R β) r) * x =
    x * ↑↑(RingEquiv.symm (ringEquiv e)) (↑(algebraMap R β) r)
[PROOFSTEP]
erw [p]
[GOAL]
case h
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
p : ∀ (b : β), ↑(RingEquiv.symm (ringEquiv e)) b = ↑e.symm b
⊢ ↑e.symm (↑(algebraMap R β) r) * x = x * ↑e.symm (↑(algebraMap R β) r)
[PROOFSTEP]
clear p
[GOAL]
case h
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
⊢ ↑e.symm (↑(algebraMap R β) r) * x = x * ↑e.symm (↑(algebraMap R β) r)
[PROOFSTEP]
apply (ringEquiv e).injective
[GOAL]
case h.a
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
⊢ ↑(ringEquiv e) (↑e.symm (↑(algebraMap R β) r) * x) = ↑(ringEquiv e) (x * ↑e.symm (↑(algebraMap R β) r))
[PROOFSTEP]
simp only [(ringEquiv e).map_mul]
[GOAL]
case h.a
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
semiring✝ : Semiring α := Equiv.semiring e
inst✝ : Algebra R β
r : R
x : α
⊢ ↑(ringEquiv e) (↑e.symm (↑(algebraMap R β) r)) * ↑(ringEquiv e) x =
    ↑(ringEquiv e) x * ↑(ringEquiv e) (↑e.symm (↑(algebraMap R β) r))
[PROOFSTEP]
simp [Algebra.commutes]
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
⊢ Sort ?u.532380
[PROOFSTEP]
let semiring := Equiv.semiring e
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
semiring : Semiring α := Equiv.semiring e
⊢ Sort ?u.532380
[PROOFSTEP]
let algebra := Equiv.algebra R e
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
semiring : Semiring α := Equiv.semiring e
algebra : Algebra R α := Equiv.algebra R e
⊢ Sort ?u.532380
[PROOFSTEP]
exact α ≃ₐ[R] β
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
⊢ let semiring := Equiv.semiring e;
  let algebra := Equiv.algebra R e;
  α ≃ₐ[R] β
[PROOFSTEP]
intros
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
semiring✝ : Semiring α := Equiv.semiring e
algebra✝ : Algebra R α := Equiv.algebra R e
⊢ α ≃ₐ[R] β
[PROOFSTEP]
exact
  { Equiv.ringEquiv e with
    commutes' := fun r => by
      apply e.symm.injective
      simp
      rfl }
[GOAL]
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
semiring✝ : Semiring α := Equiv.semiring e
algebra✝ : Algebra R α := Equiv.algebra R e
src✝ : let add := Equiv.add e;
let mul := Equiv.mul e;
α ≃+* β :=
  ringEquiv e
r : R
⊢ toFun src✝.toEquiv (↑(algebraMap R α) r) = ↑(algebraMap R β) r
[PROOFSTEP]
apply e.symm.injective
[GOAL]
case a
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
semiring✝ : Semiring α := Equiv.semiring e
algebra✝ : Algebra R α := Equiv.algebra R e
src✝ : let add := Equiv.add e;
let mul := Equiv.mul e;
α ≃+* β :=
  ringEquiv e
r : R
⊢ ↑e.symm (toFun src✝.toEquiv (↑(algebraMap R α) r)) = ↑e.symm (↑(algebraMap R β) r)
[PROOFSTEP]
simp
[GOAL]
case a
α : Type u
β : Type v
e✝ : α ≃ β
R : Type u_1
inst✝² : CommSemiring R
e : α ≃ β
inst✝¹ : Semiring β
inst✝ : Algebra R β
semiring✝ : Semiring α := Equiv.semiring e
algebra✝ : Algebra R α := Equiv.algebra R e
src✝ : let add := Equiv.add e;
let mul := Equiv.mul e;
α ≃+* β :=
  ringEquiv e
r : R
⊢ ↑(algebraMap R α) r = ↑e.symm (↑(algebraMap R β) r)
[PROOFSTEP]
rfl