Theorem: IsIntegralClosure.range_le_span_dualBasis
File: Mathlib/RingTheory/DedekindDomain/IntegralClosure.lean

Proof steps:
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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
⊢ LinearMap.range (↑A (Algebra.linearMap C L)) ≤ Submodule.span A (Set.range ⇑((traceForm K L).dualBasis ⋯ b))
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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
⊢ Set.range ⇑b ⊆ ↑((traceForm K L).flip.dualSubmodule (LinearMap.range (↑A (Algebra.linearMap C L))))
tactic: rw [← LinearMap.BilinForm.dualSubmodule_span_of_basis,
    ← LinearMap.BilinForm.le_flip_dualSubmodule, Submodule.span_le]
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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
⊢ Set.range ⇑b ⊆ ↑((traceForm K L).flip.dualSubmodule (LinearMap.range (↑A (Algebra.linearMap C L))))
state_after: case 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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
i : ι
y : C
⊢ ((traceForm K L).flip (b i)) ((↑A (Algebra.linearMap C L)) y) ∈ 1
tactic: rintro _ ⟨i, rfl⟩ _ ⟨y, rfl⟩
state_before: case 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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
i : ι
y : C
⊢ ((traceForm K L).flip (b i)) ((↑A (Algebra.linearMap C L)) y) ∈ 1
state_after: case 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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
i : ι
y : C
⊢ (trace K L) ((algebraMap C L) y * b i) ∈ 1
tactic: simp only [LinearMap.coe_restrictScalars, linearMap_apply, LinearMap.BilinForm.flip_apply,
    traceForm_apply]
state_before: case 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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
i : ι
y : C
⊢ (trace K L) ((algebraMap C L) y * b i) ∈ 1
state_after: case 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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
i : ι
y : C
⊢ IsIntegral A ((trace K L) ((algebraMap C L) y * b i))
tactic: refine IsIntegrallyClosed.isIntegral_iff.mp ?_
state_before: case 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
inst✝³ : Algebra.IsSeparable K L
ι : Type u_6
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
b : Basis ι K L
hb_int : ∀ (i : ι), IsIntegral A (b i)
inst✝ : IsIntegrallyClosed A
i : ι
y : C
⊢ IsIntegral A ((trace K L) ((algebraMap C L) y * b i))
state_after: no goals
tactic: exact isIntegral_trace ((IsIntegralClosure.isIntegral A L y).algebraMap.mul (hb_int i))