@@ -152,6 +152,30 @@ theorem mem_span_latticeBasis [NumberField K] (x : (K →+* ℂ) → ℂ) :
152
152
simp only [SetLike.mem_coe, mem_span_integralBasis K]
153
153
rfl
154
154
155
+ theorem mem_rat_span_latticeBasis [NumberField K] (x : K) :
156
+ canonicalEmbedding K x ∈ Submodule.span ℚ (Set.range (latticeBasis K)) := by
157
+ rw [← Basis.sum_repr (integralBasis K) x, map_sum]
158
+ simp_rw [map_rat_smul]
159
+ refine Submodule.sum_smul_mem _ _ (fun i _ ↦ Submodule.subset_span ?_)
160
+ rw [← latticeBasis_apply]
161
+ exact Set.mem_range_self i
162
+
163
+ theorem integralBasis_repr_apply [NumberField K] (x : K) (i : Free.ChooseBasisIndex ℤ (𝓞 K)) :
164
+ (latticeBasis K).repr (canonicalEmbedding K x) i = (integralBasis K).repr x i := by
165
+ rw [← Basis.restrictScalars_repr_apply ℚ _ ⟨_, mem_rat_span_latticeBasis K x⟩, eq_ratCast,
166
+ Rat.cast_inj]
167
+ let f := (canonicalEmbedding K).toRatAlgHom.toLinearMap.codRestrict _
168
+ (fun x ↦ mem_rat_span_latticeBasis K x)
169
+ suffices ((latticeBasis K).restrictScalars ℚ).repr.toLinearMap ∘ₗ f =
170
+ (integralBasis K).repr.toLinearMap from DFunLike.congr_fun (LinearMap.congr_fun this x) i
171
+ refine Basis.ext (integralBasis K) (fun i ↦ ?_)
172
+ have : f (integralBasis K i) = ((latticeBasis K).restrictScalars ℚ) i := by
173
+ apply Subtype.val_injective
174
+ rw [LinearMap.codRestrict_apply, AlgHom.toLinearMap_apply, Basis.restrictScalars_apply,
175
+ latticeBasis_apply]
176
+ rfl
177
+ simp_rw [LinearMap.coe_comp, LinearEquiv.coe_coe, Function.comp_apply, this, Basis.repr_self]
178
+
155
179
end NumberField.canonicalEmbedding
156
180
157
181
namespace NumberField.mixedEmbedding
0 commit comments