-- Module: Mathlib.RingTheory.Smooth.IntegralClosure
Goal:
R : Type u_1
S : Type u_2
B : Type u_3
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing B
inst_4 : Algebra R B
inst_5 : Algebra.IsStandardEtale R S
𝓟 : StandardEtalePresentation R S
n : ℕ
𝓟' : StandardEtalePresentation B (B ⊗[R] S) := 𝓟.baseChange
e : B ⊗[R] S ≃ₐ[B]
  Localization.Away (M := AdjoinRoot 𝓟'.f)
    ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f) :=
  𝓟'.equivRing.trans 𝓟'.equivAwayAdjoinRoot
a :
  Localization.Away (M := AdjoinRoot 𝓟'.f) ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f)
hx_1 :
  IsIntegral S (A := S ⊗[R] B)
    ((Algebra.TensorProduct.comm R B S : (a : B ⊗[R] S) → S ⊗[R] B)
        ((e.symm : (a : Localization.Away ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g)) → B ⊗[R] S) a) :
      S ⊗[R] B)
hx :
  ∀ (m : ℕ),
    IsIntegral R
      (HSMul.hSMul (β := S ⊗[R] B) (HPow.hPow (α := S) ((aeval 𝓟.x : (a : R[X]) → S) 𝓟.g : S) (n + m))
        ((Algebra.TensorProduct.comm R B S : (a : B ⊗[R] S) → S ⊗[R] B)
            ((e.symm : (a : Localization.Away ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g)) → B ⊗[R] S)
              a) :
          S ⊗[R] B))
obtain :
  ∀ (a : AdjoinRoot 𝓟'.f) (m : ℕ)
    (hx :
      IsIntegral S (A := S ⊗[R] B)
        ((Algebra.TensorProduct.comm R B S : (a : B ⊗[R] S) → S ⊗[R] B)
          ((e.symm : (a : Localization.Away ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g)) → B ⊗[R] S)
            (IsLocalization.mk'
              (Localization.Away (M := AdjoinRoot 𝓟'.f)
                ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f))
              a
              (Subtype.mk (p := fun (x : AdjoinRoot 𝓟'.f) ↦
                Membership.mem (γ := Submonoid (AdjoinRoot 𝓟'.f))
                  (Submonoid.powers ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g) :
                    Submonoid (AdjoinRoot 𝓟'.f))
                  x)
                ((fun (x : ℕ) ↦
                    HPow.hPow (α := AdjoinRoot 𝓟'.f)
                      ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f) x)
                  m)
                ⋯)))))
    (hx :
      ∀ (m_1 : ℕ),
        IsIntegral R
          (HSMul.hSMul (β := S ⊗[R] B) (HPow.hPow (α := S) ((aeval 𝓟.x : (a : R[X]) → S) 𝓟.g : S) (n + m_1))
            ((Algebra.TensorProduct.comm R B S : (a : B ⊗[R] S) → S ⊗[R] B)
              ((e.symm : (a : Localization.Away ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g)) → B ⊗[R] S)
                (IsLocalization.mk'
                  (Localization.Away (M := AdjoinRoot 𝓟'.f)
                    ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f))
                  a
                  (Subtype.mk (p := fun (x : AdjoinRoot 𝓟'.f) ↦
                    Membership.mem (γ := Submonoid (AdjoinRoot 𝓟'.f))
                      (Submonoid.powers ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g) :
                        Submonoid (AdjoinRoot 𝓟'.f))
                      x)
                    ((fun (x : ℕ) ↦
                        HPow.hPow (α := AdjoinRoot 𝓟'.f)
                          ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f) x)
                      m)
                    ⋯)))))),
    Membership.mem (γ := Subalgebra S (S ⊗[R] B))
      (Algebra.adjoin S (↑(Subalgebra.map Algebra.TensorProduct.includeRight (integralClosure R B)) : Set (S ⊗[R] B)))
      ((Algebra.TensorProduct.comm R B S : (a : B ⊗[R] S) → S ⊗[R] B)
        ((e.symm : (a : Localization.Away ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g)) → B ⊗[R] S)
          (IsLocalization.mk'
            (Localization.Away (M := AdjoinRoot 𝓟'.f)
              ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f))
            a
            (Subtype.mk (p := fun (x : AdjoinRoot 𝓟'.f) ↦
              Membership.mem (γ := Submonoid (AdjoinRoot 𝓟'.f))
                (Submonoid.powers ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g) :
                  Submonoid (AdjoinRoot 𝓟'.f))
                x)
              ((fun (x : ℕ) ↦
                  HPow.hPow (α := AdjoinRoot 𝓟'.f)
                    ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g : AdjoinRoot 𝓟'.f) x)
                m)
              ⋯))))
⊢ Membership.mem (α := S ⊗[R] B) (γ := Subalgebra S (S ⊗[R] B))
    (Algebra.adjoin S (↑(Subalgebra.map Algebra.TensorProduct.includeRight (integralClosure R B)) : Set (S ⊗[R] B)))
    ((Algebra.TensorProduct.comm R B S : (a : B ⊗[R] S) → S ⊗[R] B)
        ((e.symm : (a : Localization.Away ((AdjoinRoot.mk 𝓟'.f : (a : B[X]) → AdjoinRoot 𝓟'.f) 𝓟'.g)) → B ⊗[R] S) a) :
      S ⊗[R] B)

Tactic:
obtain ⟨a, ⟨_, m, rfl⟩, rfl⟩ := IsLocalization.exists_mk'_eq
    (R := AdjoinRoot 𝓟'.f) (.powers (.mk _ 𝓟'.g)) a

Premises used: StandardEtalePresentation.P, AdjoinRoot.mk, Submonoid.powers, StandardEtalePair.g, DFunLike.coe, rfl, IsLocalization.exists_mk'_eq