l3lab/ntp-mathlib huggingface dataset:
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> 

Proof state:
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

Next tactic:
intros
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> 

Proof state:
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

Next tactic:
intros
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> 

Proof state:
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

Next tactic:
intros
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> 

Proof state:
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

Next tactic:
intros
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> 

Proof state:
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

Next tactic:
intros
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> 

Proof state:
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

Next tactic:
intros
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝)⁻¹

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `DivisionRing` across an `Equiv` -/
@[reducible]
protected def divisionRing [DivisionRing β] : DivisionRing α := by
  let add_group_with_one := e.addGroupWithOne
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.divisionRing _ <;> intros <;> 

Proof state:
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✝

Next tactic:
exact e.apply_symm_apply _
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  

Proof state:
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
⊢ Field α

Next tactic:
let add_group_with_one := e.addGroupWithOne
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  

Proof state:
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
⊢ Field α

Next tactic:
let neg := e.Neg
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  

Proof state:
α : Type u
β : Type v
e : α ≃ β
inst✝ : Field β
add_group_with_one : AddGroupWithOne α := Equiv.addGroupWithOne e
neg : Neg α := Equiv.Neg e
⊢ Field α

Next tactic:
let inv := e.Inv
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  

Proof state:
α : 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 α

Next tactic:
let div := e.div
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  

Proof state:
α : 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 α

Next tactic:
let mul := e.mul
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  

Proof state:
α : 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 α

Next tactic:
let npow := e.pow ℕ
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  

Proof state:
α : 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 α

Next tactic:
let zpow := e.pow ℤ
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  

Proof state:
α : 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 α

Next tactic:
let rat_cast := e.RatCast
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  

Proof state:
α : 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 α

Next tactic:
let qsmul := e.smul ℚ
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  

Proof state:
α : 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 α

Next tactic:
apply e.injective.field _
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.field _ <;> 

Proof state:
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

Next tactic:
intros
/-- Transfer `Field` across an `Equiv` -/
@[reducible]
protected def field [Field β] : Field α := by
  let add_group_with_one := e.addGroupWithOne
  let neg := e.Neg
  let inv := e.Inv
  let div := e.div
  let mul := e.mul
  let npow := e.pow ℕ
  let zpow := e.pow ℤ
  let rat_cast := e.RatCast
  let qsmul := e.smul ℚ
  apply e.injective.field _ <;> 

Proof state:
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

Next tactic:
intros