@@ -251,37 +251,100 @@ theorem ncard_primesOver_mul_ramificationIdxIn_mul_inertiaDegIn :
251251
252252end fundamental_identity
253253
254+ -- #38864
255+ section foo
256+
257+ @[simp]
258+ theorem smul_under (A : Type *) [CommSemiring A] {B C : Type *} [Semiring B] [Semiring C] [Algebra A B]
259+ [Algebra A C] (P : Ideal B) {G : Type *} [Group G] [MulSemiringAction G B] (g : G)
260+ [MulSemiringAction G A] [SMulDistribClass G A B] :
261+ g • P.under A = (g • P).under A := by
262+ conv_lhs => rw [pointwise_smul_eq_comap, ← comap_coe, under_def, comap_comap]
263+ conv_rhs => rw [pointwise_smul_eq_comap, ← comap_coe, under_def, comap_comap]
264+ congr
265+ ext
266+ simp [algebraMap.smul']
267+
268+ variable (G G' A B C : Type *) [CommRing A] [CommRing B] [CommRing C] [IsDomain C] [Algebra A B]
269+ [Algebra A C] [Algebra B C] [FaithfulSMul A B] [FaithfulSMul B C] [IsScalarTower A B C]
270+ [Group G] [Group G']
271+
272+ /-- The restriction homomorphism from the Galois group of `C/A` to the Galois group of `B/A` where
273+ `C/B/A` is a tower of domains with `C/A` and `B/A` Galois. -/
274+ noncomputable def restrictHom [Finite G] [Finite G'] [MulSemiringAction G C] [IsGaloisGroup G A C]
275+ [MulSemiringAction G' B] [IsGaloisGroup G' A B] : G →* G' :=
276+ sorry
277+
278+ @[simp]
279+ theorem algebraMap_restrictHom_smul [Finite G] [Finite G'] [MulSemiringAction G C]
280+ [IsGaloisGroup G A C] [MulSemiringAction G' B] [IsGaloisGroup G' A B] (g : G) (x : B) :
281+ algebraMap B C (restrictHom G G' A B C g • x) = g • algebraMap B C x := by
282+ sorry
283+
284+ theorem restrictHom_surjective [Finite G] [Finite G'] [MulSemiringAction G C]
285+ [IsGaloisGroup G A C] [MulSemiringAction G' B] [IsGaloisGroup G' A B] :
286+ Function.Surjective (restrictHom G G' A B C) := by
287+ sorry
288+
289+ theorem restrictHom_smul_under [Finite G] [Finite G'] [MulSemiringAction G C]
290+ [IsGaloisGroup G A C] [MulSemiringAction G' B] [IsGaloisGroup G' A B]
291+ (g : G) (I : Ideal C) : restrictHom G G' A B C g • I.under B = (g • I).under B := by
292+ ext x
293+ simp [Ideal.mem_pointwise_smul_iff_inv_smul_mem, ← map_inv]
294+
295+ end foo
296+
254297section tower
255298
256- variable {A B : Type *} [CommRing A] [IsDedekindDomain A] [CommRing B] [IsDedekindDomain B]
257- [Algebra A B] [IsTorsionFree A B] {p : Ideal A} (P : Ideal B) [p.IsPrime]
299+ variable {A B : Type *} [CommRing A] [IsDomain A] [CommRing B] [IsDomain B]
300+ [Algebra A B] [FaithfulSMul A B] {p : Ideal A} (P : Ideal B)
258301 [P.IsPrime] [P.LiesOver p] (G : Type *) [Group G] [Finite G] [MulSemiringAction G B]
259- [IsGaloisGroup G A B] (C : Type *) [CommRing C] [IsDedekindDomain C] [Algebra A C] [Algebra B C]
260- [Module.Finite A B] [Module.Finite A C] [Module.Finite B C] [IsTorsionFree A C]
261- [IsTorsionFree B C] [IsScalarTower A B C]
302+ [IsGaloisGroup G A B] (C : Type *) [CommRing C] [IsDomain C] [Algebra A C] [Algebra B C]
303+ [FaithfulSMul B C] [IsScalarTower A B C]
262304 (GAC : Type *) [Group GAC] [Finite GAC] [MulSemiringAction GAC C] [IsGaloisGroup GAC A C]
263- (GBC : Type *) [Group GBC] [Finite GBC] [MulSemiringAction GBC C] [IsGaloisGroup GBC B C]
264305
265- -- assume that `A,B,C` are domains, and use #38864
266- include G GAC GBC in
306+ include G GAC in
267307theorem ncard_primesOver_mul_ncard_primesOver' :
268308 (p.primesOver B).ncard * (P.primesOver C).ncard = (p.primesOver C).ncard := by
269- -- take any element `x : B` and consider its characteristic polynomial `∏ (T - g x) = 0`.
270- -- this is a polynomial with coefficients in `A` with `x` as a root
271- -- then it also has all `h x` as roots, so we can factor...
272- -- in other words, `H` acts on the `G`-conjugates of `x : B`
273-
274- suffices h : ∀ Q : p.primesOver B, (Q.1 .primesOver C).ncard = (P.primesOver C).ncard by
275- have : Fintype (p.primesOver B) := sorry
276- transitivity ∑ Q : p.primesOver B, (Q.1 .primesOver C).ncard
277- · simp [h]
278- · -- sum fiberwise
279- sorry
280- -- GAC acts transitively on the primes of `C` above `p`
281- -- G acts transitively on the primes of `B` above `p`
282- have := IsInvariant.orbit_eq_primesOver A C GAC p
283- -- each prime in `B` over `p` has the same number of primes in `C` above it
284- let foo : MulSemiringAction GAC B := by sorry
309+ have : Algebra.IsIntegral A C := IsGaloisGroup.isInvariant.isIntegral A C GAC
310+ have : Algebra.IsIntegral B C := Algebra.IsIntegral.tower_top A
311+ let f := restrictHom GAC G A B C
312+ have hf : Function.Surjective f := restrictHom_surjective GAC G A B C
313+ obtain ⟨Q, _, hQ⟩ := Ideal.exists_ideal_over_prime_of_isIntegral_of_isDomain P (S := C) (by simp)
314+ have : Q.LiesOver P := ⟨hQ.symm⟩
315+ have : Q.LiesOver p := .trans Q P p
316+ have key (Q Q' : Ideal C) [Q.LiesOver P] [Q'.LiesOver P] (g : GAC) (hg : g • Q = Q') : f g ∈ MulAction.stabilizer G P := by
317+ apply_fun comap (algebraMap B C) at hg
318+ simp_rw [← Ideal.under_def, ← restrictHom_smul_under GAC G A B C,
319+ ← Ideal.over_def _ P] at hg
320+ exact hg
321+ have h1 : MulAction.orbit ((MulAction.stabilizer G P).comap f) Q = P.primesOver C := by
322+ ext Q'
323+ constructor
324+ · rintro ⟨⟨g, hg⟩, rfl⟩
325+ refine ⟨inferInstance, ?_⟩
326+ simp [liesOver_iff]
327+ simp at hg
328+ rw [← restrictHom_smul_under GAC G A B C, ← Ideal.over_def Q P]
329+ exact hg.symm
330+ · rintro ⟨_, _⟩
331+ have : Q'.LiesOver p := .trans Q' P p
332+ obtain ⟨g, hg⟩ := IsInvariant.exists_smul_of_under_eq A C GAC Q Q' (by
333+ rw [← Ideal.over_def Q p, ← Ideal.over_def Q' p])
334+ refine ⟨⟨g, ?_⟩, ?_⟩
335+ · apply key Q Q' g hg.symm
336+ · simpa [Subgroup.smul_def] using hg.symm
337+ rw [← Algebra.IsInvariant.orbit_eq_primesOver A B G p P, ← MulAction.index_stabilizer]
338+ rw [← Algebra.IsInvariant.orbit_eq_primesOver A C GAC p Q, ← MulAction.index_stabilizer]
339+ rw [← h1, ← MulAction.index_stabilizer]
340+ have h2 : MulAction.stabilizer ((MulAction.stabilizer G P).comap f) Q =
341+ (MulAction.stabilizer GAC Q).subgroupOf ((MulAction.stabilizer G P).comap f) := by
342+ ext
343+ simp [Subgroup.mem_subgroupOf, Subgroup.smul_def]
344+ rw [h2, ← Subgroup.relIndex]
345+ rw [← Subgroup.index_comap_of_surjective (MulAction.stabilizer G P) hf,
346+ mul_comm, Subgroup.relIndex_mul_index]
347+ exact key Q Q
285348
286349end tower
287350
0 commit comments