Theorem: trace_eq_sum_embeddings_gen
File: Mathlib/RingTheory/Trace/Basic.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
⊢ (algebraMap K E) ((Algebra.trace K L) pb.gen) = ∑ σ : L →ₐ[K] E, σ pb.gen
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this : DecidableEq E := Classical.decEq E
⊢ (algebraMap K E) ((Algebra.trace K L) pb.gen) = ∑ σ : L →ₐ[K] E, σ pb.gen
tactic: letI := Classical.decEq E
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this : DecidableEq E := Classical.decEq E
⊢ (algebraMap K E) ((Algebra.trace K L) pb.gen) = ∑ σ : L →ₐ[K] E, σ pb.gen
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this✝ : DecidableEq E := Classical.decEq E
this : Fintype (L →ₐ[K] E) := PowerBasis.AlgHom.fintype pb
⊢ (algebraMap K E) ((Algebra.trace K L) pb.gen) = ∑ σ : L →ₐ[K] E, σ pb.gen
tactic: letI : Fintype (L →ₐ[K] E) := PowerBasis.AlgHom.fintype pb
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this✝ : DecidableEq E := Classical.decEq E
this : Fintype (L →ₐ[K] E) := PowerBasis.AlgHom.fintype pb
⊢ (algebraMap K E) ((Algebra.trace K L) pb.gen) = ∑ σ : L →ₐ[K] E, σ pb.gen
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this✝ : DecidableEq E := Classical.decEq E
this : Fintype (L →ₐ[K] E) := PowerBasis.AlgHom.fintype pb
⊢ ((minpoly K pb.gen).aroots E).Nodup

case f
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this✝ : DecidableEq E := Classical.decEq E
this : Fintype (L →ₐ[K] E) := PowerBasis.AlgHom.fintype pb
⊢ { x // x ∈ (minpoly K pb.gen).aroots E } → E

case hfg
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this✝ : DecidableEq E := Classical.decEq E
this : Fintype (L →ₐ[K] E) := PowerBasis.AlgHom.fintype pb
⊢ ∀ (x : { x // x ∈ (minpoly K pb.gen).aroots E }), ?f x = _root_.id ↑x

case h
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : CommRing T
inst✝¹⁴ : Algebra R S
inst✝¹³ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Algebra K L
ι κ : Type w
inst✝⁹ : Fintype ι
F : Type u_6
inst✝⁸ : Field F
inst✝⁷ : Algebra R L
inst✝⁶ : Algebra L F
inst✝⁵ : Algebra R F
inst✝⁴ : IsScalarTower R L F
inst✝³ : Algebra K F
inst✝² : IsScalarTower K L F
E : Type u_7
inst✝¹ : Field E
inst✝ : Algebra K E
pb : PowerBasis K L
hE : Splits (algebraMap K E) (minpoly K pb.gen)
hfx : IsSeparable K pb.gen
this✝ : DecidableEq E := Classical.decEq E
this : Fintype (L →ₐ[K] E) := PowerBasis.AlgHom.fintype pb
⊢ ∀ (x : L →ₐ[K] E), x pb.gen = ?f (pb.liftEquiv' x)
tactic: rw [pb.trace_gen_eq_sum_roots hE, Fintype.sum_equiv pb.liftEquiv', Finset.sum_mem_multiset,
    Finset.sum_eq_multiset_sum, Multiset.toFinset_val, Multiset.dedup_eq_self.mpr _,
    Multiset.map_id]