Theorem: exists_integral_multiples
File: Mathlib/RingTheory/DedekindDomain/IntegralClosure.lean

tactic: haveI := Classical.decEq L
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
⊢ ∃ y, y ≠ 0 ∧ ∀ x ∈ s, IsIntegral A (y • x)
state_after: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∃ y, y ≠ 0 ∧ ∀ x ∈ s, IsIntegral A (y • x)

tactic: refine s.induction ?_ ?_
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∃ y, y ≠ 0 ∧ ∀ x ∈ s, IsIntegral A (y • x)
state_after: case refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∃ y, y ≠ 0 ∧ ∀ x ∈ ∅, IsIntegral A (y • x)

case refine_2
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∀ ⦃a : L⦄ {s : Finset L},
    a ∉ s → (∃ y, y ≠ 0 ∧ ∀ x ∈ s, IsIntegral A (y • x)) → ∃ y, y ≠ 0 ∧ ∀ x ∈ insert a s, IsIntegral A (y • x)

tactic: use 1, one_ne_zero
state_before: case refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∃ y, y ≠ 0 ∧ ∀ x ∈ ∅, IsIntegral A (y • x)
state_after: case right
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∀ x ∈ ∅, IsIntegral A (1 • x)

tactic: rintro x ⟨⟩
state_before: case right
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∀ x ∈ ∅, IsIntegral A (1 • x)
state_after: no goals

tactic: rintro x s hx ⟨y, hy, hs⟩
state_before: case refine_2
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s : Finset L
this : DecidableEq L
⊢ ∀ ⦃a : L⦄ {s : Finset L},
    a ∉ s → (∃ y, y ≠ 0 ∧ ∀ x ∈ s, IsIntegral A (y • x)) → ∃ y, y ≠ 0 ∧ ∀ x ∈ insert a s, IsIntegral A (y • x)
state_after: case refine_2.intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ ∃ y, y ≠ 0 ∧ ∀ x_1 ∈ insert x s, IsIntegral A (y • x_1)

tactic: have := exists_integral_multiple
  ((IsFractionRing.isAlgebraic_iff A K L).mpr (.of_finite _ x))
  ((injective_iff_map_eq_zero (algebraMap A L)).mp ?_)
state_before: case refine_2.intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ ∃ y, y ≠ 0 ∧ ∀ x_1 ∈ insert x s, IsIntegral A (y • x_1)
state_after: case refine_2.intro.intro.refine_2
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this✝ : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
this : ∃ x_1 y, y ≠ 0 ∧ x * (algebraMap A L) y = ↑x_1
⊢ ∃ y, y ≠ 0 ∧ ∀ x_1 ∈ insert x s, IsIntegral A (y • x_1)

case refine_2.intro.intro.refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ Function.Injective ⇑(algebraMap A L)

tactic: rcases this with ⟨x', y', hy', hx'⟩
state_before: case refine_2.intro.intro.refine_2
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this✝ : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
this : ∃ x_1 y, y ≠ 0 ∧ x * (algebraMap A L) y = ↑x_1
⊢ ∃ y, y ≠ 0 ∧ ∀ x_1 ∈ insert x s, IsIntegral A (y • x_1)
state_after: case refine_2.intro.intro.refine_2.intro.intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
⊢ ∃ y, y ≠ 0 ∧ ∀ x_1 ∈ insert x s, IsIntegral A (y • x_1)

tactic: refine ⟨y * y', mul_ne_zero hy hy', fun x'' hx'' => ?_⟩
state_before: case refine_2.intro.intro.refine_2.intro.intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
⊢ ∃ y, y ≠ 0 ∧ ∀ x_1 ∈ insert x s, IsIntegral A (y • x_1)
state_after: case refine_2.intro.intro.refine_2.intro.intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
x'' : L
hx'' : x'' ∈ insert x s
⊢ IsIntegral A ((y * y') • x'')

tactic: rcases Finset.mem_insert.mp hx'' with (rfl | hx'')
state_before: case refine_2.intro.intro.refine_2.intro.intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
x'' : L
hx'' : x'' ∈ insert x s
⊢ IsIntegral A ((y * y') • x'')
state_after: case refine_2.intro.intro.refine_2.intro.intro.intro.inl
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
s : Finset L
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
x'' : L
hx : x'' ∉ s
hx' : x'' * (algebraMap A L) y' = ↑x'
hx'' : x'' ∈ insert x'' s
⊢ IsIntegral A ((y * y') • x'')

case refine_2.intro.intro.refine_2.intro.intro.intro.inr
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
x'' : L
hx''✝ : x'' ∈ insert x s
hx'' : x'' ∈ s
⊢ IsIntegral A ((y * y') • x'')

tactic: rw [mul_smul, Algebra.smul_def, Algebra.smul_def, mul_comm _ x'', hx']
state_before: case refine_2.intro.intro.refine_2.intro.intro.intro.inl
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
s : Finset L
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
x'' : L
hx : x'' ∉ s
hx' : x'' * (algebraMap A L) y' = ↑x'
hx'' : x'' ∈ insert x'' s
⊢ IsIntegral A ((y * y') • x'')
state_after: case refine_2.intro.intro.refine_2.intro.intro.intro.inl
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
s : Finset L
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
x'' : L
hx : x'' ∉ s
hx' : x'' * (algebraMap A L) y' = ↑x'
hx'' : x'' ∈ insert x'' s
⊢ IsIntegral A ((algebraMap A L) y * ↑x')

tactic: exact isIntegral_algebraMap.mul x'.2
state_before: case refine_2.intro.intro.refine_2.intro.intro.intro.inl
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
s : Finset L
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
x'' : L
hx : x'' ∉ s
hx' : x'' * (algebraMap A L) y' = ↑x'
hx'' : x'' ∈ insert x'' s
⊢ IsIntegral A ((algebraMap A L) y * ↑x')
state_after: no goals

tactic: rw [mul_comm, mul_smul, Algebra.smul_def]
state_before: case refine_2.intro.intro.refine_2.intro.intro.intro.inr
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
x'' : L
hx''✝ : x'' ∈ insert x s
hx'' : x'' ∈ s
⊢ IsIntegral A ((y * y') • x'')
state_after: case refine_2.intro.intro.refine_2.intro.intro.intro.inr
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
x'' : L
hx''✝ : x'' ∈ insert x s
hx'' : x'' ∈ s
⊢ IsIntegral A ((algebraMap A L) y' * y • x'')

tactic: exact isIntegral_algebraMap.mul (hs _ hx'')
state_before: case refine_2.intro.intro.refine_2.intro.intro.intro.inr
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
x' : ↥(integralClosure A L)
y' : A
hy' : y' ≠ 0
hx' : x * (algebraMap A L) y' = ↑x'
x'' : L
hx''✝ : x'' ∈ insert x s
hx'' : x'' ∈ s
⊢ IsIntegral A ((algebraMap A L) y' * y • x'')
state_after: no goals

tactic: rw [IsScalarTower.algebraMap_eq A K L]
state_before: case refine_2.intro.intro.refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ Function.Injective ⇑(algebraMap A L)
state_after: case refine_2.intro.intro.refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ Function.Injective ⇑((algebraMap K L).comp (algebraMap A K))

tactic: apply (algebraMap K L).injective.comp
state_before: case refine_2.intro.intro.refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ Function.Injective ⇑((algebraMap K L).comp (algebraMap A K))
state_after: case refine_2.intro.intro.refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ Function.Injective ⇑(algebraMap A K)

tactic: exact IsFractionRing.injective _ _
state_before: case refine_2.intro.intro.refine_1
R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Field K
inst✝¹² : IsDomain A
inst✝¹¹ : Algebra A K
inst✝¹⁰ : IsFractionRing A K
L : Type u_4
inst✝⁹ : Field L
C : Type u_5
inst✝⁸ : CommRing C
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra A L
inst✝⁵ : IsScalarTower A K L
inst✝⁴ : Algebra C L
inst✝³ : IsIntegralClosure C A L
inst✝² : Algebra A C
inst✝¹ : IsScalarTower A C L
inst✝ : FiniteDimensional K L
s✝ : Finset L
this : DecidableEq L
x : L
s : Finset L
hx : x ∉ s
y : A
hy : y ≠ 0
hs : ∀ x ∈ s, IsIntegral A (y • x)
⊢ Function.Injective ⇑(algebraMap A K)
state_after: no goals