awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this : IsScalarTower Aₘ K L
h :
  Eq (α := A →+* L) (RingHom.comp (RingHom.comp (algebraMap K L) f) (algebraMap A Aₘ))
    (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _
      (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _ (algebraMap Bₘ L) (algebraMap Aₘ Bₘ)) (algebraMap A Aₘ))
h₁ :
  Eq (α := A →+* L) (RingHom.comp (RingHom.comp (algebraMap K L) f) (algebraMap A Aₘ))
    (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _ (g.comp (algebraMap Aₘ Bₘ)) (algebraMap A Aₘ))
h₂ :
  Eq (α := A →+* L) (RingHom.comp (algebraMap K L) (f.comp (algebraMap A Aₘ)))
    (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _ (g.comp (algebraMap Aₘ Bₘ)) (algebraMap A Aₘ))
h₃ :
  Eq (α := A →+* L) (RingHom.comp (algebraMap K L) (f.comp (algebraMap A Aₘ)))
    (g.comp (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _ (algebraMap Aₘ Bₘ) (algebraMap A Aₘ)))
⊢ Eq (α := A →+* L) (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _ (algebraMap Aₘ L) (algebraMap A Aₘ))
    (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _
      (@RingHom.comp _ _ _ _ Semiring.toNonAssocSemiring _ (algebraMap Bₘ L) (algebraMap Aₘ Bₘ)) (algebraMap A Aₘ))
have h₄ : Eq (α := A →+* L) (RingHom.comp (algebraMap K L) (f.comp (algebraMap A Aₘ))) (g.comp (algebraMap A Bₘ))
Tactic: rw [RingHom.algebraMap_toAlgebra, RingHom.algebraMap_toAlgebra (R := Bₘ), RingHom.comp_assoc,
      RingHom.comp_assoc, ← IsScalarTower.algebraMap_eq, IsScalarTower.algebraMap_eq A B Bₘ,
      IsLocalization.map_comp, RingHom.comp_id, ← RingHom.comp_assoc, IsLocalization.map_comp,
      RingHom.comp_id, ← IsScalarTower.algebraMap_eq, ← IsScalarTower.algebraMap_eq]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (hypothesis)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this : IsScalarTower Aₘ K L
⊢ Eq.{u_9 + 1} (α := Aₘ) ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A) : Aₘ)
    ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ) : Aₘ)
have this₁ : IsScalarTower Aₘ Bₘ L
Tactic: have : IsScalarTower Aₘ Bₘ L := by
    apply IsScalarTower.of_algebraMap_eq'
    apply IsLocalization.ringHom_ext M
    rw [RingHom.algebraMap_toAlgebra, RingHom.algebraMap_toAlgebra (R := Bₘ), RingHom.comp_assoc,
      RingHom.comp_assoc, ← IsScalarTower.algebraMap_eq, IsScalarTower.algebraMap_eq A B Bₘ,
      IsLocalization.map_comp, RingHom.comp_id, ← RingHom.comp_assoc, IsLocalization.map_comp,
      RingHom.comp_id, ← IsScalarTower.algebraMap_eq, ← IsScalarTower.algebraMap_eq]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (hypothesis)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this_7 : IsScalarTower Aₘ K L
this_8 : IsScalarTower Aₘ Bₘ L
this : IsFractionRing Bₘ L := ⋯
⊢ Eq.{u_9 + 1} (α := Aₘ) ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A) : Aₘ)
    ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ) : Aₘ)
have this₁ : IsIntegralClosure Bₘ Aₘ L
Tactic: have : IsIntegralClosure Bₘ Aₘ L :=
    IsIntegralClosure.of_isIntegrallyClosed _ _ _
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this_7 : IsScalarTower Aₘ K L
this_8 : IsScalarTower Aₘ Bₘ L
this_9 : IsFractionRing Bₘ L := ⋯
this : IsIntegralClosure Bₘ Aₘ L
⊢ Eq.{u_9 + 1} (α := Aₘ) ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A) : Aₘ)
    ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ) : Aₘ)
have neg : Eq.{u_1 + 1} (α := K)
  (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
      ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A)) :
    K)
  (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
      ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
    K)
Tactic: apply IsFractionRing.injective Aₘ K
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this_7 : IsScalarTower Aₘ K L
this_8 : IsScalarTower Aₘ Bₘ L
this_9 : IsFractionRing Bₘ L := ⋯
this : IsIntegralClosure Bₘ Aₘ L
⊢ Eq.{u_1 + 1} (α := K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A)) :
      K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
have neg : Eq (α := K) ((algebraMap A K : (a : A) → K) ((intNorm A B : (a : B) → A) x) : K)
  (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
      ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
    K)
Tactic: rw [← IsScalarTower.algebraMap_apply, Algebra.algebraMap_intNorm_fractionRing,
    Algebra.algebraMap_intNorm (L := L), ← IsScalarTower.algebraMap_apply]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this_7 : IsScalarTower Aₘ K L
this_8 : IsScalarTower Aₘ Bₘ L
this_9 : IsFractionRing Bₘ L := ⋯
this : IsIntegralClosure Bₘ Aₘ L
neg :
  Eq (α := K) ((algebraMap A K : (a : A) → K) ((intNorm A B : (a : B) → A) x) : K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
⊢ Eq.{u_1 + 1} (α := K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A)) :
      K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
have neg₁ : Eq.{u_1 + 1} (α := K)
  ((norm (FractionRing A) : (a : FractionRing B) → FractionRing A)
      ((algebraMap B (FractionRing B) : (a : B) → FractionRing B) x) :
    FractionRing A)
  (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
      ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
    K)
Tactic: rw [← IsScalarTower.algebraMap_apply, Algebra.algebraMap_intNorm_fractionRing,
    Algebra.algebraMap_intNorm (L := L), ← IsScalarTower.algebraMap_apply]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this_7 : IsScalarTower Aₘ K L
this_8 : IsScalarTower Aₘ Bₘ L
this_9 : IsFractionRing Bₘ L := ⋯
this : IsIntegralClosure Bₘ Aₘ L
neg :
  Eq (α := K) ((algebraMap A K : (a : A) → K) ((intNorm A B : (a : B) → A) x) : K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
neg₁ :
  Eq.{u_1 + 1} (α := K)
    ((norm (FractionRing A) : (a : FractionRing B) → FractionRing A)
        ((algebraMap B (FractionRing B) : (a : B) → FractionRing B) x) :
      FractionRing A)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
⊢ Eq.{u_1 + 1} (α := K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A)) :
      K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
have neg₂ : Eq.{u_1 + 1} (α := K)
  ((norm (FractionRing A) : (a : FractionRing B) → FractionRing A)
      ((algebraMap B (FractionRing B) : (a : B) → FractionRing B) x) :
    FractionRing A)
  ((norm K : (a : L) → K) (((algebraMap Bₘ L : Bₘ →+* L) : (a : Bₘ) → L) ((algebraMap B Bₘ : (a : B) → Bₘ) x)) : K)
Tactic: rw [← IsScalarTower.algebraMap_apply, Algebra.algebraMap_intNorm_fractionRing,
    Algebra.algebraMap_intNorm (L := L), ← IsScalarTower.algebraMap_apply]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
Aₘ : Type u_9
Bₘ : Type u_10
inst_3 : CommRing Aₘ
inst_4 : CommRing Bₘ
inst_5 : Algebra Aₘ Bₘ
inst_6 : Algebra A Aₘ
inst_7 : Algebra B Bₘ
inst_8 : Algebra A Bₘ
inst_9 : IsScalarTower A Aₘ Bₘ
inst_10 : IsScalarTower A B Bₘ
M : Submonoid A
inst_11 : IsLocalization M Aₘ
inst_12 : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst_13 : IsIntegrallyClosed A
inst_14 : IsDomain A
inst_15 : IsDomain B
inst_16 : IsIntegrallyClosed B
inst_17 : Algebra.IsIntegral A B
inst_18 : IsTorsionFree A B
inst_19 : IsDomain Aₘ
inst_20 : IsIntegrallyClosed Aₘ
inst_21 : IsDomain Bₘ
inst_22 : IsIntegrallyClosed Bₘ
inst_23 : IsTorsionFree Aₘ Bₘ
inst_24 : Algebra.IsIntegral Aₘ Bₘ
inst_25 : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
hM : M ≤ A⁰
K : Type u_1 := FractionRing A
L : Type u_6 := FractionRing B
f : Aₘ →+* K := IsLocalization.map (M := M) (T := A⁰) K (RingHom.id A) hM
this_1 : Algebra Aₘ K := f.toAlgebra
this_2 : IsScalarTower A Aₘ K
this_3 : IsFractionRing Aₘ K := ⋯
g : Bₘ →+* L :=
  IsLocalization.map (M := algebraMapSubmonoid B M) (T := algebraMapSubmonoid.{u_1, u_6} (R := A) B A⁰) L (RingHom.id B)
    ⋯
this_4 : Algebra Bₘ L := g.toAlgebra
this_5 : IsScalarTower B Bₘ L
this_6 : Algebra Aₘ L := RingHom.toAlgebra (RingHom.comp (algebraMap K L) f)
this_7 : IsScalarTower Aₘ K L
this_8 : IsScalarTower Aₘ Bₘ L
this_9 : IsFractionRing Bₘ L := ⋯
this : IsIntegralClosure Bₘ Aₘ L
neg :
  Eq (α := K) ((algebraMap A K : (a : A) → K) ((intNorm A B : (a : B) → A) x) : K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
neg₁ :
  Eq.{u_1 + 1} (α := K)
    ((norm (FractionRing A) : (a : FractionRing B) → FractionRing A)
        ((algebraMap B (FractionRing B) : (a : B) → FractionRing B) x) :
      FractionRing A)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
neg₂ :
  Eq.{u_1 + 1} (α := K)
    ((norm (FractionRing A) : (a : FractionRing B) → FractionRing A)
        ((algebraMap B (FractionRing B) : (a : B) → FractionRing B) x) :
      FractionRing A)
    ((norm K : (a : L) → K) (((algebraMap Bₘ L : Bₘ →+* L) : (a : Bₘ) → L) ((algebraMap B Bₘ : (a : B) → Bₘ) x)) : K)
⊢ Eq.{u_1 + 1} (α := K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((algebraMap A Aₘ : (a : A) → Aₘ) ((intNorm A B : (a : B) → A) x : A)) :
      K)
    (((algebraMap Aₘ K : Aₘ →+* K) : (a : Aₘ) → K)
        ((intNorm Aₘ Bₘ : (a : Bₘ) → Aₘ) ((algebraMap B Bₘ : (a : B) → Bₘ) x : Bₘ)) :
      K)
have neg₃ : Eq.{u_1 + 1} (α := K)
  ((norm (FractionRing A) : (a : FractionRing B) → FractionRing A)
      ((algebraMap B (FractionRing B) : (a : B) → FractionRing B) x) :
    FractionRing A)
  ((norm K : (a : L) → K) ((algebraMap B L : (a : B) → L) x) : K)
Tactic: rw [← IsScalarTower.algebraMap_apply, Algebra.algebraMap_intNorm_fractionRing,
    Algebra.algebraMap_intNorm (L := L), ← IsScalarTower.algebraMap_apply]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (hypothesis)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
inst_3 : IsDomain A
inst_4 : IsIntegrallyClosed A
inst_5 : IsDomain B
inst_6 : IsIntegrallyClosed B
inst_7 : Module.Finite A B
inst_8 : IsTorsionFree A B
inst_9 : IsGalois.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
⊢ Eq.{u_6 + 1} (α := B) ((algebraMap A B : (a : A) → B) ((intNorm A B : (a : B) → A) x : A) : B)
    (∏ σ : B ≃ₐ[A] B, (σ : (a : B) → B) x : B)
have this : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
Tactic: haveI : FiniteDimensional (FractionRing A) (FractionRing B) := .of_isLocalization A B A⁰
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
inst_3 : IsDomain A
inst_4 : IsIntegrallyClosed A
inst_5 : IsDomain B
inst_6 : IsIntegrallyClosed B
inst_7 : Module.Finite A B
inst_8 : IsTorsionFree A B
inst_9 : IsGalois.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
this : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
⊢ Eq.{u_6 + 1} (α := B) ((algebraMap A B : (a : A) → B) ((intNorm A B : (a : B) → A) x : A) : B)
    (∏ σ : B ≃ₐ[A] B, (σ : (a : B) → B) x : B)
have rw : Eq.{u_6 + 1} (α := B) ((algebraMap A B : (a : A) → B) ((intNorm A B : (a : B) → A) x : A) : B)
  (∏ i : Gal(FractionRing B/FractionRing A),
      ((((MulEquiv.toEquiv (galRestrict A (FractionRing A) (FractionRing B) B) :
                  Gal(FractionRing B/FractionRing A) ≃ B ≃ₐ[A] B) :
                (a : Gal(FractionRing B/FractionRing A)) → B ≃ₐ[A] B)
              i :
            B ≃ₐ[A] B) :
          (a : B) → B)
        x :
    B)
Tactic: rw [← (galRestrict A (FractionRing A) (FractionRing B) B).toEquiv.prod_comp]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (goal)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
inst_3 : IsDomain A
inst_4 : IsIntegrallyClosed A
inst_5 : IsDomain B
inst_6 : IsIntegrallyClosed B
inst_7 : Module.Finite A B
inst_8 : IsTorsionFree A B
inst_9 : IsGalois.{u_1, u_6} (FractionRing A) (FractionRing B)
x : B
this : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
⊢ Eq.{u_6 + 1} (α := B) ((algebraMap A B : (a : A) → B) ((intNorm A B : (a : B) → A) x : A) : B)
    (∏ i : Gal(FractionRing B/FractionRing A),
        ((((MulEquiv.toEquiv (galRestrict A (FractionRing A) (FractionRing B) B) :
                    Gal(FractionRing B/FractionRing A) ≃ B ≃ₐ[A] B) :
                  (a : Gal(FractionRing B/FractionRing A)) → B ≃ₐ[A] B)
                i :
              B ≃ₐ[A] B) :
            (a : B) → B)
          x :
      B)
have simp : Eq.{u_6 + 1} (α := B) ((algebraMap A B : (a : A) → B) ((intNorm A B : (a : B) → A) x : A) : B)
  (∏ x_1 : Gal(FractionRing B/FractionRing A),
      ((((galRestrict A (FractionRing A) (FractionRing B) B : Gal(FractionRing B/FractionRing A) ≃* B ≃ₐ[A] B) :
                (a : Gal(FractionRing B/FractionRing A)) → B ≃ₐ[A] B)
              x_1 :
            B ≃ₐ[A] B) :
          (a : B) → B)
        x :
    B)
Tactic: simp only [MulEquiv.toEquiv_eq_coe, EquivLike.coe_coe]
-- Lean 4 proof step from Mathlib.RingTheory.IntegralClosure.IntegralRestrict (hypothesis)
Goal:
A : Type u_1
B : Type u_6
inst : CommRing A
inst_1 : CommRing B
inst_2 : Algebra A B
inst_3 : IsDomain A
inst_4 : IsIntegrallyClosed A
inst_5 : IsDomain B
inst_6 : IsIntegrallyClosed B
inst_7 : Module.Finite A B
inst_8 : IsTorsionFree A B
x : B
⊢ x ∣ (algebraMap A B : (a : A) → B) ((intNorm A B : (a : B) → A) x : A)
have this : FiniteDimensional.{u_1, u_6} (FractionRing A) (FractionRing B)
Tactic: haveI : FiniteDimensional (FractionRing A) (FractionRing B) := .of_isLocalization A B A⁰