Zulip Chat Archive
Stream: Is there code for X?
Topic: Galois group acts on ideals
Kevin Buzzard (May 27 2024 at 21:52):
In a proof, I need this:
import Mathlib.RingTheory.Ideal.Maps
variable (A : Type*) [CommRing A] (B : Type*) [CommRing B] [Algebra A B]
instance foo : MulDistribMulAction (B ≃ₐ[A] B) (Ideal B) where
smul σ I := Ideal.comap σ.symm I
one_smul I := I.comap_id
smul_one σ := by simp only [Ideal.one_eq_top]; rfl
mul_smul _ _ _ := rfl
smul_mul σ I J := by
refine le_antisymm (fun x ↦ ?_ : Ideal.comap _ _ ≤ _) (Ideal.le_comap_mul _)
obtain ⟨y, rfl⟩ : ∃ y, σ y = x := ⟨σ.symm x, σ.apply_symm_apply x⟩
rw [Ideal.mem_comap, AlgEquiv.symm_apply_apply, ← Ideal.mem_comap]
revert y
refine Ideal.mul_le.mpr (fun r hr s hs ↦ ?_)
simp only [Ideal.mem_comap, map_mul]
exact Ideal.mul_mem_mul (Ideal.mem_comap.2 (by simp [hr])) (Ideal.mem_comap.2 <| by simp [hs])
Do we have it already? If not, is this instance suitable for mathlib, or should I just make it a local instance?
Eric Wieser (May 27 2024 at 22:04):
This feels like it ought to follow from docs#Submodule.pointwiseDistribMulAction, but the SMulCommClass
requirement doesn't work
Adam Topaz (May 27 2024 at 22:10):
This makes me wonder... what's the general abstraction here? If we have some object X
with an action of G
, and some other object Y
"constructed out of X
" (whatever that means...), we get an action of G
on Y
. Is there something general we can do here?
It's possible to do this with category theory ("constructed out of" means "functor"), but I wonder if anyone has any other ideas.
Eric Wieser (May 27 2024 at 22:14):
I think the missing piece is
instance Ideal.pointwiseMulSemiringAction
[Monoid α] [MulSemiringAction α B] : MulSemiringAction α (Ideal B) where
smul a I := Ideal.map (MulSemiringAction.toRingHom _ _ a) I
one_smul I :=
congr_arg (I.map ·) (RingHom.ext <| one_smul α) |>.trans I.map_id
mul_smul _a₁ _a₂ I :=
congr_arg (I.map ·) (RingHom.ext <| mul_smul _ _) |>.trans (I.map_map _ _).symm
smul_one a := by simp only [Ideal.one_eq_top]; exact Ideal.map_top _
smul_mul a I J := Ideal.map_mul _ I J
smul_add a I J := Ideal.map_sup _ I J
smul_zero a := Ideal.map_bot
edit: #13294
Adam Topaz (May 27 2024 at 22:17):
Yeah that would works in this case, but again that’s special to Ideal
.
Eric Wieser (May 27 2024 at 22:18):
I think every time you "construct Y out of X" you have to specify what that means, which is one of the things this instance captures
Adam Topaz (May 27 2024 at 22:24):
I wish we could do better :-/
Eric Wieser (May 27 2024 at 22:26):
I think this treads into "generalizing SubFoo.map
and FooHom.comp
" territory
Antoine Chambert-Loir (May 28 2024 at 11:48):
There is an analogous stuff for modules / submodules if one compatible actions on the ring and the module. (This is important, eg, to formulate Galois descent.)
Antoine Chambert-Loir (May 28 2024 at 11:49):
The action on ideals is a particular case, when the module is the ring, with the same action.
Eric Wieser (May 28 2024 at 12:10):
I don't think the two actions are the same, since Ideal.map and Submodule.map are different
Kevin Buzzard (May 28 2024 at 12:14):
docs#Ideal.map and docs#Submodule.map to save people from going to random websites.
Eric Wieser (May 28 2024 at 12:33):
I guess this tension exists in general: should actions /images only exist when they coincide with the set action/image, or should they always exist and take the appropriate closure?
Antoine Chambert-Loir (May 28 2024 at 12:59):
(For a surjective morphism of rings, the ideal map coincides with the submodule map )
Eric Wieser (May 28 2024 at 21:46):
Do we have that result in mathlib?
Junyan Xu (May 29 2024 at 08:09):
(deleted)
Junyan Xu (May 29 2024 at 08:09):
@loogle Ideal.map, RingHomSurjective
loogle (May 29 2024 at 08:09):
:search: Ideal.map_eq_submodule_map
Last updated: May 02 2025 at 03:31 UTC