l3lab/ntp-mathlib huggingface dataset:
theorem map_add_left_Ioc (a b c : α) : (Ioc a b).map (c + ·) = Ioc (c + a) (c + b) := by
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Ioc a b) = Ioc (c + a) (c + b)

Next tactic:
classical rw [Ioc, Ioc, ← Finset.image_add_left_Ioc, Finset.image_val,
      ((Finset.nodup _).map <| add_right_injective c).dedup]
theorem map_add_left_Ioc (a b c : α) : (Ioc a b).map (c + ·) = Ioc (c + a) (c + b) := by
  classical 

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Ioc a b) = Ioc (c + a) (c + b)

Next tactic:
rw [Ioc, Ioc, ← Finset.image_add_left_Ioc, Finset.image_val,
      ((Finset.nodup _).map <| add_right_injective c).dedup]
theorem map_add_left_Ioo (a b c : α) : (Ioo a b).map (c + ·) = Ioo (c + a) (c + b) := by
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Ioo a b) = Ioo (c + a) (c + b)

Next tactic:
classical rw [Ioo, Ioo, ← Finset.image_add_left_Ioo, Finset.image_val,
      ((Finset.nodup _).map <| add_right_injective c).dedup]
theorem map_add_left_Ioo (a b c : α) : (Ioo a b).map (c + ·) = Ioo (c + a) (c + b) := by
  classical 

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Ioo a b) = Ioo (c + a) (c + b)

Next tactic:
rw [Ioo, Ioo, ← Finset.image_add_left_Ioo, Finset.image_val,
      ((Finset.nodup _).map <| add_right_injective c).dedup]
theorem map_add_right_Icc (a b c : α) : ((Icc a b).map fun x => x + c) = Icc (a + c) (b + c) := by
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => x + c) (Icc a b) = Icc (a + c) (b + c)

Next tactic:
simp_rw [add_comm _ c]
theorem map_add_right_Icc (a b c : α) : ((Icc a b).map fun x => x + c) = Icc (a + c) (b + c) := by
  simp_rw [add_comm _ c]
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Icc a b) = Icc (c + a) (c + b)

Next tactic:
exact map_add_left_Icc _ _ _
theorem map_add_right_Ico (a b c : α) : ((Ico a b).map fun x => x + c) = Ico (a + c) (b + c) := by
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => x + c) (Ico a b) = Ico (a + c) (b + c)

Next tactic:
simp_rw [add_comm _ c]
theorem map_add_right_Ico (a b c : α) : ((Ico a b).map fun x => x + c) = Ico (a + c) (b + c) := by
  simp_rw [add_comm _ c]
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Ico a b) = Ico (c + a) (c + b)

Next tactic:
exact map_add_left_Ico _ _ _
theorem map_add_right_Ioc (a b c : α) : ((Ioc a b).map fun x => x + c) = Ioc (a + c) (b + c) := by
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => x + c) (Ioc a b) = Ioc (a + c) (b + c)

Next tactic:
simp_rw [add_comm _ c]
theorem map_add_right_Ioc (a b c : α) : ((Ioc a b).map fun x => x + c) = Ioc (a + c) (b + c) := by
  simp_rw [add_comm _ c]
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Ioc a b) = Ioc (c + a) (c + b)

Next tactic:
exact map_add_left_Ioc _ _ _
theorem map_add_right_Ioo (a b c : α) : ((Ioo a b).map fun x => x + c) = Ioo (a + c) (b + c) := by
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => x + c) (Ioo a b) = Ioo (a + c) (b + c)

Next tactic:
simp_rw [add_comm _ c]
theorem map_add_right_Ioo (a b c : α) : ((Ioo a b).map fun x => x + c) = Ioo (a + c) (b + c) := by
  simp_rw [add_comm _ c]
  

Proof state:
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (fun x => c + x) (Ioo a b) = Ioo (c + a) (c + b)

Next tactic:
exact map_add_left_Ioo _ _ _
instance (priority := 100) small_subsingleton (α : Type v) [Subsingleton α] : Small.{w} α := by
  

Proof state:
α : Type v
inst✝ : Subsingleton α
⊢ Small.{w, v} α

Next tactic:
rcases isEmpty_or_nonempty α with ⟨⟩
instance (priority := 100) small_subsingleton (α : Type v) [Subsingleton α] : Small.{w} α := by
  rcases isEmpty_or_nonempty α with ⟨⟩ <;> 

Proof state:
case inl
α : Type v
inst✝ : Subsingleton α
h✝ : IsEmpty α
⊢ Small.{w, v} α

Next tactic:
skip
instance (priority := 100) small_subsingleton (α : Type v) [Subsingleton α] : Small.{w} α := by
  rcases isEmpty_or_nonempty α with ⟨⟩ <;> 

Proof state:
case inr
α : Type v
inst✝ : Subsingleton α
h✝ : Nonempty α
⊢ Small.{w, v} α

Next tactic:
skip
instance (priority := 100) small_subsingleton (α : Type v) [Subsingleton α] : Small.{w} α := by
  rcases isEmpty_or_nonempty α with ⟨⟩ <;> skip
  · 

Proof state:
case inl
α : Type v
inst✝ : Subsingleton α
h✝ : IsEmpty α
⊢ Small.{w, v} α

Next tactic:
apply small_map (Equiv.equivPEmpty α)
instance (priority := 100) small_subsingleton (α : Type v) [Subsingleton α] : Small.{w} α := by
  rcases isEmpty_or_nonempty α with ⟨⟩ <;> skip
  · apply small_map (Equiv.equivPEmpty α)
  · 

Proof state:
case inr
α : Type v
inst✝ : Subsingleton α
h✝ : Nonempty α
⊢ Small.{w, v} α

Next tactic:
apply small_map Equiv.punitOfNonemptyOfSubsingleton
/-- This can be seen as a version of `small_of_surjective` in which the function `f` doesn't
    actually land in `β` but in some larger type `γ` related to `β` via an injective function `g`.
    -/
theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u} α]
    (f : α → γ) {g : β → γ} (hg : Function.Injective g) (h : ∀ b : β, ∃ a : α, f a = g b) :
    Small.{u} β := by
  

Proof state:
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
⊢ Small.{u, w} β

Next tactic:
by_cases hβ : Nonempty β
/-- This can be seen as a version of `small_of_surjective` in which the function `f` doesn't
    actually land in `β` but in some larger type `γ` related to `β` via an injective function `g`.
    -/
theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u} α]
    (f : α → γ) {g : β → γ} (hg : Function.Injective g) (h : ∀ b : β, ∃ a : α, f a = g b) :
    Small.{u} β := by
  by_cases hβ : Nonempty β
  · 

Proof state:
case pos
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
⊢ Small.{u, w} β

Next tactic:
refine' small_of_surjective (f := Function.invFun g ∘ f) (fun b => _)
/-- This can be seen as a version of `small_of_surjective` in which the function `f` doesn't
    actually land in `β` but in some larger type `γ` related to `β` via an injective function `g`.
    -/
theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u} α]
    (f : α → γ) {g : β → γ} (hg : Function.Injective g) (h : ∀ b : β, ∃ a : α, f a = g b) :
    Small.{u} β := by
  by_cases hβ : Nonempty β
  · refine' small_of_surjective (f := Function.invFun g ∘ f) (fun b => _)
    

Proof state:
case pos
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
⊢ ∃ a, (Function.invFun g ∘ f) a = b

Next tactic:
obtain ⟨a, ha⟩ := h b
/-- This can be seen as a version of `small_of_surjective` in which the function `f` doesn't
    actually land in `β` but in some larger type `γ` related to `β` via an injective function `g`.
    -/
theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u} α]
    (f : α → γ) {g : β → γ} (hg : Function.Injective g) (h : ∀ b : β, ∃ a : α, f a = g b) :
    Small.{u} β := by
  by_cases hβ : Nonempty β
  · refine' small_of_surjective (f := Function.invFun g ∘ f) (fun b => _)
    obtain ⟨a, ha⟩ := h b
    

Proof state:
case pos.intro
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
a : α
ha : f a = g b
⊢ ∃ a, (Function.invFun g ∘ f) a = b

Next tactic:
exact ⟨a, by rw [Function.comp_apply, ha, Function.leftInverse_invFun hg]⟩
/-- This can be seen as a version of `small_of_surjective` in which the function `f` doesn't
    actually land in `β` but in some larger type `γ` related to `β` via an injective function `g`.
    -/
theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u} α]
    (f : α → γ) {g : β → γ} (hg : Function.Injective g) (h : ∀ b : β, ∃ a : α, f a = g b) :
    Small.{u} β := by
  by_cases hβ : Nonempty β
  · refine' small_of_surjective (f := Function.invFun g ∘ f) (fun b => _)
    obtain ⟨a, ha⟩ := h b
    exact ⟨a, by 

Proof state:
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : Nonempty β
b : β
a : α
ha : f a = g b
⊢ (Function.invFun g ∘ f) a = b

Next tactic:
rw [Function.comp_apply, ha, Function.leftInverse_invFun hg]
/-- This can be seen as a version of `small_of_surjective` in which the function `f` doesn't
    actually land in `β` but in some larger type `γ` related to `β` via an injective function `g`.
    -/
theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u} α]
    (f : α → γ) {g : β → γ} (hg : Function.Injective g) (h : ∀ b : β, ∃ a : α, f a = g b) :
    Small.{u} β := by
  by_cases hβ : Nonempty β
  · refine' small_of_surjective (f := Function.invFun g ∘ f) (fun b => _)
    obtain ⟨a, ha⟩ := h b
    exact ⟨a, by rw [Function.comp_apply, ha, Function.leftInverse_invFun hg]⟩
  · 

Proof state:
case neg
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : ¬Nonempty β
⊢ Small.{u, w} β

Next tactic:
simp only [not_nonempty_iff] at hβ
/-- This can be seen as a version of `small_of_surjective` in which the function `f` doesn't
    actually land in `β` but in some larger type `γ` related to `β` via an injective function `g`.
    -/
theorem small_of_injective_of_exists {α : Type v} {β : Type w} {γ : Type v'} [Small.{u} α]
    (f : α → γ) {g : β → γ} (hg : Function.Injective g) (h : ∀ b : β, ∃ a : α, f a = g b) :
    Small.{u} β := by
  by_cases hβ : Nonempty β
  · refine' small_of_surjective (f := Function.invFun g ∘ f) (fun b => _)
    obtain ⟨a, ha⟩ := h b
    exact ⟨a, by rw [Function.comp_apply, ha, Function.leftInverse_invFun hg]⟩
  · simp only [not_nonempty_iff] at hβ
    

Proof state:
case neg
α : Type v
β : Type w
γ : Type v'
inst✝ : Small.{u, v} α
f : α → γ
g : β → γ
hg : Function.Injective g
h : ∀ (b : β), ∃ a, f a = g b
hβ : IsEmpty β
⊢ Small.{u, w} β

Next tactic:
infer_instance
instance small_Pi {α} (β : α → Type*) [Small.{w} α] [∀ a, Small.{w} (β a)] :
    Small.{w} (∀ a, β a) :=
  ⟨⟨∀ a' : Shrink α, Shrink (β ((equivShrink α).symm a')),
      ⟨Equiv.piCongr (equivShrink α) fun a => by 

Proof state:
α : Type ?u.1398
β : α → Type u_1
inst✝¹ : Small.{w, ?u.1398} α
inst✝ : ∀ (a : α), Small.{w, u_1} (β a)
a : α
⊢ β a ≃ Shrink.{w, u_1} (β ((equivShrink α).symm ((equivShrink α) a)))

Next tactic:
simpa using equivShrink (β a)
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  

Proof state:
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ DivisionSemiring (ULift.{?u.495, u} α)

Next tactic:
refine' down_injective.divisionSemiring down ..
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_1
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ 0.down = 0

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_2
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ 1.down = 1

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_3
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (x y : ULift.{?u.544, u} α), (x + y).down = x.down + y.down

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_4
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (x y : ULift.{?u.544, u} α), (x * y).down = x.down * y.down

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_5
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (x : ULift.{?u.544, u} α), x⁻¹.down = x.down⁻¹

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_6
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (x y : ULift.{?u.544, u} α), (x / y).down = x.down / y.down

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_7
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (x : ULift.{?u.544, u} α) (n : ℕ), (n • x).down = n • x.down

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_8
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (x : ULift.{?u.544, u} α) (n : ℕ), (x ^ n).down = x.down ^ n

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_9
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (x : ULift.{?u.544, u} α) (n : ℤ), (x ^ n).down = x.down ^ n

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> 

Proof state:
case refine'_10
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ ∀ (n : ℕ), (↑n).down = ↑n

Next tactic:
intros
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_1
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ 0.down = 0

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_2
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
⊢ 1.down = 1

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_3
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
x✝ y✝ : ULift.{?u.544, u} α
⊢ (x✝ + y✝).down = x✝.down + y✝.down

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_4
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
x✝ y✝ : ULift.{?u.544, u} α
⊢ (x✝ * y✝).down = x✝.down * y✝.down

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_5
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
x✝ : ULift.{?u.544, u} α
⊢ x✝⁻¹.down = x✝.down⁻¹

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_6
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
x✝ y✝ : ULift.{?u.544, u} α
⊢ (x✝ / y✝).down = x✝.down / y✝.down

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_7
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
x✝ : ULift.{?u.544, u} α
n✝ : ℕ
⊢ (n✝ • x✝).down = n✝ • x✝.down

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_8
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
x✝ : ULift.{?u.544, u} α
n✝ : ℕ
⊢ (x✝ ^ n✝).down = x✝.down ^ n✝

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_9
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
x✝ : ULift.{?u.544, u} α
n✝ : ℤ
⊢ (x✝ ^ n✝).down = x✝.down ^ n✝

Next tactic:
rfl
instance divisionSemiring [DivisionSemiring α] : DivisionSemiring (ULift α) := by
  refine' down_injective.divisionSemiring down .. <;> intros <;> 

Proof state:
case refine'_10
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionSemiring α
n✝ : ℕ
⊢ (↑n✝).down = ↑n✝

Next tactic:
rfl
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  

Proof state:
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ DivisionRing (ULift.{?u.2147, u} α)

Next tactic:
refine' down_injective.divisionRing down ..
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_1
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ 0.down = 0

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_2
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ 1.down = 1

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_3
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x y : ULift.{?u.2214, u} α), (x + y).down = x.down + y.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_4
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x y : ULift.{?u.2214, u} α), (x * y).down = x.down * y.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_5
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x : ULift.{?u.2214, u} α), (-x).down = -x.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_6
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x y : ULift.{?u.2214, u} α), (x - y).down = x.down - y.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_7
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x : ULift.{?u.2214, u} α), x⁻¹.down = x.down⁻¹

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_8
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x y : ULift.{?u.2214, u} α), (x / y).down = x.down / y.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_9
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x : ULift.{?u.2214, u} α) (n : ℕ), (n • x).down = n • x.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_10
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x : ULift.{?u.2214, u} α) (n : ℤ), (n • x).down = n • x.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_11
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x : ULift.{?u.2214, u} α) (n : ℚ), (n • x).down = n • x.down

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_12
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x : ULift.{?u.2214, u} α) (n : ℕ), (x ^ n).down = x.down ^ n

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_13
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (x : ULift.{?u.2214, u} α) (n : ℤ), (x ^ n).down = x.down ^ n

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_14
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (n : ℕ), (↑n).down = ↑n

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_15
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (n : ℤ), (↑n).down = ↑n

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> 

Proof state:
case refine'_16
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ ∀ (n : ℚ), (↑n).down = ↑n

Next tactic:
intros
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> intros <;> 

Proof state:
case refine'_1
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ 0.down = 0

Next tactic:
rfl
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> intros <;> 

Proof state:
case refine'_2
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
⊢ 1.down = 1

Next tactic:
rfl
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> intros <;> 

Proof state:
case refine'_3
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
x✝ y✝ : ULift.{?u.2214, u} α
⊢ (x✝ + y✝).down = x✝.down + y✝.down

Next tactic:
rfl
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> intros <;> 

Proof state:
case refine'_4
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
x✝ y✝ : ULift.{?u.2214, u} α
⊢ (x✝ * y✝).down = x✝.down * y✝.down

Next tactic:
rfl
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> intros <;> 

Proof state:
case refine'_5
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
x✝ : ULift.{?u.2214, u} α
⊢ (-x✝).down = -x✝.down

Next tactic:
rfl
instance divisionRing [DivisionRing α] : DivisionRing (ULift α) := by
  refine' down_injective.divisionRing down .. <;> intros <;> 

Proof state:
case refine'_6
α : Type u
x y : ULift.{v, u} α
inst✝ : DivisionRing α
x✝ y✝ : ULift.{?u.2214, u} α
⊢ (x✝ - y✝).down = x✝.down - y✝.down

Next tactic:
rfl