File: Mathlib/GroupTheory/DoubleCoset.lean

full_name: Doset.doset
code: /-- The double coset as an element of `Set α` corresponding to `s a t` -/
def doset (a : α) (s t : Set α) : Set α 
goal: Set α

full_name: Doset.doset_eq_image2
code: lemma doset_eq_image2 (a : α) (s t : Set α) : doset a s t = Set.image2 (· * a * ·) s t 
goal: Doset.doset a s t = Set.image2 (fun x x_1 => x * a * x_1) s t

full_name: Doset.mem_doset
code: theorem mem_doset {s t : Set α} {a b : α} : b ∈ doset a s t ↔ ∃ x ∈ s, ∃ y ∈ t, b = x * a * y 
goal: b ∈ Doset.doset a s t ↔ ∃ x ∈ s, ∃ y ∈ t, b = x * a * y

full_name: Doset.mem_doset_self
code: theorem mem_doset_self (H K : Subgroup G) (a : G) : a ∈ doset a H K 
goal: a ∈ Doset.doset a ↑H ↑K

full_name: Doset.doset_eq_of_mem
code: theorem doset_eq_of_mem {H K : Subgroup G} {a b : G} (hb : b ∈ doset a H K) :
    doset b H K = doset a H K 
goal: Doset.doset b ↑H ↑K = Doset.doset a ↑H ↑K

full_name: Doset.mem_doset_of_not_disjoint
code: theorem mem_doset_of_not_disjoint {H K : Subgroup G} {a b : G}
    (h : ¬Disjoint (doset a H K) (doset b H K)) : b ∈ doset a H K 
goal: b ∈ Doset.doset a ↑H ↑K

full_name: Doset.eq_of_not_disjoint
code: theorem eq_of_not_disjoint {H K : Subgroup G} {a b : G}
    (h : ¬Disjoint (doset a H K) (doset b H K)) : doset a H K = doset b H K 
goal: Doset.doset a ↑H ↑K = Doset.doset b ↑H ↑K

full_name: Doset.setoid
code: /-- The setoid defined by the double_coset relation -/
def setoid (H K : Set G) : Setoid G 
goal: Setoid G

full_name: Doset.Quotient
code: /-- Quotient of `G` by the double coset relation, i.e. `H \ G / K` -/
def Quotient (H K : Set G) : Type _ 
goal: Type u_1

full_name: Doset.rel_iff
code: theorem rel_iff {H K : Subgroup G} {x y : G} :
    (setoid ↑H ↑K).Rel x y ↔ ∃ a ∈ H, ∃ b ∈ K, y = a * x * b 
goal: (Doset.setoid ↑H ↑K).Rel x y ↔ ∃ a ∈ H, ∃ b ∈ K, y = a * x * b

full_name: Doset.bot_rel_eq_leftRel
code: theorem bot_rel_eq_leftRel (H : Subgroup G) :
    (setoid ↑(⊥ : Subgroup G) ↑H).Rel = (QuotientGroup.leftRel H).Rel 
goal: (Doset.setoid ↑⊥ ↑H).Rel = (QuotientGroup.leftRel H).Rel

full_name: Doset.rel_bot_eq_right_group_rel
code: theorem rel_bot_eq_right_group_rel (H : Subgroup G) :
    (setoid ↑H ↑(⊥ : Subgroup G)).Rel = (QuotientGroup.rightRel H).Rel 
goal: (Doset.setoid ↑H ↑⊥).Rel = (QuotientGroup.rightRel H).Rel

full_name: Doset.quotToDoset
code: /-- Create a doset out of an element of `H \ G / K`-/
def quotToDoset (H K : Subgroup G) (q : Quotient (H : Set G) K) : Set G 
goal: Set G

full_name: Doset.mk
code: /-- Map from `G` to `H \ G / K`-/
abbrev mk (H K : Subgroup G) (a : G) : Quotient (H : Set G) K 
goal: Doset.Quotient ↑H ↑K

full_name: Doset.instInhabitedQuotientCoeSubgroup
code: instance (H K : Subgroup G) : Inhabited (Quotient (H : Set G) K) 
goal: Inhabited (Doset.Quotient ↑H ↑K)

full_name: Doset.eq
code: theorem eq (H K : Subgroup G) (a b : G) :
    mk H K a = mk H K b ↔ ∃ h ∈ H, ∃ k ∈ K, b = h * a * k 
goal: Doset.mk H K a = Doset.mk H K b ↔ ∃ h ∈ H, ∃ k ∈ K, b = h * a * k

full_name: Doset.out_eq'
code: theorem out_eq' (H K : Subgroup G) (q : Quotient ↑H ↑K) : mk H K q.out' = q 
goal: Doset.mk H K (Quotient.out' q) = q

full_name: Doset.mk_out'_eq_mul
code: theorem mk_out'_eq_mul (H K : Subgroup G) (g : G) :
    ∃ h k : G, h ∈ H ∧ k ∈ K ∧ (mk H K g : Quotient ↑H ↑K).out' = h * g * k 
goal: ∃ h k, h ∈ H ∧ k ∈ K ∧ Quotient.out' (Doset.mk H K g) = h * g * k

full_name: Doset.mk_eq_of_doset_eq
code: theorem mk_eq_of_doset_eq {H K : Subgroup G} {a b : G} (h : doset a H K = doset b H K) :
    mk H K a = mk H K b 
goal: Doset.mk H K a = Doset.mk H K b

full_name: Doset.disjoint_out'
code: theorem disjoint_out' {H K : Subgroup G} {a b : Quotient H.1 K} :
    a ≠ b → Disjoint (doset a.out' H K) (doset b.out' (H : Set G) K) 
goal: a ≠ b → Disjoint (Doset.doset (Quotient.out' a) ↑H ↑K) (Doset.doset (Quotient.out' b) ↑H ↑K)

full_name: Doset.union_quotToDoset
code: theorem union_quotToDoset (H K : Subgroup G) : ⋃ q, quotToDoset H K q = Set.univ 
goal: ⋃ q, Doset.quotToDoset H K q = Set.univ

full_name: Doset.doset_union_rightCoset
code: theorem doset_union_rightCoset (H K : Subgroup G) (a : G) :
    ⋃ k : K, op (a * k) • ↑H = doset a H K 
goal: ⋃ k, MulOpposite.op (a * ↑k) • ↑H = Doset.doset a ↑H ↑K

full_name: Doset.doset_union_leftCoset
code: theorem doset_union_leftCoset (H K : Subgroup G) (a : G) :
    ⋃ h : H, (h * a : G) • ↑K = doset a H K 
goal: ⋃ h, (↑h * a) • ↑K = Doset.doset a ↑H ↑K

full_name: Doset.left_bot_eq_left_quot
code: theorem left_bot_eq_left_quot (H : Subgroup G) :
    Quotient (⊥ : Subgroup G).1 (H : Set G) = (G ⧸ H) 
goal: Doset.Quotient ↑⊥.toSubmonoid ↑H = (G ⧸ H)

full_name: Doset.right_bot_eq_right_quot
code: theorem right_bot_eq_right_quot (H : Subgroup G) :
    Quotient (H.1 : Set G) (⊥ : Subgroup G) = _root_.Quotient (QuotientGroup.rightRel H) 
goal: Doset.Quotient ↑H.toSubmonoid ↑⊥ = Quotient (QuotientGroup.rightRel H)