diff --git a/Mathlib/NumberTheory/NumberField/Norm.lean b/Mathlib/NumberTheory/NumberField/Norm.lean index 102e45e93da818..55a5a6775b713b 100644 --- a/Mathlib/NumberTheory/NumberField/Norm.lean +++ b/Mathlib/NumberTheory/NumberField/Norm.lean @@ -68,21 +68,6 @@ theorem norm_algebraMap (x : π“ž K) : norm K (algebraMap (π“ž K) (π“ž L) x) = RingOfIntegers.algebraMap_norm_algebraMap, Algebra.norm_algebraMap, RingOfIntegers.coe_eq_algebraMap, map_pow] -theorem isUnit_norm_of_isGalois [FiniteDimensional K L] [IsGalois K L] {x : π“ž L} : - IsUnit (norm K x) ↔ IsUnit x := by - classical - refine ⟨fun hx => ?_, IsUnit.map _⟩ - replace hx : IsUnit (algebraMap (π“ž K) (π“ž L) <| norm K x) := hx.map (algebraMap (π“ž K) <| π“ž L) - refine @isUnit_of_mul_isUnit_right (π“ž L) _ _ - ⟨(univ \ {AlgEquiv.refl}).prod fun Οƒ : Gal(L/K) => Οƒ x, - prod_mem fun Οƒ _ => x.2.map (Οƒ : L β†’+* L).toIntAlgHom⟩ _ ?_ - convert hx using 1 - ext - convert_to ((univ \ {AlgEquiv.refl}).prod fun Οƒ : Gal(L/K) => Οƒ x) * - ∏ Οƒ ∈ {(AlgEquiv.refl : Gal(L/K))}, Οƒ x = _ - Β· simp - Β· rw [prod_sdiff <| subset_univ _, ← norm_eq_prod_automorphisms, coe_algebraMap_norm] - /-- If `L/K` is a finite Galois extension of fields, then, for all `(x : π“ž L)` we have that `x ∣ algebraMap (π“ž K) (π“ž L) (norm K x)`. -/ theorem dvd_norm [FiniteDimensional K L] [IsGalois K L] (x : π“ž L) : @@ -97,6 +82,10 @@ theorem dvd_norm [FiniteDimensional K L] [IsGalois K L] (x : π“ž L) : rw [coe_algebraMap_norm K x, norm_eq_prod_automorphisms] simp [← Finset.mul_prod_erase _ _ (mem_univ AlgEquiv.refl)] +theorem isUnit_norm_of_isGalois [FiniteDimensional K L] [IsGalois K L] {x : π“ž L} : + IsUnit (norm K x) ↔ IsUnit x := + ⟨fun hx ↦ isUnit_of_dvd_unit (dvd_norm K x) (hx.map _), IsUnit.map _⟩ + variable (F : Type*) [Field F] [Algebra K F] [FiniteDimensional K F] theorem norm_norm [Algebra F L] [FiniteDimensional F L] [IsScalarTower K F L] (x : π“ž L) :