|
| 1 | +/- |
| 2 | +Copyright (c) 2022 Riccardo Brasca. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Riccardo Brasca, Eric Rodriguez |
| 5 | +-/ |
| 6 | + |
| 7 | +import number_theory.number_field.basic |
| 8 | +import ring_theory.norm |
| 9 | + |
| 10 | +/-! |
| 11 | +# Norm in number fields |
| 12 | +Given a finite extension of number fields, we define the norm morphism as a function between the |
| 13 | +rings of integers. |
| 14 | +
|
| 15 | +## Main definitions |
| 16 | +* `ring_of_integers.norm K` : `algebra.norm` as a morphism `(π L) β* (π K)`. |
| 17 | +## Main results |
| 18 | +* `algebra.dvd_norm` : if `L/K` is a finite Galois extension of fields, then, for all `(x : π L)` |
| 19 | + we have that `x β£ algebra_map (π K) (π L) (norm K x)`. |
| 20 | +
|
| 21 | +-/ |
| 22 | + |
| 23 | +open_locale number_field big_operators |
| 24 | + |
| 25 | +open finset number_field algebra |
| 26 | + |
| 27 | +namespace ring_of_integers |
| 28 | + |
| 29 | +variables {L : Type*} (K : Type*) [field K] [field L] [algebra K L] [finite_dimensional K L] |
| 30 | + |
| 31 | +/-- `algebra.norm` as a morphism betwen the rings of integers. -/ |
| 32 | +@[simps] noncomputable def norm [is_separable K L] : (π L) β* (π K) := |
| 33 | +((algebra.norm K).restrict (π L)).cod_restrict (π K) (Ξ» x, is_integral_norm K x.2) |
| 34 | + |
| 35 | +local attribute [instance] number_field.ring_of_integers_algebra |
| 36 | + |
| 37 | +lemma coe_algebra_map_norm [is_separable K L] (x : π L) : |
| 38 | + (algebra_map (π K) (π L) (norm K x) : L) = algebra_map K L (algebra.norm K (x : L)) := rfl |
| 39 | + |
| 40 | +lemma is_unit_norm [is_galois K L] {x : π L} : |
| 41 | + is_unit (norm K x) β is_unit x := |
| 42 | +begin |
| 43 | + classical, |
| 44 | + refine β¨Ξ» hx, _, is_unit.map _β©, |
| 45 | + replace hx : is_unit (algebra_map (π K) (π L) $ norm K x) := hx.map (algebra_map (π K) $ π L), |
| 46 | + refine @is_unit_of_mul_is_unit_right (π L) _ |
| 47 | + β¨(univ \ { alg_equiv.refl }).prod (Ξ» (Ο : L ββ[K] L), Ο x), |
| 48 | + prod_mem (Ξ» Ο hΟ, map_is_integral (Ο : L β+* L).to_int_alg_hom x.2)β© _ _, |
| 49 | + convert hx using 1, |
| 50 | + ext, |
| 51 | + push_cast, |
| 52 | + convert_to (univ \ { alg_equiv.refl }).prod (Ξ» (Ο : L ββ[K] L), Ο x) * (β (Ο : L ββ[K] L) in |
| 53 | + {alg_equiv.refl}, Ο (x : L)) = _, |
| 54 | + { rw [prod_singleton, alg_equiv.coe_refl, id] }, |
| 55 | + { rw [prod_sdiff $ subset_univ _, βnorm_eq_prod_automorphisms, coe_algebra_map_norm] } |
| 56 | +end |
| 57 | + |
| 58 | +/-- If `L/K` is a finite Galois extension of fields, then, for all `(x : π L)` we have that |
| 59 | +`x β£ algebra_map (π K) (π L) (norm K x)`. -/ |
| 60 | +lemma dvd_norm [is_galois K L] (x : π L) : x β£ algebra_map (π K) (π L) (norm K x) := |
| 61 | +begin |
| 62 | + classical, |
| 63 | + have hint : (β (Ο : L ββ[K] L) in univ.erase alg_equiv.refl, Ο x) β π L := |
| 64 | + subalgebra.prod_mem _ (Ξ» Ο hΟ, (mem_ring_of_integers _ _).2 |
| 65 | + (map_is_integral Ο (ring_of_integers.is_integral_coe x))), |
| 66 | + refine β¨β¨_, hintβ©, subtype.ext _β©, |
| 67 | + rw [coe_algebra_map_norm K x, norm_eq_prod_automorphisms], |
| 68 | + simp [β finset.mul_prod_erase _ _ (mem_univ alg_equiv.refl)] |
| 69 | +end |
| 70 | + |
| 71 | +end ring_of_integers |
0 commit comments