@@ -22,7 +22,7 @@ rings of integers.
2222
2323open_locale number_field big_operators
2424
25- open finset number_field algebra
25+ open finset number_field algebra finite_dimensional
2626
2727namespace ring_of_integers
2828
@@ -37,7 +37,15 @@ local attribute [instance] number_field.ring_of_integers_algebra
3737lemma coe_algebra_map_norm [is_separable K L] (x : π L) :
3838 (algebra_map (π K) (π L) (norm K x) : L) = algebra_map K L (algebra.norm K (x : L)) := rfl
3939
40- lemma is_unit_norm [is_galois K L] {x : π L} :
40+ lemma coe_norm_algebra_map [is_separable K L] (x : π K) :
41+ (norm K (algebra_map (π K) (π L) x) : K) = algebra.norm K (algebra_map K L x) := rfl
42+
43+ lemma norm_algebra_map [is_separable K L] (x : π K) :
44+ norm K (algebra_map (π K) (π L) x) = x ^ finrank K L :=
45+ by rw [β subtype.coe_inj, ring_of_integers.coe_norm_algebra_map, algebra.norm_algebra_map,
46+ subsemiring_class.coe_pow]
47+
48+ lemma is_unit_norm_of_is_galois [is_galois K L] {x : π L} :
4149 is_unit (norm K x) β is_unit x :=
4250begin
4351 classical,
6876 simp [β finset.mul_prod_erase _ _ (mem_univ alg_equiv.refl)]
6977end
7078
79+ variables (F : Type *) [field F] [algebra K F] [is_separable K F] [finite_dimensional K F]
80+
81+ lemma norm_norm [is_separable K L] [algebra F L] [is_separable F L] [finite_dimensional F L]
82+ [is_scalar_tower K F L] (x : π L) : norm K (norm F x) = norm K x :=
83+ by rw [β subtype.coe_inj, norm_apply_coe, norm_apply_coe, norm_apply_coe, algebra.norm_norm]
84+
85+ variable {F}
86+
87+ lemma is_unit_norm [char_zero K] {x : π F} :
88+ is_unit (norm K x) β is_unit x :=
89+ begin
90+ letI : algebra K (algebraic_closure K) := algebraic_closure.algebra K,
91+ let L := normal_closure K F (algebraic_closure F),
92+ haveI : finite_dimensional F L := finite_dimensional.right K F L,
93+ haveI : is_alg_closure K (algebraic_closure F) :=
94+ is_alg_closure.of_algebraic K F (algebraic_closure F) (algebra.is_algebraic_of_finite K F),
95+ haveI : is_galois F L := is_galois.tower_top_of_is_galois K F L,
96+ calc
97+ is_unit (norm K x) β is_unit ((norm K) x ^ finrank F L) :
98+ (is_unit_pow_iff (pos_iff_ne_zero.mp finrank_pos)).symm
99+ ... β is_unit (norm K (algebra_map (π F) (π L) x)) :
100+ by rw [β norm_norm K F (algebra_map (π F) (π L) x), norm_algebra_map F _, map_pow]
101+ ... β is_unit (algebra_map (π F) (π L) x) : is_unit_norm_of_is_galois K
102+ ... β is_unit (norm F (algebra_map (π F) (π L) x)) : (is_unit_norm_of_is_galois F).symm
103+ ... β is_unit (x ^ finrank F L) : (congr_arg is_unit (norm_algebra_map F _)).to_iff
104+ ... β is_unit x : is_unit_pow_iff (pos_iff_ne_zero.mp finrank_pos),
105+ end
106+
71107end ring_of_integers
0 commit comments