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

Proof steps:
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✝ : Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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: letI := Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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 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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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: let pbx := IntermediateField.adjoin.powerBasis (Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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: erw [← AdjoinSimple.algebraMap_gen K x, norm_eq_matrix_det (pbx.basis.smulTower pbL.basis) _,
    smulTower_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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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: 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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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: congr
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✝ : Algebra.IsSeparable K L
x : L
this : Algebra.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
tactic: rw [← PowerBasis.finrank, AdjoinSimple.algebraMap_gen K x]