Zulip Chat Archive

Stream: Is there code for X?

Topic: quotient of a group by a subgroup bijects with left cosets


Kevin Buzzard (Jul 20 2021 at 12:07):

If L : subgroup G then quotient L is defined to be the quotient (in the sense of core Lean) of G by the equivalence relation "we're in the same left coset of L". However I could not find the equiv between quotient L and the type of left cosets of L in G, and indeed I could not even find this type. Are these things not there or am I looking in the wrong places?

Eric Wieser (Jul 20 2021 at 12:12):

By "I cannot find this type" do you mean that you can't work out how to state the isomorphism you're looking for?

Eric Wieser (Jul 20 2021 at 12:14):

I think {s // ∃ a, s = left_coset a L} is the type you need?

Eric Wieser (Jul 20 2021 at 12:33):

Definitely golfable:

import group_theory.quotient_group

variables {G : Type*} [group G] (L : subgroup G)

noncomputable def the_equiv : {s //  a : G, s = left_coset a L}  quotient_group.quotient L :=
{ to_fun := λ s, quotient_group.mk s.prop.some,
  inv_fun := λ q, quotient.lift_on' q
    (λ g : G, (⟨left_coset g L, g, rfl : {s //  a : G, s = left_coset a L})) $ λ a b h, begin
      ext,
      simp only [subtype.coe_mk, set_like.mem_coe],
      rw [quotient_group.eq_class_eq_left_coset, quotient_group.eq_class_eq_left_coset],
      exact eq.congr_right (quotient_group.eq.mpr h),
    end,
  left_inv := λ s, begin
    ext1, dsimp,
    generalize_proofs h,
    exact h.some_spec.symm,
  end,
  right_inv := quotient.ind' $ begin
    dsimp,
    intro a,
    generalize_proofs h,
    apply quotient.sound',
    dunfold quotient_group.left_rel setoid.r,
    rw [set_like.mem_coe,  mem_left_coset_iff],
    rw [h.some_spec, subtype.coe_mk],
    exact mem_own_left_coset L.to_submonoid a,
  end }

Eric Wieser (Jul 20 2021 at 12:33):

map_mul left as an exercise to the reader

Eric Wieser (Jul 21 2021 at 09:41):

I PR'd a variant of the first half of this as #8382


Last updated: Dec 20 2023 at 11:08 UTC