Theorem: Algebra.norm_eq_norm_adjoin
File: Mathlib/RingTheory/Norm.lean

tactic: letI := isSeparable_tower_top_of_isSeparable K K⟮x⟯ L
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
⊢ (norm K) x = (norm K) (AdjoinSimple.gen K x) ^ finrank (↥K⟮x⟯) L
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
⊢ (norm K) x = (norm K) (AdjoinSimple.gen K x) ^ finrank (↥K⟮x⟯) L

tactic: let pbL := Field.powerBasisOfFiniteOfSeparable K⟮x⟯ L
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
⊢ (norm K) x = (norm K) (AdjoinSimple.gen K x) ^ finrank (↥K⟮x⟯) L
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
⊢ (norm K) x = (norm K) (AdjoinSimple.gen K x) ^ finrank (↥K⟮x⟯) L

tactic: let pbx := IntermediateField.adjoin.powerBasis (IsSeparable.isIntegral K x)
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
⊢ (norm K) x = (norm K) (AdjoinSimple.gen K x) ^ finrank (↥K⟮x⟯) L
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ (norm K) x = (norm K) (AdjoinSimple.gen K x) ^ finrank (↥K⟮x⟯) L

tactic: erw [← AdjoinSimple.algebraMap_gen K x, norm_eq_matrix_det (pbx.basis.smul pbL.basis) _,
  smul_leftMulMatrix_algebraMap, det_blockDiagonal, norm_eq_matrix_det pbx.basis]
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ (norm K) x = (norm K) (AdjoinSimple.gen K x) ^ finrank (↥K⟮x⟯) L
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ ∏ k : Fin pbL.dim, ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K x)).det =
    ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)))).det ^
      finrank (↥K⟮(algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)⟯) L

tactic: simp only [Finset.card_fin, Finset.prod_const]
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ ∏ k : Fin pbL.dim, ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K x)).det =
    ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)))).det ^
      finrank (↥K⟮(algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)⟯) L
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K x)).det ^ pbL.dim =
    ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)))).det ^
      finrank (↥K⟮(algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)⟯) L

tactic: congr
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K x)).det ^ pbL.dim =
    ((leftMulMatrix pbx.basis) (AdjoinSimple.gen K ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)))).det ^
      finrank (↥K⟮(algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)⟯) L
state_after: case e_a
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ pbL.dim = finrank (↥K⟮(algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)⟯) L

tactic: rw [← PowerBasis.finrank, AdjoinSimple.algebraMap_gen K x]
state_before: case e_a
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : Field F
inst✝³ : Algebra K L
inst✝² : Algebra K F
ι : Type w
inst✝¹ : FiniteDimensional K L
inst✝ : IsSeparable K L
x : L
this : IsSeparable (↥K⟮x⟯) L := isSeparable_tower_top_of_isSeparable K (↥K⟮x⟯) L
pbL : PowerBasis (↥K⟮x⟯) L := Field.powerBasisOfFiniteOfSeparable (↥K⟮x⟯) L
pbx : PowerBasis K ↥K⟮x⟯ := adjoin.powerBasis ⋯
⊢ pbL.dim = finrank (↥K⟮(algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)⟯) L
state_after: no goals