Skip to content

Commit 45dad46

Browse files
committed
temp
1 parent 768696c commit 45dad46

1 file changed

Lines changed: 87 additions & 24 deletions

File tree

Mathlib/NumberTheory/RamificationInertia/Galois.lean

Lines changed: 87 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -251,37 +251,100 @@ theorem ncard_primesOver_mul_ramificationIdxIn_mul_inertiaDegIn :
251251

252252
end 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+
254297
section 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
267307
theorem 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

286349
end tower
287350

0 commit comments

Comments
 (0)