File: Mathlib/Algebra/Ring/Ext.lean

full_name: termLocal_hAdd[_,_]._@.Mathlib.Algebra.Ring.Ext._hyg.3
code: macro:max "local_hAdd[" type:term ", " inst:term "]" : term =>
  `(term| (letI := $inst; HAdd.hAdd : $type → $type → $type))
goal: Lean.ParserDescr

full_name: «_aux_Mathlib_Algebra_Ring_Ext___macroRules_termLocal_hAdd[_,_]_1»
code: macro:max "local_hAdd[" type:term ", " inst:term "]" : term =>
  `(term| (letI := $inst; HAdd.hAdd : $type → $type → $type))
goal: Lean.Macro

full_name: «_aux_Mathlib_Algebra_Ring_Ext___macroRules_termLocal_hMul[_,_]_1»
code: macro:max "local_hMul[" type:term ", " inst:term "]" : term =>
  `(term| (letI := $inst; HMul.hMul : $type → $type → $type))
goal: Lean.Macro

full_name: termLocal_hMul[_,_]._@.Mathlib.Algebra.Ring.Ext._hyg.321
code: macro:max "local_hMul[" type:term ", " inst:term "]" : term =>
  `(term| (letI := $inst; HMul.hMul : $type → $type → $type))
goal: Lean.ParserDescr

full_name: Distrib.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : Distrib R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: Distrib.ext_iff
code: theorem ext_iff {inst₁ inst₂ : Distrib R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalNonAssocSemiring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalNonAssocSemiring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalNonAssocSemiring.toDistrib_injective
code: theorem toDistrib_injective : Function.Injective (@toDistrib R) 
goal: Function.Injective (@NonUnitalNonAssocSemiring.toDistrib R)

full_name: NonUnitalNonAssocSemiring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalNonAssocSemiring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalSemiring.toNonUnitalNonAssocSemiring_injective
code: theorem toNonUnitalNonAssocSemiring_injective :
    Function.Injective (@toNonUnitalNonAssocSemiring R) 
goal: Function.Injective (@NonUnitalSemiring.toNonUnitalNonAssocSemiring R)

full_name: NonUnitalSemiring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalSemiring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalSemiring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalSemiring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: AddMonoidWithOne.ext
code: @[ext] theorem AddMonoidWithOne.ext ⦃inst₁ inst₂ : AddMonoidWithOne R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_one : (letI := inst₁; One.one : R) = (letI := inst₂; One.one : R)) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: AddCommMonoidWithOne.toAddMonoidWithOne_injective
code: theorem AddCommMonoidWithOne.toAddMonoidWithOne_injective :
    Function.Injective (@AddCommMonoidWithOne.toAddMonoidWithOne R) 
goal: Function.Injective (@AddCommMonoidWithOne.toAddMonoidWithOne R)

full_name: AddCommMonoidWithOne.ext
code: @[ext] theorem AddCommMonoidWithOne.ext ⦃inst₁ inst₂ : AddCommMonoidWithOne R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_one : (letI := inst₁; One.one : R) = (letI := inst₂; One.one : R)) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonAssocSemiring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonAssocSemiring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonAssocSemiring.toNonUnitalNonAssocSemiring_injective
code: theorem toNonUnitalNonAssocSemiring_injective :
    Function.Injective (@toNonUnitalNonAssocSemiring R) 
goal: Function.Injective (@NonAssocSemiring.toNonUnitalNonAssocSemiring R)

full_name: NonAssocSemiring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonAssocSemiring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalNonAssocRing.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalNonAssocRing R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring_injective
code: theorem toNonUnitalNonAssocSemiring_injective :
    Function.Injective (@toNonUnitalNonAssocSemiring R) 
goal: Function.Injective (@NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring R)

full_name: NonUnitalNonAssocRing.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalNonAssocRing R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalRing.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalRing R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalRing.toNonUnitalSemiring_injective
code: theorem toNonUnitalSemiring_injective :
    Function.Injective (@toNonUnitalSemiring R) 
goal: Function.Injective (@NonUnitalRing.toNonUnitalSemiring R)

full_name: NonUnitalRing.toNonUnitalNonAssocring_injective
code: theorem toNonUnitalNonAssocring_injective :
    Function.Injective (@toNonUnitalNonAssocRing R) 
goal: Function.Injective (@NonUnitalRing.toNonUnitalNonAssocRing R)

full_name: NonUnitalRing.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalRing R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: AddGroupWithOne.ext
code: @[ext] theorem AddGroupWithOne.ext ⦃inst₁ inst₂ : AddGroupWithOne R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_one : (letI := inst₁; One.one : R) = (letI := inst₂; One.one)) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: AddCommGroupWithOne.ext
code: @[ext] theorem AddCommGroupWithOne.ext ⦃inst₁ inst₂ : AddCommGroupWithOne R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_one : (letI := inst₁; One.one : R) = (letI := inst₂; One.one)) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonAssocRing.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonAssocRing R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonAssocRing.toNonAssocSemiring_injective
code: theorem toNonAssocSemiring_injective :
    Function.Injective (@toNonAssocSemiring R) 
goal: Function.Injective (@NonAssocRing.toNonAssocSemiring R)

full_name: NonAssocRing.toNonUnitalNonAssocring_injective
code: theorem toNonUnitalNonAssocring_injective :
    Function.Injective (@toNonUnitalNonAssocRing R) 
goal: Function.Injective (@NonAssocRing.toNonUnitalNonAssocRing R)

full_name: NonAssocRing.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonAssocRing R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: Semiring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : Semiring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: Semiring.toNonUnitalSemiring_injective
code: theorem toNonUnitalSemiring_injective :
    Function.Injective (@toNonUnitalSemiring R) 
goal: Function.Injective (@Semiring.toNonUnitalSemiring R)

full_name: Semiring.toNonAssocSemiring_injective
code: theorem toNonAssocSemiring_injective :
    Function.Injective (@toNonAssocSemiring R) 
goal: Function.Injective (@Semiring.toNonAssocSemiring R)

full_name: Semiring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : Semiring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: Ring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : Ring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: Ring.toNonUnitalRing_injective
code: theorem toNonUnitalRing_injective :
    Function.Injective (@toNonUnitalRing R) 
goal: Function.Injective (@Ring.toNonUnitalRing R)

full_name: Ring.toNonAssocRing_injective
code: theorem toNonAssocRing_injective :
    Function.Injective (@toNonAssocRing R) 
goal: Function.Injective (@Ring.toNonAssocRing R)

full_name: Ring.toSemiring_injective
code: theorem toSemiring_injective :
    Function.Injective (@toSemiring R) 
goal: Function.Injective (@Ring.toSemiring R)

full_name: Ring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : Ring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalNonAssocCommSemiring.toNonUnitalNonAssocSemiring_injective
code: theorem toNonUnitalNonAssocSemiring_injective :
    Function.Injective (@toNonUnitalNonAssocSemiring R) 
goal: Function.Injective (@NonUnitalNonAssocCommSemiring.toNonUnitalNonAssocSemiring R)

full_name: NonUnitalNonAssocCommSemiring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalNonAssocCommSemiring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalNonAssocCommSemiring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalNonAssocCommSemiring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalCommSemiring.toNonUnitalSemiring_injective
code: theorem toNonUnitalSemiring_injective :
    Function.Injective (@toNonUnitalSemiring R) 
goal: Function.Injective (@NonUnitalCommSemiring.toNonUnitalSemiring R)

full_name: NonUnitalCommSemiring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalCommSemiring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalCommSemiring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalCommSemiring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalNonAssocCommRing.toNonUnitalNonAssocRing_injective
code: theorem toNonUnitalNonAssocRing_injective :
    Function.Injective (@toNonUnitalNonAssocRing R) 
goal: Function.Injective (@NonUnitalNonAssocCommRing.toNonUnitalNonAssocRing R)

full_name: NonUnitalNonAssocCommRing.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalNonAssocCommRing R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalNonAssocCommRing.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalNonAssocCommRing R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: NonUnitalCommRing.toNonUnitalRing_injective
code: theorem toNonUnitalRing_injective :
    Function.Injective (@toNonUnitalRing R) 
goal: Function.Injective (@NonUnitalCommRing.toNonUnitalRing R)

full_name: NonUnitalCommRing.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : NonUnitalCommRing R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: NonUnitalCommRing.ext_iff
code: theorem ext_iff {inst₁ inst₂ : NonUnitalCommRing R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: CommSemiring.toSemiring_injective
code: theorem toSemiring_injective :
    Function.Injective (@toSemiring R) 
goal: Function.Injective (@CommSemiring.toSemiring R)

full_name: CommSemiring.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : CommSemiring R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: CommSemiring.ext_iff
code: theorem ext_iff {inst₁ inst₂ : CommSemiring R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

full_name: CommRing.toRing_injective
code: theorem toRing_injective : Function.Injective (@toRing R) 
goal: Function.Injective (@CommRing.toRing R)

full_name: CommRing.ext
code: @[ext] theorem ext ⦃inst₁ inst₂ : CommRing R⦄
    (h_add : local_hAdd[R, inst₁] = local_hAdd[R, inst₂])
    (h_mul : local_hMul[R, inst₁] = local_hMul[R, inst₂]) :
    inst₁ = inst₂ 
goal: inst₁ = inst₂

full_name: CommRing.ext_iff
code: theorem ext_iff {inst₁ inst₂ : CommRing R} :
    inst₁ = inst₂ ↔
      (local_hAdd[R, inst₁] = local_hAdd[R, inst₂]) ∧
      (local_hMul[R, inst₁] = local_hMul[R, inst₂]) 
goal: inst₁ = inst₂ ↔ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul