Theorem: SubmodulesRingBasis.toRing_subgroups_basis
File: Mathlib/Topology/Algebra/Nonarchimedean/Bases.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
⊢ RingSubgroupsBasis fun i => (B i).toAddSubgroup
state_after: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
⊢ ∀ (x : A) (i : ι), ∃ j, ↑(B j).toAddSubgroup ⊆ (fun y => x * y) ⁻¹' ↑(B i).toAddSubgroup
tactic: apply RingSubgroupsBasis.of_comm (fun i => (B i).toAddSubgroup) hB.inter hB.mul
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
⊢ ∀ (x : A) (i : ι), ∃ j, ↑(B j).toAddSubgroup ⊆ (fun y => x * y) ⁻¹' ↑(B i).toAddSubgroup
state_after: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i : ι
⊢ ∃ j, ↑(B j).toAddSubgroup ⊆ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
tactic: intro a i
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i : ι
⊢ ∃ j, ↑(B j).toAddSubgroup ⊆ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
state_after: case intro
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i j : ι
hj : a • B j ≤ B i
⊢ ∃ j, ↑(B j).toAddSubgroup ⊆ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
tactic: rcases hB.leftMul a i with ⟨j, hj⟩
state_before: case intro
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i j : ι
hj : a • B j ≤ B i
⊢ ∃ j, ↑(B j).toAddSubgroup ⊆ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
state_after: case h
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i j : ι
hj : a • B j ≤ B i
⊢ ↑(B j).toAddSubgroup ⊆ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
tactic: use j
state_before: case h
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i j : ι
hj : a • B j ≤ B i
⊢ ↑(B j).toAddSubgroup ⊆ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
state_after: case h
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i j : ι
hj : a • B j ≤ B i
b : A
b_in : b ∈ B j
⊢ b ∈ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
tactic: rintro b (b_in : b ∈ B j)
state_before: case h
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
B : ι → Submodule R A
hB✝ hB : SubmodulesRingBasis B
a : A
i j : ι
hj : a • B j ≤ B i
b : A
b_in : b ∈ B j
⊢ b ∈ (fun y => a * y) ⁻¹' ↑(B i).toAddSubgroup
state_after: no goals
tactic: exact hj ⟨b, b_in, rfl⟩