Theorem: Subgroup.mul_inf_assoc
File: Mathlib/GroupTheory/Subgroup/Pointwise.lean

tactic: ext
state_before: α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
⊢ ↑A * ↑(B ⊓ C) = ↑A * ↑B ⊓ ↑C

tactic: simp only [coe_inf, Set.inf_eq_inter, Set.mem_mul, Set.mem_inter_iff]
state_before: case h
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
x✝ : G
⊢ x✝ ∈ ↑A * ↑(B ⊓ C) ↔ x✝ ∈ ↑A * ↑B ⊓ ↑C

tactic: constructor
state_before: case h
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
x✝ : G
⊢ (∃ x y, x ∈ ↑A ∧ (y ∈ ↑B ∧ y ∈ ↑C) ∧ x * y = x✝) ↔ (∃ x y, x ∈ ↑A ∧ y ∈ ↑B ∧ x * y = x✝) ∧ x✝ ∈ ↑C

tactic: rintro ⟨⟨y, z, hy, hz, rfl⟩, hyz⟩
state_before: case h.mpr
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
x✝ : G
⊢ (∃ x y, x ∈ ↑A ∧ y ∈ ↑B ∧ x * y = x✝) ∧ x✝ ∈ ↑C → ∃ x y, x ∈ ↑A ∧ (y ∈ ↑B ∧ y ∈ ↑C) ∧ x * y = x✝

tactic: refine' ⟨y, z, hy, ⟨hz, _⟩, rfl⟩
state_before: case h.mpr.intro.intro.intro.intro.intro
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
y z : G
hy : y ∈ ↑A
hz : z ∈ ↑B
hyz : y * z ∈ ↑C
⊢ ∃ x y_1, x ∈ ↑A ∧ (y_1 ∈ ↑B ∧ y_1 ∈ ↑C) ∧ x * y_1 = y * z

tactic: suffices y⁻¹ * (y * z) ∈ C by simpa
state_before: case h.mpr.intro.intro.intro.intro.intro
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
y z : G
hy : y ∈ ↑A
hz : z ∈ ↑B
hyz : y * z ∈ ↑C
⊢ z ∈ ↑C

tactic: exact mul_mem (inv_mem (h hy)) hyz
state_before: case h.mpr.intro.intro.intro.intro.intro
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
y z : G
hy : y ∈ ↑A
hz : z ∈ ↑B
hyz : y * z ∈ ↑C
⊢ y⁻¹ * (y * z) ∈ C

tactic: rintro ⟨y, z, hy, ⟨hzB, hzC⟩, rfl⟩
state_before: case h.mp
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
x✝ : G
⊢ (∃ x y, x ∈ ↑A ∧ (y ∈ ↑B ∧ y ∈ ↑C) ∧ x * y = x✝) → (∃ x y, x ∈ ↑A ∧ y ∈ ↑B ∧ x * y = x✝) ∧ x✝ ∈ ↑C

tactic: refine' ⟨_, mul_mem (h hy) hzC⟩
state_before: case h.mp.intro.intro.intro.intro.intro
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
y z : G
hy : y ∈ ↑A
hzB : z ∈ ↑B
hzC : z ∈ ↑C
⊢ (∃ x y_1, x ∈ ↑A ∧ y_1 ∈ ↑B ∧ x * y_1 = y * z) ∧ y * z ∈ ↑C

tactic: exact ⟨y, z, hy, hzB, rfl⟩
state_before: case h.mp.intro.intro.intro.intro.intro
α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
y z : G
hy : y ∈ ↑A
hzB : z ∈ ↑B
hzC : z ∈ ↑C
⊢ ∃ x y_1, x ∈ ↑A ∧ y_1 ∈ ↑B ∧ x * y_1 = y * z

tactic: simpa
state_before: α : Type ?u.33826
G : Type u_1
A✝ : Type ?u.33832
S : Type ?u.33835
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : A ≤ C
y z : G
hy : y ∈ ↑A
hz : z ∈ ↑B
hyz : y * z ∈ ↑C
this : y⁻¹ * (y * z) ∈ C
⊢ z ∈ ↑C