awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
hA : IsNilpotent (R := Ideal A) (IsLocalRing.maximalIdeal A)
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
obtain :
  ∀ (n : ℕ) (hn : HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n = 0),
    Eq (α := A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) (1 : A)
⊢ Eq (α := A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) (1 : A)

Tactic:
obtain ⟨n, hn⟩ := hA
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
n : ℕ
hn : HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n = 0
rw :
  HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) ^ n ∈
    HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n
⊢ HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) ^ n = 0

Tactic:
rw [← Ideal.mem_bot, ← Ideal.zero_eq_bot, ← hn]

Premises used: Ideal.mem_bot, Ideal.zero_eq_bot
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
n : ℕ
hn : HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n = 0
⊢ HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) ^ n ∈
    HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n

Tactic:
Ideal.pow_mem_pow hf₂ n

Premises used: Set.Mem, Ideal.pow_mem_pow
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
n : ℕ
hn : HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n = 0
⊢ HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) ^ n ∈
    HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n

Tactic:
exact Ideal.pow_mem_pow hf₂ n

Premises used: Ideal.pow_mem_pow
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
n : ℕ
hn : HPow.hPow (α := Ideal A) (IsLocalRing.maximalIdeal A) n = 0
⊢ HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) ^ n = 0

Tactic:
have : (1 - f 1) ^ n = 0 := by
      rw [← Ideal.mem_bot, ← Ideal.zero_eq_bot, ← hn]
      exact Ideal.pow_mem_pow hf₂ n
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
hA : IsNilpotent (R := Ideal A) (IsLocalRing.maximalIdeal A)
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
⊢ Eq (α := A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) (1 : A)

Tactic:
have hf₄ : f 1 = 1 := by
    obtain ⟨n, hn⟩ := hA
    have : (1 - f 1) ^ n = 0 := by
      rw [← Ideal.mem_bot, ← Ideal.zero_eq_bot, ← hn]
      exact Ideal.pow_mem_pow hf₂ n
    rw [eq_comm, ← sub_eq_zero, ← hf₃.pow_succ_eq n, pow_succ, this, zero_mul]
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
hA : IsNilpotent (R := Ideal A) (IsLocalRing.maximalIdeal A)
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₄ : Eq (α := A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) (1 : A)
x : K
⊢ Function.comp (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      (⇑e.symm : (a : A ⧸ IsLocalRing.maximalIdeal A) → K)
      ((⇑(algebraMap A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
          (a : A) → HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :
        (a : A) → HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((algebraMap K A : (a : K) → A) x : A) =
    x

Tactic:
simp
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
hA : IsNilpotent (R := Ideal A) (IsLocalRing.maximalIdeal A)
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₄ : Eq (α := A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) (1 : A)
refine :
  ∀ (x : A),
    (algebraMap K A : (a : K) → A)
        (Function.comp (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
          (⇑e.symm : (a : A ⧸ IsLocalRing.maximalIdeal A) → K)
          (⇑(algebraMap A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
            (a : A) → A ⧸ IsLocalRing.maximalIdeal A)
          x) =
      x
⊢ Function.Bijective.{u_1 + 1, u_2 + 1} (α := K) (β := A) (⇑(algebraMap K A) : (a : K) → A)

Tactic:
refine Equiv.bijective ⟨algebraMap K A, ⇑e.symm ∘ ⇑(algebraMap A _), fun x ↦ by simp, fun x ↦ ?_⟩

Premises used: Algebra.algebraMap, AlgEquiv.symm, Equiv.bijective, Function.comp, Equiv.mk, DFunLike.coe
-- Module: Mathlib.RingTheory.Unramified.Field
Goal:
K : Type u_1
A : Type u_2
inst : Field K
inst_1 : CommRing A
inst_2 : Algebra K A
inst_3 : FormallyUnramified K A
inst_4 : EssFiniteType K A
inst_5 : IsAlgClosed K
inst_6 : IsLocalRing A
this_1 : Module.Finite K A
this : IsArtinianRing A
hA : IsNilpotent (R := Ideal A) (IsLocalRing.maximalIdeal A)
e : AlgEquiv.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
  let __spread.0 : AlgHom.{u_1, u_1, u_2} K K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    ofId K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A));
  let __spread.1 : Equiv.{u_1 + 1, u_2 + 1} K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A)) :=
    Equiv.ofBijective
      (⇑(algebraMap K (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) :
        (a : K) → A ⧸ IsLocalRing.maximalIdeal A)
      ⋯;
  {
    toFun :=
      (↑(↑__spread.0.toRingHom : K →* A ⧸ IsLocalRing.maximalIdeal A) :
          OneHom K (A ⧸ IsLocalRing.maximalIdeal A)).toFun,
    invFun := __spread.1.invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
e' : A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A :=
  AlgEquiv.trans (A₂ := A ⊗[K] K)
    (TensorProduct.congr AlgEquiv.refl e.symm :
      A ⊗[K] HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) ≃ₐ[A] A ⊗[K] K)
    (TensorProduct.rid K A A : A ⊗[K] K ≃ₐ[A] A)
f : HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A) →ₗ[A] A :=
  e'.toLinearMap ∘ₗ sec K A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
hf :
  AlgHom.toLinearMap (ofId A (HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))) ∘ₗ f = LinearMap.id
hf₁ :
  HSMul.hSMul (α := A) (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) 1 =
    1
hf₂ :
  Membership.mem (γ := Ideal A) (IsLocalRing.maximalIdeal A)
    (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₃ : IsIdempotentElem (HSub.hSub (α := A) (β := A) (1 : A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A))
hf₄ : Eq (α := A) ((f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) 1 : A) (1 : A)
x : A
h :
  ∀ (k : K),
    Eq (α := A) ((algebraMap K A : (a : K) → A) k : A)
      (Function.comp (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
          (⇑f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) (⇑e : (a : K) → A ⧸ IsLocalRing.maximalIdeal A) k :
        A)
⊢ Eq (α := (a : K) → A) (⇑(algebraMap K A) : (a : K) → A)
    (Function.comp (β := HasQuotient.Quotient A (B := Ideal A) (IsLocalRing.maximalIdeal A))
      (⇑f : (a : A ⧸ IsLocalRing.maximalIdeal A) → A) (⇑e : (a : K) → A ⧸ IsLocalRing.maximalIdeal A))

Tactic:
ext k