Theorem: Subgroup.pi_mem_of_mulSingle_mem_aux
File: Mathlib/GroupTheory/Subgroup/Finite.lean

tactic: induction' I using Finset.induction_on with i I hnmem ih generalizing x
state_before: G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I : Finset η
H : Subgroup ((i : η) → f i)
x : (i : η) → f i
h1 : ∀ (i : η), ¬i ∈ I → x i = 1
h2 : ∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H
⊢ x ∈ H

tactic: convert one_mem H
state_before: case empty
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I → Pi.mulSingle i (x✝ i) ∈ H
x : (i : η) → f i
h1 : ∀ (i : η), ¬i ∈ ∅ → x i = 1
h2 : ∀ (i : η), i ∈ ∅ → Pi.mulSingle i (x i) ∈ H
⊢ x ∈ H

tactic: ext i
state_before: case h.e'_4
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I → Pi.mulSingle i (x✝ i) ∈ H
x : (i : η) → f i
h1 : ∀ (i : η), ¬i ∈ ∅ → x i = 1
h2 : ∀ (i : η), i ∈ ∅ → Pi.mulSingle i (x i) ∈ H
⊢ x = 1

tactic: exact h1 i (Finset.not_mem_empty i)
state_before: case h.e'_4.h
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I → Pi.mulSingle i (x✝ i) ∈ H
x : (i : η) → f i
h1 : ∀ (i : η), ¬i ∈ ∅ → x i = 1
h2 : ∀ (i : η), i ∈ ∅ → Pi.mulSingle i (x i) ∈ H
i : η
⊢ x i = OfNat.ofNat 1 i

tactic: rw [this]
state_before: case insert
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
this : x = Function.update x i 1 * Pi.mulSingle i (x i)
⊢ x ∈ H

tactic: clear this
state_before: case insert
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
this : x = Function.update x i 1 * Pi.mulSingle i (x i)
⊢ Function.update x i 1 * Pi.mulSingle i (x i) ∈ H

tactic: apply mul_mem
state_before: case insert
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
⊢ Function.update x i 1 * Pi.mulSingle i (x i) ∈ H

tactic: ext j
state_before: G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
⊢ x = Function.update x i 1 * Pi.mulSingle i (x i)

tactic: by_cases heq : j = i
state_before: case h
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
⊢ x j = (Function.update x i 1 * Pi.mulSingle i (x i)) j

tactic: subst heq
state_before: case pos
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
heq : j = i
⊢ x j = (Function.update x i 1 * Pi.mulSingle i (x i)) j

tactic: simp
state_before: case pos
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
I : Finset η
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
j : η
hnmem : ¬j ∈ I
h1 : ∀ (i : η), ¬i ∈ insert j I → x i = 1
h2 : ∀ (i : η), i ∈ insert j I → Pi.mulSingle i (x i) ∈ H
⊢ x j = (Function.update x j 1 * Pi.mulSingle j (x j)) j

tactic: simp [heq]
state_before: case neg
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
heq : ¬j = i
⊢ x j = (Function.update x i 1 * Pi.mulSingle i (x i)) j

tactic: apply ih <;> clear ih
state_before: case insert.a
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
⊢ Function.update x i 1 ∈ H

tactic: intro j hj
state_before: case insert.a.h1
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
⊢ ∀ (i_1 : η), ¬i_1 ∈ I → Function.update x i 1 i_1 = 1

tactic: by_cases heq : j = i
state_before: case insert.a.h1
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : ¬j ∈ I
⊢ Function.update x i 1 j = 1

tactic: subst heq
state_before: case pos
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : ¬j ∈ I
heq : j = i
⊢ Function.update x i 1 j = 1

tactic: simp
state_before: case pos
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
I : Finset η
x : (i : η) → f i
j : η
hj hnmem : ¬j ∈ I
h1 : ∀ (i : η), ¬i ∈ insert j I → x i = 1
h2 : ∀ (i : η), i ∈ insert j I → Pi.mulSingle i (x i) ∈ H
⊢ Function.update x j 1 j = 1

tactic: simp [heq]
state_before: case neg
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : ¬j ∈ I
heq : ¬j = i
⊢ Function.update x i 1 j = 1

tactic: apply h1 j
state_before: case neg
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : ¬j ∈ I
heq : ¬j = i
⊢ x j = 1

tactic: simpa [heq] using hj
state_before: case neg
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : ¬j ∈ I
heq : ¬j = i
⊢ ¬j ∈ insert i I

tactic: intro j hj
state_before: case insert.a.h2
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
⊢ ∀ (i_1 : η), i_1 ∈ I → Pi.mulSingle i_1 (Function.update x i 1 i_1) ∈ H

tactic: have : j ≠ i := by
  rintro rfl
  contradiction
state_before: case insert.a.h2
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : j ∈ I
⊢ Pi.mulSingle j (Function.update x i 1 j) ∈ H

tactic: simp [this]
state_before: case insert.a.h2
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : j ∈ I
this : j ≠ i
⊢ Pi.mulSingle j (Function.update x i 1 j) ∈ H

tactic: exact h2 _ (Finset.mem_insert_of_mem hj)
state_before: case insert.a.h2
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : j ∈ I
this : j ≠ i
⊢ Pi.mulSingle j (x j) ∈ H

tactic: rintro rfl
state_before: G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
j : η
hj : j ∈ I
⊢ j ≠ i

tactic: contradiction
state_before: G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
I : Finset η
x : (i : η) → f i
j : η
hj : j ∈ I
hnmem : ¬j ∈ I
h1 : ∀ (i : η), ¬i ∈ insert j I → x i = 1
h2 : ∀ (i : η), i ∈ insert j I → Pi.mulSingle i (x i) ∈ H
⊢ False

tactic: apply h2
state_before: case insert.a
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
⊢ Pi.mulSingle i (x i) ∈ H

tactic: simp
state_before: case insert.a.a
G : Type ?u.19680
inst✝³ : Group G
A : Type ?u.19686
inst✝² : AddGroup A
η : Type u_1
f : η → Type u_2
inst✝¹ : (i : η) → Group (f i)
inst✝ : DecidableEq η
I✝ : Finset η
H : Subgroup ((i : η) → f i)
x✝ : (i : η) → f i
h1✝ : ∀ (i : η), ¬i ∈ I✝ → x✝ i = 1
h2✝ : ∀ (i : η), i ∈ I✝ → Pi.mulSingle i (x✝ i) ∈ H
i : η
I : Finset η
hnmem : ¬i ∈ I
ih : ∀ (x : (i : η) → f i), (∀ (i : η), ¬i ∈ I → x i = 1) → (∀ (i : η), i ∈ I → Pi.mulSingle i (x i) ∈ H) → x ∈ H
x : (i : η) → f i
h1 : ∀ (i_1 : η), ¬i_1 ∈ insert i I → x i_1 = 1
h2 : ∀ (i_1 : η), i_1 ∈ insert i I → Pi.mulSingle i_1 (x i_1) ∈ H
⊢ i ∈ insert i I