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

tactic: ext
state_before: α : Type ?u.39028
G : Type u_1
A✝ : Type ?u.39034
S : Type ?u.39037
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : C ≤ A
⊢ ↑(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.39028
G : Type u_1
A✝ : Type ?u.39034
S : Type ?u.39037
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : C ≤ A
x✝ : G
⊢ x✝ ∈ ↑(A ⊓ B) * ↑C ↔ x✝ ∈ ↑A ⊓ ↑B * ↑C

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

tactic: rintro ⟨hyz, y, z, hy, hz, rfl⟩
state_before: case h.mpr
α : Type ?u.39028
G : Type u_1
A✝ : Type ?u.39034
S : Type ?u.39037
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : C ≤ A
x✝ : G
⊢ (x✝ ∈ ↑A ∧ ∃ x y, x ∈ ↑B ∧ y ∈ ↑C ∧ x * y = x✝) → ∃ x y, (x ∈ ↑A ∧ x ∈ ↑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.39028
G : Type u_1
A✝ : Type ?u.39034
S : Type ?u.39037
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : C ≤ A
y z : G
hy : y ∈ ↑B
hz : z ∈ ↑C
hyz : y * z ∈ ↑A
⊢ ∃ x y_1, (x ∈ ↑A ∧ x ∈ ↑B) ∧ y_1 ∈ ↑C ∧ x * y_1 = y * z

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

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

tactic: rintro ⟨y, z, ⟨hyA, hyB⟩, hz, rfl⟩
state_before: case h.mp
α : Type ?u.39028
G : Type u_1
A✝ : Type ?u.39034
S : Type ?u.39037
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : C ≤ A
x✝ : G
⊢ (∃ x y, (x ∈ ↑A ∧ x ∈ ↑B) ∧ y ∈ ↑C ∧ x * y = x✝) → x✝ ∈ ↑A ∧ ∃ x y, x ∈ ↑B ∧ y ∈ ↑C ∧ x * y = x✝

tactic: refine' ⟨A.mul_mem hyA (h hz), _⟩
state_before: case h.mp.intro.intro.intro.intro.intro
α : Type ?u.39028
G : Type u_1
A✝ : Type ?u.39034
S : Type ?u.39037
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : C ≤ A
y z : G
hyA : y ∈ ↑A
hyB : y ∈ ↑B
hz : z ∈ ↑C
⊢ y * z ∈ ↑A ∧ ∃ x y_1, x ∈ ↑B ∧ y_1 ∈ ↑C ∧ x * y_1 = y * z

tactic: exact ⟨y, z, hyB, hz, rfl⟩
state_before: case h.mp.intro.intro.intro.intro.intro
α : Type ?u.39028
G : Type u_1
A✝ : Type ?u.39034
S : Type ?u.39037
inst✝¹ : Group G
inst✝ : AddGroup A✝
s : Set G
A B C : Subgroup G
h : C ≤ A
y z : G
hyA : y ∈ ↑A
hyB : y ∈ ↑B
hz : z ∈ ↑C
⊢ ∃ x y_1, x ∈ ↑B ∧ y_1 ∈ ↑C ∧ x * y_1 = y * z

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