Theorem: Subgroup.eq_one_of_noncommProd_eq_one_of_independent
File: Mathlib/GroupTheory/NoncommPiCoprod.lean

tactic: revert heq1
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
s : Finset ι
f : ι → G
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
K : ι → Subgroup G
hind : CompleteLattice.Independent K
hmem : ∀ x ∈ s, f x ∈ K x
heq1 : s.noncommProd f comm = 1
⊢ ∀ i ∈ s, f i = 1
state_after: G : Type u_1
inst✝ : Group G
ι : Type u_2
s : Finset ι
f : ι → G
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
K : ι → Subgroup G
hind : CompleteLattice.Independent K
hmem : ∀ x ∈ s, f x ∈ K x
⊢ s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1

tactic: induction' s using Finset.induction_on with i s hnmem ih
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
s : Finset ι
f : ι → G
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
K : ι → Subgroup G
hind : CompleteLattice.Independent K
hmem : ∀ x ∈ s, f x ∈ K x
⊢ s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
state_after: case empty
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
comm : (↑∅).Pairwise fun a b => Commute (f a) (f b)
hmem : ∀ x ∈ ∅, f x ∈ K x
⊢ ∅.noncommProd f comm = 1 → ∀ i ∈ ∅, f i = 1

case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hmem : ∀ x ∈ insert i s, f x ∈ K x
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: simp
state_before: case empty
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
comm : (↑∅).Pairwise fun a b => Commute (f a) (f b)
hmem : ∀ x ∈ ∅, f x ∈ K x
⊢ ∅.noncommProd f comm = 1 → ∀ i ∈ ∅, f i = 1
state_after: no goals

tactic: have hcomm := comm.mono (Finset.coe_subset.2 <| Finset.subset_insert _ _)
state_before: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hmem : ∀ x ∈ insert i s, f x ∈ K x
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hmem : ∀ x ∈ insert i s, f x ∈ K x
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: simp only [Finset.forall_mem_insert] at hmem
state_before: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hmem : ∀ x ∈ insert i s, f x ∈ K x
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: have hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ (s : Set ι), K i := by
  refine Subgroup.noncommProd_mem _ _ ?_
  intro x hx
  have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ (f := fun i _ => K i) x hx
  exact this (hmem.2 x hx)
state_before: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: intro heq1
state_before: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
⊢ (insert i s).noncommProd f comm = 1 → ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : (insert i s).noncommProd f comm = 1
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ hnmem] at heq1
state_before: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : (insert i s).noncommProd f comm = 1
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i * s.noncommProd f ⋯ = 1
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: have hnmem' : i ∉ (s : Set ι) := by simpa
state_before: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i * s.noncommProd f ⋯ = 1
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i * s.noncommProd f ⋯ = 1
hnmem' : i ∉ ↑s
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: obtain ⟨heq1i : f i = 1, heq1S : s.noncommProd f _ = 1⟩ :=
  Subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_biSup hnmem') hmem.1 hmem_bsupr heq1
state_before: case insert
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i * s.noncommProd f ⋯ = 1
hnmem' : i ∉ ↑s
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert.intro
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i * s.noncommProd f ⋯ = 1
hnmem' : i ∉ ↑s
heq1i : f i = 1
heq1S : s.noncommProd f hcomm = 1
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1

tactic: intro i h
state_before: case insert.intro
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i * s.noncommProd f ⋯ = 1
hnmem' : i ∉ ↑s
heq1i : f i = 1
heq1S : s.noncommProd f hcomm = 1
⊢ ∀ i_1 ∈ insert i s, f i_1 = 1
state_after: case insert.intro
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i✝ : ι
s : Finset ι
hnmem : i✝ ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i✝ s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i✝ ∈ K i✝ ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i✝ * s.noncommProd f ⋯ = 1
hnmem' : i✝ ∉ ↑s
heq1i : f i✝ = 1
heq1S : s.noncommProd f hcomm = 1
i : ι
h : i ∈ insert i✝ s
⊢ f i = 1

tactic: simp only [Finset.mem_insert] at h
state_before: case insert.intro
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i✝ : ι
s : Finset ι
hnmem : i✝ ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i✝ s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i✝ ∈ K i✝ ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i✝ * s.noncommProd f ⋯ = 1
hnmem' : i✝ ∉ ↑s
heq1i : f i✝ = 1
heq1S : s.noncommProd f hcomm = 1
i : ι
h : i ∈ insert i✝ s
⊢ f i = 1
state_after: case insert.intro
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i✝ : ι
s : Finset ι
hnmem : i✝ ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i✝ s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i✝ ∈ K i✝ ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i✝ * s.noncommProd f ⋯ = 1
hnmem' : i✝ ∉ ↑s
heq1i : f i✝ = 1
heq1S : s.noncommProd f hcomm = 1
i : ι
h : i = i✝ ∨ i ∈ s
⊢ f i = 1

tactic: rcases h with (rfl | h)
state_before: case insert.intro
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i✝ : ι
s : Finset ι
hnmem : i✝ ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i✝ s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i✝ ∈ K i✝ ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i✝ * s.noncommProd f ⋯ = 1
hnmem' : i✝ ∉ ↑s
heq1i : f i✝ = 1
heq1S : s.noncommProd f hcomm = 1
i : ι
h : i = i✝ ∨ i ∈ s
⊢ f i = 1
state_after: case insert.intro.inl
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
s : Finset ι
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1S : s.noncommProd f hcomm = 1
i : ι
hnmem : i ∉ s
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
heq1 : f i * s.noncommProd f ⋯ = 1
hnmem' : i ∉ ↑s
heq1i : f i = 1
⊢ f i = 1

case insert.intro.inr
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i✝ : ι
s : Finset ι
hnmem : i✝ ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i✝ s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i✝ ∈ K i✝ ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i✝ * s.noncommProd f ⋯ = 1
hnmem' : i✝ ∉ ↑s
heq1i : f i✝ = 1
heq1S : s.noncommProd f hcomm = 1
i : ι
h : i ∈ s
⊢ f i = 1

tactic: refine Subgroup.noncommProd_mem _ _ ?_
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
⊢ s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
state_after: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
⊢ ∀ c ∈ s, f c ∈ ⨆ i ∈ ↑s, K i

tactic: intro x hx
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
⊢ ∀ c ∈ s, f c ∈ ⨆ i ∈ ↑s, K i
state_after: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
x : ι
hx : x ∈ s
⊢ f x ∈ ⨆ i ∈ ↑s, K i

tactic: have : K x ≤ ⨆ i ∈ (s : Set ι), K i := le_iSup₂ (f := fun i _ => K i) x hx
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
x : ι
hx : x ∈ s
⊢ f x ∈ ⨆ i ∈ ↑s, K i
state_after: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
x : ι
hx : x ∈ s
this : K x ≤ ⨆ i ∈ ↑s, K i
⊢ f x ∈ ⨆ i ∈ ↑s, K i

tactic: exact this (hmem.2 x hx)
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
x : ι
hx : x ∈ s
this : K x ≤ ⨆ i ∈ ↑s, K i
⊢ f x ∈ ⨆ i ∈ ↑s, K i
state_after: no goals

tactic: simpa
state_before: G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i : ι
s : Finset ι
hnmem : i ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i * s.noncommProd f ⋯ = 1
⊢ i ∉ ↑s
state_after: no goals

tactic: exact heq1i
state_before: case insert.intro.inl
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
s : Finset ι
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1S : s.noncommProd f hcomm = 1
i : ι
hnmem : i ∉ s
comm : (↑(insert i s)).Pairwise fun a b => Commute (f a) (f b)
hmem : f i ∈ K i ∧ ∀ x ∈ s, f x ∈ K x
heq1 : f i * s.noncommProd f ⋯ = 1
hnmem' : i ∉ ↑s
heq1i : f i = 1
⊢ f i = 1
state_after: no goals

tactic: refine ih hcomm hmem.2 heq1S _ h
state_before: case insert.intro.inr
G : Type u_1
inst✝ : Group G
ι : Type u_2
f : ι → G
K : ι → Subgroup G
hind : CompleteLattice.Independent K
i✝ : ι
s : Finset ι
hnmem : i✝ ∉ s
ih :
  ∀ (comm : (↑s).Pairwise fun a b => Commute (f a) (f b)),
    (∀ x ∈ s, f x ∈ K x) → s.noncommProd f comm = 1 → ∀ i ∈ s, f i = 1
comm : (↑(insert i✝ s)).Pairwise fun a b => Commute (f a) (f b)
hcomm : (↑s).Pairwise fun a b => Commute (f a) (f b)
hmem : f i✝ ∈ K i✝ ∧ ∀ x ∈ s, f x ∈ K x
hmem_bsupr : s.noncommProd f hcomm ∈ ⨆ i ∈ ↑s, K i
heq1 : f i✝ * s.noncommProd f ⋯ = 1
hnmem' : i✝ ∉ ↑s
heq1i : f i✝ = 1
heq1S : s.noncommProd f hcomm = 1
i : ι
h : i ∈ s
⊢ f i = 1
state_after: no goals