R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s : Set A
hfs : Set.Finite s
his : ∀ (x : A), x ∈ s → IsIntegral R x
x✝ : ∀ (x : A), x ∈ ∅ → IsIntegral R x
x : A
⊢ (∃ y, ↑(Algebra.linearMap R A) y = x) ↔ x ∈ Set.range ↑(algebraMap R A)
R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s : Set A
hfs : Set.Finite s
his : ∀ (x : A), x ∈ s → IsIntegral R x
x✝ : ∀ (x : A), x ∈ ∅ → IsIntegral R x
x : A
⊢ x ∈ span R ↑{1} ↔ x ∈ ↑Subalgebra.toSubmodule (Algebra.adjoin R ∅)
erw [Algebra.adjoin_empty, Finset.coe_singleton, ← one_eq_span, one_eq_range,
  LinearMap.mem_range, Algebra.mem_bot]
no goals
R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s : Set A
hfs : Set.Finite s
his : ∀ (x : A), x ∈ s → IsIntegral R x
x✝ : ∀ (x : A), x ∈ ∅ → IsIntegral R x
x : A
⊢ (∃ y, ↑(Algebra.linearMap R A) y = x) ↔ x ∈ Set.range ↑(algebraMap R A)
rfl
R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s✝ : Set A
hfs : Set.Finite s✝
his✝ : ∀ (x : A), x ∈ s✝ → IsIntegral R x
a : A
s : Set A
x✝¹ : ¬a ∈ s
x✝ : Set.Finite s
ih : (∀ (x : A), x ∈ s → IsIntegral R x) → FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s))
his : ∀ (x : A), x ∈ insert a s → IsIntegral R x
⊢ FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s) * ↑Subalgebra.toSubmodule (Algebra.adjoin R {a}))
R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s✝ : Set A
hfs : Set.Finite s✝
his✝ : ∀ (x : A), x ∈ s✝ → IsIntegral R x
a : A
s : Set A
x✝¹ : ¬a ∈ s
x✝ : Set.Finite s
ih : (∀ (x : A), x ∈ s → IsIntegral R x) → FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s))
his : ∀ (x : A), x ∈ insert a s → IsIntegral R x
⊢ FG (↑Subalgebra.toSubmodule (Algebra.adjoin R (insert a s)))
rw [← Set.union_singleton, Algebra.adjoin_union_coe_submodule]
no goals
R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s✝ : Set A
hfs : Set.Finite s✝
his✝ : ∀ (x : A), x ∈ s✝ → IsIntegral R x
a : A
s : Set A
x✝¹ : ¬a ∈ s
x✝ : Set.Finite s
ih : (∀ (x : A), x ∈ s → IsIntegral R x) → FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s))
his : ∀ (x : A), x ∈ insert a s → IsIntegral R x
⊢ FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s) * ↑Subalgebra.toSubmodule (Algebra.adjoin R {a}))
exact
  FG.mul (ih fun i hi => his i <| Set.mem_insert_of_mem a hi)
    (FG_adjoin_singleton_of_integral _ <| his a <| Set.mem_insert a s)