topology.algebra.nonarchimedean.basesMathlib.Topology.Algebra.Nonarchimedean.Bases

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
 -/
-import Mathbin.Topology.Algebra.Nonarchimedean.Basic
-import Mathbin.Topology.Algebra.FilterBasis
-import Mathbin.Algebra.Module.Submodule.Pointwise
+import Topology.Algebra.Nonarchimedean.Basic
+import Topology.Algebra.FilterBasis
+import Algebra.Module.Submodule.Pointwise
 
 #align_import topology.algebra.nonarchimedean.bases from "leanprover-community/mathlib"@"ce38d86c0b2d427ce208c3cee3159cb421d2b3c4"
 
Diff
@@ -97,11 +97,11 @@ def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgrou
     rintro _ ⟨i, rfl⟩
     cases' hB.mul i with k hk
     use B k, k, rfl, hk
-  mul_left' := by
+  hMul_left' := by
     rintro x₀ _ ⟨i, rfl⟩
     cases' hB.left_mul x₀ i with k hk
     use B k, k, rfl, hk
-  mul_right' := by
+  hMul_right' := by
     rintro x₀ _ ⟨i, rfl⟩
     cases' hB.right_mul x₀ i with k hk
     use B k, k, rfl, hk
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
-
-! This file was ported from Lean 3 source module topology.algebra.nonarchimedean.bases
-! leanprover-community/mathlib commit ce38d86c0b2d427ce208c3cee3159cb421d2b3c4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Algebra.Nonarchimedean.Basic
 import Mathbin.Topology.Algebra.FilterBasis
 import Mathbin.Algebra.Module.Submodule.Pointwise
 
+#align_import topology.algebra.nonarchimedean.bases from "leanprover-community/mathlib"@"ce38d86c0b2d427ce208c3cee3159cb421d2b3c4"
+
 /-!
 # Neighborhood bases for non-archimedean rings and modules
 
Diff
@@ -39,6 +39,7 @@ open Set Filter Function Lattice AddGroupWithZeroNhd
 
 open scoped Topology Filter Pointwise
 
+#print RingSubgroupsBasis /-
 /-- A family of additive subgroups on a ring `A` is a subgroups basis if it satisfies some
 axioms ensuring there is a topology on `A` which is compatible with the ring structure and
 admits this family as a basis of neighborhoods of zero. -/
@@ -48,11 +49,13 @@ structure RingSubgroupsBasis {A ι : Type _} [Ring A] (B : ι → AddSubgroup A)
   leftMul : ∀ x : A, ∀ i, ∃ j, (B j : Set A) ⊆ (fun y : A => x * y) ⁻¹' B i
   rightMul : ∀ x : A, ∀ i, ∃ j, (B j : Set A) ⊆ (fun y : A => y * x) ⁻¹' B i
 #align ring_subgroups_basis RingSubgroupsBasis
+-/
 
 namespace RingSubgroupsBasis
 
 variable {A ι : Type _} [Ring A]
 
+#print RingSubgroupsBasis.of_comm /-
 theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
     (inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j) (mul : ∀ i, ∃ j, (B j : Set A) * B j ⊆ B i)
     (left_mul : ∀ x : A, ∀ i, ∃ j, (B j : Set A) ⊆ (fun y : A => x * y) ⁻¹' B i) :
@@ -66,7 +69,9 @@ theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
       use j
       simpa [mul_comm] using hj }
 #align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_comm
+-/
 
+#print RingSubgroupsBasis.toRingFilterBasis /-
 /-- Every subgroups basis on a ring leads to a ring filter basis. -/
 def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B) :
     RingFilterBasis A where
@@ -104,24 +109,32 @@ def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgrou
     cases' hB.right_mul x₀ i with k hk
     use B k, k, rfl, hk
 #align ring_subgroups_basis.to_ring_filter_basis RingSubgroupsBasis.toRingFilterBasis
+-/
 
 variable [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B)
 
+#print RingSubgroupsBasis.mem_addGroupFilterBasis_iff /-
 theorem mem_addGroupFilterBasis_iff {V : Set A} :
     V ∈ hB.toRingFilterBasis.toAddGroupFilterBasis ↔ ∃ i, V = B i :=
   Iff.rfl
 #align ring_subgroups_basis.mem_add_group_filter_basis_iff RingSubgroupsBasis.mem_addGroupFilterBasis_iff
+-/
 
+#print RingSubgroupsBasis.mem_addGroupFilterBasis /-
 theorem mem_addGroupFilterBasis (i) : (B i : Set A) ∈ hB.toRingFilterBasis.toAddGroupFilterBasis :=
   ⟨i, rfl⟩
 #align ring_subgroups_basis.mem_add_group_filter_basis RingSubgroupsBasis.mem_addGroupFilterBasis
+-/
 
+#print RingSubgroupsBasis.topology /-
 /-- The topology defined from a subgroups basis, admitting the given subgroups as a basis
 of neighborhoods of zero. -/
 def topology : TopologicalSpace A :=
   hB.toRingFilterBasis.toAddGroupFilterBasis.topology
 #align ring_subgroups_basis.topology RingSubgroupsBasis.topology
+-/
 
+#print RingSubgroupsBasis.hasBasis_nhds_zero /-
 theorem hasBasis_nhds_zero : HasBasis (@nhds A hB.topology 0) (fun _ => True) fun i => B i :=
   ⟨by
     intro s
@@ -132,7 +145,9 @@ theorem hasBasis_nhds_zero : HasBasis (@nhds A hB.topology 0) (fun _ => True) fu
     · rintro ⟨i, -, hi⟩
       exact ⟨B i, ⟨i, rfl⟩, hi⟩⟩
 #align ring_subgroups_basis.has_basis_nhds_zero RingSubgroupsBasis.hasBasis_nhds_zero
+-/
 
+#print RingSubgroupsBasis.hasBasis_nhds /-
 theorem hasBasis_nhds (a : A) :
     HasBasis (@nhds A hB.topology a) (fun _ => True) fun i => {b | b - a ∈ B i} :=
   ⟨by
@@ -157,7 +172,9 @@ theorem hasBasis_nhds (a : A) :
       apply hi
       simpa using b_in⟩
 #align ring_subgroups_basis.has_basis_nhds RingSubgroupsBasis.hasBasis_nhds
+-/
 
+#print RingSubgroupsBasis.openAddSubgroup /-
 /-- Given a subgroups basis, the basis elements as open additive subgroups in the associated
 topology. -/
 def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
@@ -171,7 +188,9 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
       rintro b b_in
       simpa using (B i).add_mem a_in b_in }
 #align ring_subgroups_basis.open_add_subgroup RingSubgroupsBasis.openAddSubgroup
+-/
 
+#print RingSubgroupsBasis.nonarchimedean /-
 -- see Note [nonarchimedean non instances]
 theorem nonarchimedean : @NonarchimedeanRing A _ hB.topology :=
   by
@@ -181,6 +200,7 @@ theorem nonarchimedean : @NonarchimedeanRing A _ hB.topology :=
   obtain ⟨i, -, hi : (B i : Set A) ⊆ U⟩ := hB.has_basis_nhds_zero.mem_iff.mp hU
   exact ⟨hB.open_add_subgroup i, hi⟩
 #align ring_subgroups_basis.nonarchimedean RingSubgroupsBasis.nonarchimedean
+-/
 
 end RingSubgroupsBasis
 
@@ -201,6 +221,7 @@ namespace SubmodulesRingBasis
 
 variable {B : ι → Submodule R A} (hB : SubmodulesRingBasis B)
 
+#print SubmodulesRingBasis.toRing_subgroups_basis /-
 theorem toRing_subgroups_basis (hB : SubmodulesRingBasis B) :
     RingSubgroupsBasis fun i => (B i).toAddSubgroup :=
   by
@@ -211,6 +232,7 @@ theorem toRing_subgroups_basis (hB : SubmodulesRingBasis B) :
   rintro b (b_in : b ∈ B j)
   exact hj ⟨b, b_in, rfl⟩
 #align submodules_ring_basis.to_ring_subgroups_basis SubmodulesRingBasis.toRing_subgroups_basis
+-/
 
 #print SubmodulesRingBasis.topology /-
 /-- The topology associated to a basis of submodules in an algebra. -/
@@ -237,8 +259,6 @@ namespace SubmodulesBasis
 
 variable [TopologicalSpace R] [Nonempty ι] {B : ι → Submodule R M} (hB : SubmodulesBasis B)
 
-include hB
-
 #print SubmodulesBasis.toModuleFilterBasis /-
 /-- The image of a submodules basis is a module filter basis. -/
 def toModuleFilterBasis : ModuleFilterBasis R M
@@ -303,6 +323,7 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup M _ hB.topology :=
 #align submodules_basis.open_add_subgroup SubmodulesBasis.openAddSubgroup
 -/
 
+#print SubmodulesBasis.nonarchimedean /-
 -- see Note [nonarchimedean non instances]
 theorem nonarchimedean (hB : SubmodulesBasis B) : @NonarchimedeanAddGroup M _ hB.topology :=
   by
@@ -313,6 +334,7 @@ theorem nonarchimedean (hB : SubmodulesBasis B) : @NonarchimedeanAddGroup M _ hB
     hB.to_module_filter_basis.to_add_group_filter_basis.nhds_zero_has_basis.mem_iff.mp hU
   exact ⟨hB.open_add_subgroup i, hi⟩
 #align submodules_basis.nonarchimedean SubmodulesBasis.nonarchimedean
+-/
 
 library_note "nonarchimedean non instances"/--
 The non archimedean subgroup basis lemmas cannot be instances because some instances
@@ -334,10 +356,12 @@ view definitionaly gives the same topology on `A`.
 variable [TopologicalSpace R] {B : ι → Submodule R A} (hB : SubmodulesRingBasis B)
   (hsmul : ∀ (m : A) (i : ι), ∀ᶠ a : R in 𝓝 0, a • m ∈ B i)
 
+#print SubmodulesRingBasis.toSubmodulesBasis /-
 theorem SubmodulesRingBasis.toSubmodulesBasis : SubmodulesBasis B :=
   { inter := hB.inter
     smul := hsmul }
 #align submodules_ring_basis.to_submodules_basis SubmodulesRingBasis.toSubmodulesBasis
+-/
 
 example [Nonempty ι] : hB.topology = (hB.toSubmodulesBasis hsmul).topology :=
   rfl
@@ -355,6 +379,7 @@ structure RingFilterBasis.SubmodulesBasis (BR : RingFilterBasis R) (B : ι → S
 #align ring_filter_basis.submodules_basis RingFilterBasis.SubmodulesBasis
 -/
 
+#print RingFilterBasis.submodulesBasisIsBasis /-
 theorem RingFilterBasis.submodulesBasisIsBasis (BR : RingFilterBasis R) {B : ι → Submodule R M}
     (hB : BR.SubmodulesBasis B) : @SubmodulesBasis ι R _ M _ _ BR.topology B :=
   { inter := hB.inter
@@ -364,6 +389,7 @@ theorem RingFilterBasis.submodulesBasisIsBasis (BR : RingFilterBasis R) {B : ι
       rcases hB.smul m i with ⟨V, V_in, hV⟩
       exact mem_of_superset (BR.to_add_group_filter_basis.mem_nhds_zero V_in) hV }
 #align ring_filter_basis.submodules_basis_is_basis RingFilterBasis.submodulesBasisIsBasis
+-/
 
 #print RingFilterBasis.moduleFilterBasis /-
 /-- The module filter basis associated to a ring filter basis and a compatible submodule basis.
Diff
@@ -70,7 +70,7 @@ theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
 /-- Every subgroups basis on a ring leads to a ring filter basis. -/
 def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B) :
     RingFilterBasis A where
-  sets := { U | ∃ i, U = B i }
+  sets := {U | ∃ i, U = B i}
   Nonempty := by inhabit ι; exact ⟨B default, default, rfl⟩
   inter_sets := by
     rintro _ _ ⟨i, rfl⟩ ⟨j, rfl⟩
@@ -134,7 +134,7 @@ theorem hasBasis_nhds_zero : HasBasis (@nhds A hB.topology 0) (fun _ => True) fu
 #align ring_subgroups_basis.has_basis_nhds_zero RingSubgroupsBasis.hasBasis_nhds_zero
 
 theorem hasBasis_nhds (a : A) :
-    HasBasis (@nhds A hB.topology a) (fun _ => True) fun i => { b | b - a ∈ B i } :=
+    HasBasis (@nhds A hB.topology a) (fun _ => True) fun i => {b | b - a ∈ B i} :=
   ⟨by
     intro s
     rw [(hB.to_ring_filter_basis.to_add_group_filter_basis.nhds_has_basis a).mem_iff]
@@ -243,7 +243,7 @@ include hB
 /-- The image of a submodules basis is a module filter basis. -/
 def toModuleFilterBasis : ModuleFilterBasis R M
     where
-  sets := { U | ∃ i, U = B i }
+  sets := {U | ∃ i, U = B i}
   Nonempty := by inhabit ι; exact ⟨B default, default, rfl⟩
   inter_sets := by
     rintro _ _ ⟨i, rfl⟩ ⟨j, rfl⟩
Diff
@@ -349,7 +349,7 @@ end
 on a family of submodules of a `R`-module `M`. This compatibility condition allows to get
 a topological module structure. -/
 structure RingFilterBasis.SubmodulesBasis (BR : RingFilterBasis R) (B : ι → Submodule R M) :
-  Prop where
+    Prop where
   inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j
   smul : ∀ (m : M) (i : ι), ∃ U ∈ BR, U ⊆ (fun a => a • m) ⁻¹' B i
 #align ring_filter_basis.submodules_basis RingFilterBasis.SubmodulesBasis
Diff
@@ -37,7 +37,7 @@ sub-modules in a commutative algebra. This important example gives rises to the
 
 open Set Filter Function Lattice AddGroupWithZeroNhd
 
-open Topology Filter Pointwise
+open scoped Topology Filter Pointwise
 
 /-- A family of additive subgroups on a ring `A` is a subgroups basis if it satisfies some
 axioms ensuring there is a topology on `A` which is compatible with the ring structure and
Diff
@@ -39,12 +39,6 @@ open Set Filter Function Lattice AddGroupWithZeroNhd
 
 open Topology Filter Pointwise
 
-/- warning: ring_subgroups_basis -> RingSubgroupsBasis is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A], (ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))) -> Prop
-but is expected to have type
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A], (ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))) -> Prop
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis RingSubgroupsBasisₓ'. -/
 /-- A family of additive subgroups on a ring `A` is a subgroups basis if it satisfies some
 axioms ensuring there is a topology on `A` which is compatible with the ring structure and
 admits this family as a basis of neighborhoods of zero. -/
@@ -59,9 +53,6 @@ namespace RingSubgroupsBasis
 
 variable {A ι : Type _} [Ring A]
 
-/- warning: ring_subgroups_basis.of_comm -> RingSubgroupsBasis.of_comm is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_commₓ'. -/
 theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
     (inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j) (mul : ∀ i, ∃ j, (B j : Set A) * B j ⊆ B i)
     (left_mul : ∀ x : A, ∀ i, ∃ j, (B j : Set A) ⊆ (fun y : A => x * y) ⁻¹' B i) :
@@ -76,12 +67,6 @@ theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
       simpa [mul_comm] using hj }
 #align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_comm
 
-/- warning: ring_subgroups_basis.to_ring_filter_basis -> RingSubgroupsBasis.toRingFilterBasis is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (RingFilterBasis.{u1} A _inst_1)
-but is expected to have type
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (RingFilterBasis.{u1} A _inst_1)
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.to_ring_filter_basis RingSubgroupsBasis.toRingFilterBasisₓ'. -/
 /-- Every subgroups basis on a ring leads to a ring filter basis. -/
 def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B) :
     RingFilterBasis A where
@@ -122,45 +107,21 @@ def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgrou
 
 variable [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B)
 
-/- warning: ring_subgroups_basis.mem_add_group_filter_basis_iff -> RingSubgroupsBasis.mem_addGroupFilterBasis_iff is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) {V : Set.{u1} A}, Iff (Membership.Mem.{u1, u1} (Set.{u1} A) (AddGroupFilterBasis.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (AddGroupFilterBasis.hasMem.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) V (RingFilterBasis.toAddGroupFilterBasis.{u1} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u1, u2} A ι _inst_1 _inst_2 B hB))) (Exists.{succ u2} ι (fun (i : ι) => Eq.{succ u1} (Set.{u1} A) V ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))))) (B i))))
-but is expected to have type
-  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B) {V : Set.{u2} A}, Iff (Membership.mem.{u2, u2} (Set.{u2} A) (AddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (AddGroupFilterBasis.instMembershipSetAddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) V (RingFilterBasis.toAddGroupFilterBasis.{u2} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u2, u1} A ι _inst_1 _inst_2 B hB))) (Exists.{succ u1} ι (fun (i : ι) => Eq.{succ u2} (Set.{u2} A) V (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (B i))))
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.mem_add_group_filter_basis_iff RingSubgroupsBasis.mem_addGroupFilterBasis_iffₓ'. -/
 theorem mem_addGroupFilterBasis_iff {V : Set A} :
     V ∈ hB.toRingFilterBasis.toAddGroupFilterBasis ↔ ∃ i, V = B i :=
   Iff.rfl
 #align ring_subgroups_basis.mem_add_group_filter_basis_iff RingSubgroupsBasis.mem_addGroupFilterBasis_iff
 
-/- warning: ring_subgroups_basis.mem_add_group_filter_basis -> RingSubgroupsBasis.mem_addGroupFilterBasis is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) (i : ι), Membership.Mem.{u1, u1} (Set.{u1} A) (AddGroupFilterBasis.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (AddGroupFilterBasis.hasMem.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))))) (B i)) (RingFilterBasis.toAddGroupFilterBasis.{u1} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u1, u2} A ι _inst_1 _inst_2 B hB))
-but is expected to have type
-  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B) (i : ι), Membership.mem.{u2, u2} (Set.{u2} A) (AddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (AddGroupFilterBasis.instMembershipSetAddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (B i)) (RingFilterBasis.toAddGroupFilterBasis.{u2} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u2, u1} A ι _inst_1 _inst_2 B hB))
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.mem_add_group_filter_basis RingSubgroupsBasis.mem_addGroupFilterBasisₓ'. -/
 theorem mem_addGroupFilterBasis (i) : (B i : Set A) ∈ hB.toRingFilterBasis.toAddGroupFilterBasis :=
   ⟨i, rfl⟩
 #align ring_subgroups_basis.mem_add_group_filter_basis RingSubgroupsBasis.mem_addGroupFilterBasis
 
-/- warning: ring_subgroups_basis.topology -> RingSubgroupsBasis.topology is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (TopologicalSpace.{u1} A)
-but is expected to have type
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (TopologicalSpace.{u1} A)
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.topology RingSubgroupsBasis.topologyₓ'. -/
 /-- The topology defined from a subgroups basis, admitting the given subgroups as a basis
 of neighborhoods of zero. -/
 def topology : TopologicalSpace A :=
   hB.toRingFilterBasis.toAddGroupFilterBasis.topology
 #align ring_subgroups_basis.topology RingSubgroupsBasis.topology
 
-/- warning: ring_subgroups_basis.has_basis_nhds_zero -> RingSubgroupsBasis.hasBasis_nhds_zero is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), Filter.HasBasis.{u1, succ u2} A ι (nhds.{u1} A (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB) (OfNat.ofNat.{u1} A 0 (OfNat.mk.{u1} A 0 (Zero.zero.{u1} A (MulZeroClass.toHasZero.{u1} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A _inst_1))))))))) (fun (_x : ι) => True) (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))))) (B i))
-but is expected to have type
-  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B), Filter.HasBasis.{u2, succ u1} A ι (nhds.{u2} A (RingSubgroupsBasis.topology.{u2, u1} A ι _inst_1 _inst_2 B hB) (OfNat.ofNat.{u2} A 0 (Zero.toOfNat0.{u2} A (MonoidWithZero.toZero.{u2} A (Semiring.toMonoidWithZero.{u2} A (Ring.toSemiring.{u2} A _inst_1)))))) (fun (_x : ι) => True) (fun (i : ι) => SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (B i))
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.has_basis_nhds_zero RingSubgroupsBasis.hasBasis_nhds_zeroₓ'. -/
 theorem hasBasis_nhds_zero : HasBasis (@nhds A hB.topology 0) (fun _ => True) fun i => B i :=
   ⟨by
     intro s
@@ -172,12 +133,6 @@ theorem hasBasis_nhds_zero : HasBasis (@nhds A hB.topology 0) (fun _ => True) fu
       exact ⟨B i, ⟨i, rfl⟩, hi⟩⟩
 #align ring_subgroups_basis.has_basis_nhds_zero RingSubgroupsBasis.hasBasis_nhds_zero
 
-/- warning: ring_subgroups_basis.has_basis_nhds -> RingSubgroupsBasis.hasBasis_nhds is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) (a : A), Filter.HasBasis.{u1, succ u2} A ι (nhds.{u1} A (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB) a) (fun (_x : ι) => True) (fun (i : ι) => setOf.{u1} A (fun (b : A) => Membership.Mem.{u1, u1} A (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))) (HSub.hSub.{u1, u1, u1} A A A (instHSub.{u1} A (SubNegMonoid.toHasSub.{u1} A (AddGroup.toSubNegMonoid.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))))) b a) (B i)))
-but is expected to have type
-  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B) (a : A), Filter.HasBasis.{u2, succ u1} A ι (nhds.{u2} A (RingSubgroupsBasis.topology.{u2, u1} A ι _inst_1 _inst_2 B hB) a) (fun (_x : ι) => True) (fun (i : ι) => setOf.{u2} A (fun (b : A) => Membership.mem.{u2, u2} A (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))) (HSub.hSub.{u2, u2, u2} A A A (instHSub.{u2} A (Ring.toSub.{u2} A _inst_1)) b a) (B i)))
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.has_basis_nhds RingSubgroupsBasis.hasBasis_nhdsₓ'. -/
 theorem hasBasis_nhds (a : A) :
     HasBasis (@nhds A hB.topology a) (fun _ => True) fun i => { b | b - a ∈ B i } :=
   ⟨by
@@ -203,12 +158,6 @@ theorem hasBasis_nhds (a : A) :
       simpa using b_in⟩
 #align ring_subgroups_basis.has_basis_nhds RingSubgroupsBasis.hasBasis_nhds
 
-/- warning: ring_subgroups_basis.open_add_subgroup -> RingSubgroupsBasis.openAddSubgroup is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), ι -> (OpenAddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))) (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB))
-but is expected to have type
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), ι -> (OpenAddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)) (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB))
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.open_add_subgroup RingSubgroupsBasis.openAddSubgroupₓ'. -/
 /-- Given a subgroups basis, the basis elements as open additive subgroups in the associated
 topology. -/
 def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
@@ -223,12 +172,6 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
       simpa using (B i).add_mem a_in b_in }
 #align ring_subgroups_basis.open_add_subgroup RingSubgroupsBasis.openAddSubgroup
 
-/- warning: ring_subgroups_basis.nonarchimedean -> RingSubgroupsBasis.nonarchimedean is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), NonarchimedeanRing.{u1} A _inst_1 (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB)
-but is expected to have type
-  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B), NonarchimedeanRing.{u2} A _inst_1 (RingSubgroupsBasis.topology.{u2, u1} A ι _inst_1 _inst_2 B hB)
-Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.nonarchimedean RingSubgroupsBasis.nonarchimedeanₓ'. -/
 -- see Note [nonarchimedean non instances]
 theorem nonarchimedean : @NonarchimedeanRing A _ hB.topology :=
   by
@@ -258,12 +201,6 @@ namespace SubmodulesRingBasis
 
 variable {B : ι → Submodule R A} (hB : SubmodulesRingBasis B)
 
-/- warning: submodules_ring_basis.to_ring_subgroups_basis -> SubmodulesRingBasis.toRing_subgroups_basis is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u3} A] [_inst_3 : Algebra.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))] {B : ι -> (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u1, u2, u3} ι R A _inst_1 _inst_2 _inst_3 B) -> (RingSubgroupsBasis.{u3, u1} A ι (CommRing.toRing.{u3} A _inst_2) (fun (i : ι) => Submodule.toAddSubgroup.{u2, u3} R A (CommRing.toRing.{u2} R _inst_1) (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2)))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3) (B i)))
-but is expected to have type
-  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2))] {B : ι -> (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (RingSubgroupsBasis.{u1, u3} A ι (CommRing.toRing.{u1} A _inst_2) (fun (i : ι) => Submodule.toAddSubgroup.{u2, u1} R A (CommRing.toRing.{u2} R _inst_1) (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3) (B i)))
-Case conversion may be inaccurate. Consider using '#align submodules_ring_basis.to_ring_subgroups_basis SubmodulesRingBasis.toRing_subgroups_basisₓ'. -/
 theorem toRing_subgroups_basis (hB : SubmodulesRingBasis B) :
     RingSubgroupsBasis fun i => (B i).toAddSubgroup :=
   by
@@ -366,12 +303,6 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup M _ hB.topology :=
 #align submodules_basis.open_add_subgroup SubmodulesBasis.openAddSubgroup
 -/
 
-/- warning: submodules_basis.nonarchimedean -> SubmodulesBasis.nonarchimedean is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M] [_inst_5 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4)] [_inst_6 : TopologicalSpace.{u2} R] [_inst_7 : Nonempty.{succ u1} ι] {B : ι -> (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4) _inst_5)} (hB : SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 _inst_6 B), NonarchimedeanAddGroup.{u3} M (AddCommGroup.toAddGroup.{u3} M _inst_4) (SubmodulesBasis.topology.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 _inst_6 _inst_7 B hB)
-but is expected to have type
-  forall {ι : Type.{u3}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u1}} [_inst_4 : AddCommGroup.{u1} M] [_inst_5 : Module.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4)] [_inst_6 : TopologicalSpace.{u2} R] [_inst_7 : Nonempty.{succ u3} ι] {B : ι -> (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4) _inst_5)} (hB : SubmodulesBasis.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 B), NonarchimedeanAddGroup.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_4) (SubmodulesBasis.topology.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 _inst_7 B hB)
-Case conversion may be inaccurate. Consider using '#align submodules_basis.nonarchimedean SubmodulesBasis.nonarchimedeanₓ'. -/
 -- see Note [nonarchimedean non instances]
 theorem nonarchimedean (hB : SubmodulesBasis B) : @NonarchimedeanAddGroup M _ hB.topology :=
   by
@@ -403,9 +334,6 @@ view definitionaly gives the same topology on `A`.
 variable [TopologicalSpace R] {B : ι → Submodule R A} (hB : SubmodulesRingBasis B)
   (hsmul : ∀ (m : A) (i : ι), ∀ᶠ a : R in 𝓝 0, a • m ∈ B i)
 
-/- warning: submodules_ring_basis.to_submodules_basis -> SubmodulesRingBasis.toSubmodulesBasis is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submodules_ring_basis.to_submodules_basis SubmodulesRingBasis.toSubmodulesBasisₓ'. -/
 theorem SubmodulesRingBasis.toSubmodulesBasis : SubmodulesBasis B :=
   { inter := hB.inter
     smul := hsmul }
@@ -427,12 +355,6 @@ structure RingFilterBasis.SubmodulesBasis (BR : RingFilterBasis R) (B : ι → S
 #align ring_filter_basis.submodules_basis RingFilterBasis.SubmodulesBasis
 -/
 
-/- warning: ring_filter_basis.submodules_basis_is_basis -> RingFilterBasis.submodulesBasisIsBasis is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M] [_inst_5 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4)] (BR : RingFilterBasis.{u2} R (CommRing.toRing.{u2} R _inst_1)) {B : ι -> (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4) _inst_5)}, (RingFilterBasis.SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 BR B) -> (SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 (RingFilterBasis.topology.{u2} R (CommRing.toRing.{u2} R _inst_1) BR) B)
-but is expected to have type
-  forall {ι : Type.{u1}} {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] {M : Type.{u2}} [_inst_4 : AddCommGroup.{u2} M] [_inst_5 : Module.{u3, u2} R M (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4)] (BR : RingFilterBasis.{u3} R (CommRing.toRing.{u3} R _inst_1)) {B : ι -> (Submodule.{u3, u2} R M (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4) _inst_5)}, (RingFilterBasis.SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 BR B) -> (SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 (RingFilterBasis.topology.{u3} R (CommRing.toRing.{u3} R _inst_1) BR) B)
-Case conversion may be inaccurate. Consider using '#align ring_filter_basis.submodules_basis_is_basis RingFilterBasis.submodulesBasisIsBasisₓ'. -/
 theorem RingFilterBasis.submodulesBasisIsBasis (BR : RingFilterBasis R) {B : ι → Submodule R M}
     (hB : BR.SubmodulesBasis B) : @SubmodulesBasis ι R _ M _ _ BR.topology B :=
   { inter := hB.inter
Diff
@@ -86,16 +86,12 @@ Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.t
 def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B) :
     RingFilterBasis A where
   sets := { U | ∃ i, U = B i }
-  Nonempty := by
-    inhabit ι
-    exact ⟨B default, default, rfl⟩
+  Nonempty := by inhabit ι; exact ⟨B default, default, rfl⟩
   inter_sets := by
     rintro _ _ ⟨i, rfl⟩ ⟨j, rfl⟩
     cases' hB.inter i j with k hk
     use B k, k, rfl, hk
-  zero' := by
-    rintro _ ⟨i, rfl⟩
-    exact (B i).zero_mem
+  zero' := by rintro _ ⟨i, rfl⟩; exact (B i).zero_mem
   add' := by
     rintro _ ⟨i, rfl⟩
     use B i, i, rfl
@@ -311,16 +307,12 @@ include hB
 def toModuleFilterBasis : ModuleFilterBasis R M
     where
   sets := { U | ∃ i, U = B i }
-  Nonempty := by
-    inhabit ι
-    exact ⟨B default, default, rfl⟩
+  Nonempty := by inhabit ι; exact ⟨B default, default, rfl⟩
   inter_sets := by
     rintro _ _ ⟨i, rfl⟩ ⟨j, rfl⟩
     cases' hB.inter i j with k hk
     use B k, k, rfl, hk
-  zero' := by
-    rintro _ ⟨i, rfl⟩
-    exact (B i).zero_mem
+  zero' := by rintro _ ⟨i, rfl⟩; exact (B i).zero_mem
   add' := by
     rintro _ ⟨i, rfl⟩
     use B i, i, rfl
Diff
@@ -60,10 +60,7 @@ namespace RingSubgroupsBasis
 variable {A ι : Type _} [Ring A]
 
 /- warning: ring_subgroups_basis.of_comm -> RingSubgroupsBasis.of_comm is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_2 : CommRing.{u1} A] (B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))), (forall (i : ι) (j : ι), Exists.{succ u2} ι (fun (k : ι) => LE.le.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B k) (Inf.inf.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (AddSubgroup.hasInf.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (B i) (B j)))) -> (forall (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) (HMul.hMul.{u1, u1, u1} (Set.{u1} A) (Set.{u1} A) (Set.{u1} A) (instHMul.{u1} (Set.{u1} A) (Set.mul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i)))) -> (forall (x : A) (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) (Set.preimage.{u1, u1} A A (fun (y : A) => HMul.hMul.{u1, u1, u1} A A A (instHMul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2)))) x y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i))))) -> (RingSubgroupsBasis.{u1, u2} A ι (CommRing.toRing.{u1} A _inst_2) B)
-but is expected to have type
-  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_2 : CommRing.{u2} A] (B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2))))), (forall (i : ι) (j : ι), Exists.{succ u1} ι (fun (k : ι) => LE.le.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (Preorder.toLE.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (PartialOrder.toPreorder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (OmegaCompletePartialOrder.toPartialOrder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (AddSubgroup.instCompleteLatticeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))))))) (B k) (Inf.inf.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (AddSubgroup.instInfAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i) (B j)))) -> (forall (i : ι), Exists.{succ u1} ι (fun (j : ι) => HasSubset.Subset.{u2} (Set.{u2} A) (Set.instHasSubsetSet.{u2} A) (HMul.hMul.{u2, u2, u2} (Set.{u2} A) (Set.{u2} A) (Set.{u2} A) (instHMul.{u2} (Set.{u2} A) (Set.mul.{u2} A (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A (CommRing.toRing.{u2} A _inst_2)))))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j)) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i)))) -> (forall (x : A) (i : ι), Exists.{succ u1} ι (fun (j : ι) => HasSubset.Subset.{u2} (Set.{u2} A) (Set.instHasSubsetSet.{u2} A) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j)) (Set.preimage.{u2, u2} A A (fun (y : A) => HMul.hMul.{u2, u2, u2} A A A (instHMul.{u2} A (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A (CommRing.toRing.{u2} A _inst_2))))) x y) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i))))) -> (RingSubgroupsBasis.{u2, u1} A ι (CommRing.toRing.{u2} A _inst_2) B)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_commₓ'. -/
 theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
     (inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j) (mul : ∀ i, ∃ j, (B j : Set A) * B j ⊆ B i)
@@ -415,10 +412,7 @@ variable [TopologicalSpace R] {B : ι → Submodule R A} (hB : SubmodulesRingBas
   (hsmul : ∀ (m : A) (i : ι), ∀ᶠ a : R in 𝓝 0, a • m ∈ B i)
 
 /- warning: submodules_ring_basis.to_submodules_basis -> SubmodulesRingBasis.toSubmodulesBasis is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u3} A] [_inst_3 : Algebra.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))] [_inst_6 : TopologicalSpace.{u2} R] {B : ι -> (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u1, u2, u3} ι R A _inst_1 _inst_2 _inst_3 B) -> (forall (m : A) (i : ι), Filter.Eventually.{u2} R (fun (a : R) => Membership.Mem.{u3, u3} A (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3)) (SetLike.hasMem.{u3, u3} (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3)) A (Submodule.setLike.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))) (SMul.smul.{u2, u3} R A (SMulZeroClass.toHasSmul.{u2, u3} R A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} R A (MulZeroClass.toHasZero.{u2} R (MulZeroOneClass.toMulZeroClass.{u2} R (MonoidWithZero.toMulZeroOneClass.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} R A (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (Module.toMulActionWithZero.{u2, u3} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))))) a m) (B i)) (nhds.{u2} R _inst_6 (OfNat.ofNat.{u2} R 0 (OfNat.mk.{u2} R 0 (Zero.zero.{u2} R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))))))))))) -> (SubmodulesBasis.{u1, u2, u3} ι R _inst_1 A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2)))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3) _inst_6 B)
-but is expected to have type
-  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2))] [_inst_6 : TopologicalSpace.{u2} R] {B : ι -> (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (forall (m : A) (i : ι), Filter.Eventually.{u2} R (fun (a : R) => Membership.mem.{u1, u1} A (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3)) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3)) A (Submodule.setLike.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3))) (HSMul.hSMul.{u2, u1, u1} R A A (instHSMul.{u2, u1} R A (Algebra.toSMul.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3)) a m) (B i)) (nhds.{u2} R _inst_6 (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) -> (SubmodulesBasis.{u3, u2, u1} ι R _inst_1 A (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3) _inst_6 B)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submodules_ring_basis.to_submodules_basis SubmodulesRingBasis.toSubmodulesBasisₓ'. -/
 theorem SubmodulesRingBasis.toSubmodulesBasis : SubmodulesBasis B :=
   { inter := hB.inter
Diff
@@ -61,7 +61,7 @@ variable {A ι : Type _} [Ring A]
 
 /- warning: ring_subgroups_basis.of_comm -> RingSubgroupsBasis.of_comm is a dubious translation:
 lean 3 declaration is
-  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_2 : CommRing.{u1} A] (B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))), (forall (i : ι) (j : ι), Exists.{succ u2} ι (fun (k : ι) => LE.le.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Preorder.toLE.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B k) (Inf.inf.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (AddSubgroup.hasInf.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (B i) (B j)))) -> (forall (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) (HMul.hMul.{u1, u1, u1} (Set.{u1} A) (Set.{u1} A) (Set.{u1} A) (instHMul.{u1} (Set.{u1} A) (Set.mul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i)))) -> (forall (x : A) (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) (Set.preimage.{u1, u1} A A (fun (y : A) => HMul.hMul.{u1, u1, u1} A A A (instHMul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2)))) x y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i))))) -> (RingSubgroupsBasis.{u1, u2} A ι (CommRing.toRing.{u1} A _inst_2) B)
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_2 : CommRing.{u1} A] (B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))), (forall (i : ι) (j : ι), Exists.{succ u2} ι (fun (k : ι) => LE.le.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B k) (Inf.inf.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (AddSubgroup.hasInf.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (B i) (B j)))) -> (forall (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) (HMul.hMul.{u1, u1, u1} (Set.{u1} A) (Set.{u1} A) (Set.{u1} A) (instHMul.{u1} (Set.{u1} A) (Set.mul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i)))) -> (forall (x : A) (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) (Set.preimage.{u1, u1} A A (fun (y : A) => HMul.hMul.{u1, u1, u1} A A A (instHMul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2)))) x y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i))))) -> (RingSubgroupsBasis.{u1, u2} A ι (CommRing.toRing.{u1} A _inst_2) B)
 but is expected to have type
   forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_2 : CommRing.{u2} A] (B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2))))), (forall (i : ι) (j : ι), Exists.{succ u1} ι (fun (k : ι) => LE.le.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (Preorder.toLE.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (PartialOrder.toPreorder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (OmegaCompletePartialOrder.toPartialOrder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (AddSubgroup.instCompleteLatticeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))))))) (B k) (Inf.inf.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (AddSubgroup.instInfAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i) (B j)))) -> (forall (i : ι), Exists.{succ u1} ι (fun (j : ι) => HasSubset.Subset.{u2} (Set.{u2} A) (Set.instHasSubsetSet.{u2} A) (HMul.hMul.{u2, u2, u2} (Set.{u2} A) (Set.{u2} A) (Set.{u2} A) (instHMul.{u2} (Set.{u2} A) (Set.mul.{u2} A (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A (CommRing.toRing.{u2} A _inst_2)))))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j)) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i)))) -> (forall (x : A) (i : ι), Exists.{succ u1} ι (fun (j : ι) => HasSubset.Subset.{u2} (Set.{u2} A) (Set.instHasSubsetSet.{u2} A) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j)) (Set.preimage.{u2, u2} A A (fun (y : A) => HMul.hMul.{u2, u2, u2} A A A (instHMul.{u2} A (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A (CommRing.toRing.{u2} A _inst_2))))) x y) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i))))) -> (RingSubgroupsBasis.{u2, u1} A ι (CommRing.toRing.{u2} A _inst_2) B)
 Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_commₓ'. -/
Diff
@@ -269,7 +269,7 @@ variable {B : ι → Submodule R A} (hB : SubmodulesRingBasis B)
 lean 3 declaration is
   forall {ι : Type.{u1}} {R : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u3} A] [_inst_3 : Algebra.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))] {B : ι -> (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u1, u2, u3} ι R A _inst_1 _inst_2 _inst_3 B) -> (RingSubgroupsBasis.{u3, u1} A ι (CommRing.toRing.{u3} A _inst_2) (fun (i : ι) => Submodule.toAddSubgroup.{u2, u3} R A (CommRing.toRing.{u2} R _inst_1) (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2)))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3) (B i)))
 but is expected to have type
-  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2))] {B : ι -> (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (RingSubgroupsBasis.{u1, u3} A ι (CommRing.toRing.{u1} A _inst_2) (fun (i : ι) => Submodule.toAddSubgroup.{u2, u1} R A (CommRing.toRing.{u2} R _inst_1) (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3) (B i)))
+  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2))] {B : ι -> (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (RingSubgroupsBasis.{u1, u3} A ι (CommRing.toRing.{u1} A _inst_2) (fun (i : ι) => Submodule.toAddSubgroup.{u2, u1} R A (CommRing.toRing.{u2} R _inst_1) (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3) (B i)))
 Case conversion may be inaccurate. Consider using '#align submodules_ring_basis.to_ring_subgroups_basis SubmodulesRingBasis.toRing_subgroups_basisₓ'. -/
 theorem toRing_subgroups_basis (hB : SubmodulesRingBasis B) :
     RingSubgroupsBasis fun i => (B i).toAddSubgroup :=
@@ -381,7 +381,7 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup M _ hB.topology :=
 lean 3 declaration is
   forall {ι : Type.{u1}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M] [_inst_5 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4)] [_inst_6 : TopologicalSpace.{u2} R] [_inst_7 : Nonempty.{succ u1} ι] {B : ι -> (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4) _inst_5)} (hB : SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 _inst_6 B), NonarchimedeanAddGroup.{u3} M (AddCommGroup.toAddGroup.{u3} M _inst_4) (SubmodulesBasis.topology.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 _inst_6 _inst_7 B hB)
 but is expected to have type
-  forall {ι : Type.{u3}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u1}} [_inst_4 : AddCommGroup.{u1} M] [_inst_5 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4)] [_inst_6 : TopologicalSpace.{u2} R] [_inst_7 : Nonempty.{succ u3} ι] {B : ι -> (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4) _inst_5)} (hB : SubmodulesBasis.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 B), NonarchimedeanAddGroup.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_4) (SubmodulesBasis.topology.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 _inst_7 B hB)
+  forall {ι : Type.{u3}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u1}} [_inst_4 : AddCommGroup.{u1} M] [_inst_5 : Module.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4)] [_inst_6 : TopologicalSpace.{u2} R] [_inst_7 : Nonempty.{succ u3} ι] {B : ι -> (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4) _inst_5)} (hB : SubmodulesBasis.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 B), NonarchimedeanAddGroup.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_4) (SubmodulesBasis.topology.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 _inst_7 B hB)
 Case conversion may be inaccurate. Consider using '#align submodules_basis.nonarchimedean SubmodulesBasis.nonarchimedeanₓ'. -/
 -- see Note [nonarchimedean non instances]
 theorem nonarchimedean (hB : SubmodulesBasis B) : @NonarchimedeanAddGroup M _ hB.topology :=
@@ -418,7 +418,7 @@ variable [TopologicalSpace R] {B : ι → Submodule R A} (hB : SubmodulesRingBas
 lean 3 declaration is
   forall {ι : Type.{u1}} {R : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u3} A] [_inst_3 : Algebra.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))] [_inst_6 : TopologicalSpace.{u2} R] {B : ι -> (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u1, u2, u3} ι R A _inst_1 _inst_2 _inst_3 B) -> (forall (m : A) (i : ι), Filter.Eventually.{u2} R (fun (a : R) => Membership.Mem.{u3, u3} A (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3)) (SetLike.hasMem.{u3, u3} (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3)) A (Submodule.setLike.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))) (SMul.smul.{u2, u3} R A (SMulZeroClass.toHasSmul.{u2, u3} R A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} R A (MulZeroClass.toHasZero.{u2} R (MulZeroOneClass.toMulZeroClass.{u2} R (MonoidWithZero.toMulZeroOneClass.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} R A (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (Module.toMulActionWithZero.{u2, u3} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))))) a m) (B i)) (nhds.{u2} R _inst_6 (OfNat.ofNat.{u2} R 0 (OfNat.mk.{u2} R 0 (Zero.zero.{u2} R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))))))))))) -> (SubmodulesBasis.{u1, u2, u3} ι R _inst_1 A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2)))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3) _inst_6 B)
 but is expected to have type
-  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2))] [_inst_6 : TopologicalSpace.{u2} R] {B : ι -> (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (forall (m : A) (i : ι), Filter.Eventually.{u2} R (fun (a : R) => Membership.mem.{u1, u1} A (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3)) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3)) A (Submodule.setLike.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3))) (HSMul.hSMul.{u2, u1, u1} R A A (instHSMul.{u2, u1} R A (Algebra.toSMul.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3)) a m) (B i)) (nhds.{u2} R _inst_6 (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) -> (SubmodulesBasis.{u3, u2, u1} ι R _inst_1 A (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3) _inst_6 B)
+  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2))] [_inst_6 : TopologicalSpace.{u2} R] {B : ι -> (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (forall (m : A) (i : ι), Filter.Eventually.{u2} R (fun (a : R) => Membership.mem.{u1, u1} A (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3)) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3)) A (Submodule.setLike.{u2, u1} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3))) (HSMul.hSMul.{u2, u1, u1} R A A (instHSMul.{u2, u1} R A (Algebra.toSMul.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3)) a m) (B i)) (nhds.{u2} R _inst_6 (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) -> (SubmodulesBasis.{u3, u2, u1} ι R _inst_1 A (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_2)) _inst_3) _inst_6 B)
 Case conversion may be inaccurate. Consider using '#align submodules_ring_basis.to_submodules_basis SubmodulesRingBasis.toSubmodulesBasisₓ'. -/
 theorem SubmodulesRingBasis.toSubmodulesBasis : SubmodulesBasis B :=
   { inter := hB.inter
@@ -445,7 +445,7 @@ structure RingFilterBasis.SubmodulesBasis (BR : RingFilterBasis R) (B : ι → S
 lean 3 declaration is
   forall {ι : Type.{u1}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M] [_inst_5 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4)] (BR : RingFilterBasis.{u2} R (CommRing.toRing.{u2} R _inst_1)) {B : ι -> (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4) _inst_5)}, (RingFilterBasis.SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 BR B) -> (SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 (RingFilterBasis.topology.{u2} R (CommRing.toRing.{u2} R _inst_1) BR) B)
 but is expected to have type
-  forall {ι : Type.{u1}} {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] {M : Type.{u2}} [_inst_4 : AddCommGroup.{u2} M] [_inst_5 : Module.{u3, u2} R M (Ring.toSemiring.{u3} R (CommRing.toRing.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4)] (BR : RingFilterBasis.{u3} R (CommRing.toRing.{u3} R _inst_1)) {B : ι -> (Submodule.{u3, u2} R M (Ring.toSemiring.{u3} R (CommRing.toRing.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4) _inst_5)}, (RingFilterBasis.SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 BR B) -> (SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 (RingFilterBasis.topology.{u3} R (CommRing.toRing.{u3} R _inst_1) BR) B)
+  forall {ι : Type.{u1}} {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] {M : Type.{u2}} [_inst_4 : AddCommGroup.{u2} M] [_inst_5 : Module.{u3, u2} R M (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4)] (BR : RingFilterBasis.{u3} R (CommRing.toRing.{u3} R _inst_1)) {B : ι -> (Submodule.{u3, u2} R M (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4) _inst_5)}, (RingFilterBasis.SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 BR B) -> (SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 (RingFilterBasis.topology.{u3} R (CommRing.toRing.{u3} R _inst_1) BR) B)
 Case conversion may be inaccurate. Consider using '#align ring_filter_basis.submodules_basis_is_basis RingFilterBasis.submodulesBasisIsBasisₓ'. -/
 theorem RingFilterBasis.submodulesBasisIsBasis (BR : RingFilterBasis R) {B : ι → Submodule R M}
     (hB : BR.SubmodulesBasis B) : @SubmodulesBasis ι R _ M _ _ BR.topology B :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
 
 ! This file was ported from Lean 3 source module topology.algebra.nonarchimedean.bases
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit ce38d86c0b2d427ce208c3cee3159cb421d2b3c4
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Algebra.Module.Submodule.Pointwise
 /-!
 # Neighborhood bases for non-archimedean rings and modules
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This files contains special families of filter bases on rings and modules that give rise to
 non-archimedean topologies.
 
Diff
@@ -36,6 +36,12 @@ open Set Filter Function Lattice AddGroupWithZeroNhd
 
 open Topology Filter Pointwise
 
+/- warning: ring_subgroups_basis -> RingSubgroupsBasis is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A], (ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))) -> Prop
+but is expected to have type
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A], (ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))) -> Prop
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis RingSubgroupsBasisₓ'. -/
 /-- A family of additive subgroups on a ring `A` is a subgroups basis if it satisfies some
 axioms ensuring there is a topology on `A` which is compatible with the ring structure and
 admits this family as a basis of neighborhoods of zero. -/
@@ -50,6 +56,12 @@ namespace RingSubgroupsBasis
 
 variable {A ι : Type _} [Ring A]
 
+/- warning: ring_subgroups_basis.of_comm -> RingSubgroupsBasis.of_comm is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_2 : CommRing.{u1} A] (B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))), (forall (i : ι) (j : ι), Exists.{succ u2} ι (fun (k : ι) => LE.le.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Preorder.toLE.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B k) (Inf.inf.{u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (AddSubgroup.hasInf.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (B i) (B j)))) -> (forall (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) (HMul.hMul.{u1, u1, u1} (Set.{u1} A) (Set.{u1} A) (Set.{u1} A) (instHMul.{u1} (Set.{u1} A) (Set.mul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i)))) -> (forall (x : A) (i : ι), Exists.{succ u2} ι (fun (j : ι) => HasSubset.Subset.{u1} (Set.{u1} A) (Set.hasSubset.{u1} A) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B j)) (Set.preimage.{u1, u1} A A (fun (y : A) => HMul.hMul.{u1, u1, u1} A A A (instHMul.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A (CommRing.toRing.{u1} A _inst_2)))) x y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2))))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_2)))))))) (B i))))) -> (RingSubgroupsBasis.{u1, u2} A ι (CommRing.toRing.{u1} A _inst_2) B)
+but is expected to have type
+  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_2 : CommRing.{u2} A] (B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2))))), (forall (i : ι) (j : ι), Exists.{succ u1} ι (fun (k : ι) => LE.le.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (Preorder.toLE.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (PartialOrder.toPreorder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (OmegaCompletePartialOrder.toPartialOrder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (AddSubgroup.instCompleteLatticeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))))))) (B k) (Inf.inf.{u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (AddSubgroup.instInfAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i) (B j)))) -> (forall (i : ι), Exists.{succ u1} ι (fun (j : ι) => HasSubset.Subset.{u2} (Set.{u2} A) (Set.instHasSubsetSet.{u2} A) (HMul.hMul.{u2, u2, u2} (Set.{u2} A) (Set.{u2} A) (Set.{u2} A) (instHMul.{u2} (Set.{u2} A) (Set.mul.{u2} A (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A (CommRing.toRing.{u2} A _inst_2)))))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j)) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i)))) -> (forall (x : A) (i : ι), Exists.{succ u1} ι (fun (j : ι) => HasSubset.Subset.{u2} (Set.{u2} A) (Set.instHasSubsetSet.{u2} A) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B j)) (Set.preimage.{u2, u2} A A (fun (y : A) => HMul.hMul.{u2, u2, u2} A A A (instHMul.{u2} A (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A (CommRing.toRing.{u2} A _inst_2))))) x y) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A (CommRing.toRing.{u2} A _inst_2)))) (B i))))) -> (RingSubgroupsBasis.{u2, u1} A ι (CommRing.toRing.{u2} A _inst_2) B)
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_commₓ'. -/
 theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
     (inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j) (mul : ∀ i, ∃ j, (B j : Set A) * B j ⊆ B i)
     (left_mul : ∀ x : A, ∀ i, ∃ j, (B j : Set A) ⊆ (fun y : A => x * y) ⁻¹' B i) :
@@ -64,6 +76,12 @@ theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
       simpa [mul_comm] using hj }
 #align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_comm
 
+/- warning: ring_subgroups_basis.to_ring_filter_basis -> RingSubgroupsBasis.toRingFilterBasis is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (RingFilterBasis.{u1} A _inst_1)
+but is expected to have type
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (RingFilterBasis.{u1} A _inst_1)
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.to_ring_filter_basis RingSubgroupsBasis.toRingFilterBasisₓ'. -/
 /-- Every subgroups basis on a ring leads to a ring filter basis. -/
 def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B) :
     RingFilterBasis A where
@@ -108,21 +126,45 @@ def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgrou
 
 variable [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgroupsBasis B)
 
+/- warning: ring_subgroups_basis.mem_add_group_filter_basis_iff -> RingSubgroupsBasis.mem_addGroupFilterBasis_iff is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) {V : Set.{u1} A}, Iff (Membership.Mem.{u1, u1} (Set.{u1} A) (AddGroupFilterBasis.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (AddGroupFilterBasis.hasMem.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) V (RingFilterBasis.toAddGroupFilterBasis.{u1} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u1, u2} A ι _inst_1 _inst_2 B hB))) (Exists.{succ u2} ι (fun (i : ι) => Eq.{succ u1} (Set.{u1} A) V ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))))) (B i))))
+but is expected to have type
+  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B) {V : Set.{u2} A}, Iff (Membership.mem.{u2, u2} (Set.{u2} A) (AddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (AddGroupFilterBasis.instMembershipSetAddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) V (RingFilterBasis.toAddGroupFilterBasis.{u2} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u2, u1} A ι _inst_1 _inst_2 B hB))) (Exists.{succ u1} ι (fun (i : ι) => Eq.{succ u2} (Set.{u2} A) V (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (B i))))
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.mem_add_group_filter_basis_iff RingSubgroupsBasis.mem_addGroupFilterBasis_iffₓ'. -/
 theorem mem_addGroupFilterBasis_iff {V : Set A} :
     V ∈ hB.toRingFilterBasis.toAddGroupFilterBasis ↔ ∃ i, V = B i :=
   Iff.rfl
 #align ring_subgroups_basis.mem_add_group_filter_basis_iff RingSubgroupsBasis.mem_addGroupFilterBasis_iff
 
+/- warning: ring_subgroups_basis.mem_add_group_filter_basis -> RingSubgroupsBasis.mem_addGroupFilterBasis is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) (i : ι), Membership.Mem.{u1, u1} (Set.{u1} A) (AddGroupFilterBasis.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (AddGroupFilterBasis.hasMem.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))))) (B i)) (RingFilterBasis.toAddGroupFilterBasis.{u1} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u1, u2} A ι _inst_1 _inst_2 B hB))
+but is expected to have type
+  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B) (i : ι), Membership.mem.{u2, u2} (Set.{u2} A) (AddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (AddGroupFilterBasis.instMembershipSetAddGroupFilterBasis.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (B i)) (RingFilterBasis.toAddGroupFilterBasis.{u2} A _inst_1 (RingSubgroupsBasis.toRingFilterBasis.{u2, u1} A ι _inst_1 _inst_2 B hB))
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.mem_add_group_filter_basis RingSubgroupsBasis.mem_addGroupFilterBasisₓ'. -/
 theorem mem_addGroupFilterBasis (i) : (B i : Set A) ∈ hB.toRingFilterBasis.toAddGroupFilterBasis :=
   ⟨i, rfl⟩
 #align ring_subgroups_basis.mem_add_group_filter_basis RingSubgroupsBasis.mem_addGroupFilterBasis
 
+/- warning: ring_subgroups_basis.topology -> RingSubgroupsBasis.topology is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (TopologicalSpace.{u1} A)
+but is expected to have type
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))}, (RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) -> (TopologicalSpace.{u1} A)
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.topology RingSubgroupsBasis.topologyₓ'. -/
 /-- The topology defined from a subgroups basis, admitting the given subgroups as a basis
 of neighborhoods of zero. -/
 def topology : TopologicalSpace A :=
   hB.toRingFilterBasis.toAddGroupFilterBasis.topology
 #align ring_subgroups_basis.topology RingSubgroupsBasis.topology
 
+/- warning: ring_subgroups_basis.has_basis_nhds_zero -> RingSubgroupsBasis.hasBasis_nhds_zero is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), Filter.HasBasis.{u1, succ u2} A ι (nhds.{u1} A (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB) (OfNat.ofNat.{u1} A 0 (OfNat.mk.{u1} A 0 (Zero.zero.{u1} A (MulZeroClass.toHasZero.{u1} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A _inst_1))))))))) (fun (_x : ι) => True) (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (Set.{u1} A) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))))) (B i))
+but is expected to have type
+  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B), Filter.HasBasis.{u2, succ u1} A ι (nhds.{u2} A (RingSubgroupsBasis.topology.{u2, u1} A ι _inst_1 _inst_2 B hB) (OfNat.ofNat.{u2} A 0 (Zero.toOfNat0.{u2} A (MonoidWithZero.toZero.{u2} A (Semiring.toMonoidWithZero.{u2} A (Ring.toSemiring.{u2} A _inst_1)))))) (fun (_x : ι) => True) (fun (i : ι) => SetLike.coe.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (B i))
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.has_basis_nhds_zero RingSubgroupsBasis.hasBasis_nhds_zeroₓ'. -/
 theorem hasBasis_nhds_zero : HasBasis (@nhds A hB.topology 0) (fun _ => True) fun i => B i :=
   ⟨by
     intro s
@@ -134,6 +176,12 @@ theorem hasBasis_nhds_zero : HasBasis (@nhds A hB.topology 0) (fun _ => True) fu
       exact ⟨B i, ⟨i, rfl⟩, hi⟩⟩
 #align ring_subgroups_basis.has_basis_nhds_zero RingSubgroupsBasis.hasBasis_nhds_zero
 
+/- warning: ring_subgroups_basis.has_basis_nhds -> RingSubgroupsBasis.hasBasis_nhds is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B) (a : A), Filter.HasBasis.{u1, succ u2} A ι (nhds.{u1} A (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB) a) (fun (_x : ι) => True) (fun (i : ι) => setOf.{u1} A (fun (b : A) => Membership.Mem.{u1, u1} A (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))) A (AddSubgroup.setLike.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))) (HSub.hSub.{u1, u1, u1} A A A (instHSub.{u1} A (SubNegMonoid.toHasSub.{u1} A (AddGroup.toSubNegMonoid.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1)))))) b a) (B i)))
+but is expected to have type
+  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B) (a : A), Filter.HasBasis.{u2, succ u1} A ι (nhds.{u2} A (RingSubgroupsBasis.topology.{u2, u1} A ι _inst_1 _inst_2 B hB) a) (fun (_x : ι) => True) (fun (i : ι) => setOf.{u2} A (fun (b : A) => Membership.mem.{u2, u2} A (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1))) A (AddSubgroup.instSetLikeAddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))) (HSub.hSub.{u2, u2, u2} A A A (instHSub.{u2} A (Ring.toSub.{u2} A _inst_1)) b a) (B i)))
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.has_basis_nhds RingSubgroupsBasis.hasBasis_nhdsₓ'. -/
 theorem hasBasis_nhds (a : A) :
     HasBasis (@nhds A hB.topology a) (fun _ => True) fun i => { b | b - a ∈ B i } :=
   ⟨by
@@ -159,6 +207,12 @@ theorem hasBasis_nhds (a : A) :
       simpa using b_in⟩
 #align ring_subgroups_basis.has_basis_nhds RingSubgroupsBasis.hasBasis_nhds
 
+/- warning: ring_subgroups_basis.open_add_subgroup -> RingSubgroupsBasis.openAddSubgroup is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), ι -> (OpenAddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))) (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB))
+but is expected to have type
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), ι -> (OpenAddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (Ring.toAddGroupWithOne.{u1} A _inst_1)) (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB))
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.open_add_subgroup RingSubgroupsBasis.openAddSubgroupₓ'. -/
 /-- Given a subgroups basis, the basis elements as open additive subgroups in the associated
 topology. -/
 def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
@@ -173,6 +227,12 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
       simpa using (B i).add_mem a_in b_in }
 #align ring_subgroups_basis.open_add_subgroup RingSubgroupsBasis.openAddSubgroup
 
+/- warning: ring_subgroups_basis.nonarchimedean -> RingSubgroupsBasis.nonarchimedean is a dubious translation:
+lean 3 declaration is
+  forall {A : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Ring.{u1} A] [_inst_2 : Nonempty.{succ u2} ι] {B : ι -> (AddSubgroup.{u1} A (AddGroupWithOne.toAddGroup.{u1} A (AddCommGroupWithOne.toAddGroupWithOne.{u1} A (Ring.toAddCommGroupWithOne.{u1} A _inst_1))))} (hB : RingSubgroupsBasis.{u1, u2} A ι _inst_1 B), NonarchimedeanRing.{u1} A _inst_1 (RingSubgroupsBasis.topology.{u1, u2} A ι _inst_1 _inst_2 B hB)
+but is expected to have type
+  forall {A : Type.{u2}} {ι : Type.{u1}} [_inst_1 : Ring.{u2} A] [_inst_2 : Nonempty.{succ u1} ι] {B : ι -> (AddSubgroup.{u2} A (AddGroupWithOne.toAddGroup.{u2} A (Ring.toAddGroupWithOne.{u2} A _inst_1)))} (hB : RingSubgroupsBasis.{u2, u1} A ι _inst_1 B), NonarchimedeanRing.{u2} A _inst_1 (RingSubgroupsBasis.topology.{u2, u1} A ι _inst_1 _inst_2 B hB)
+Case conversion may be inaccurate. Consider using '#align ring_subgroups_basis.nonarchimedean RingSubgroupsBasis.nonarchimedeanₓ'. -/
 -- see Note [nonarchimedean non instances]
 theorem nonarchimedean : @NonarchimedeanRing A _ hB.topology :=
   by
@@ -187,6 +247,7 @@ end RingSubgroupsBasis
 
 variable {ι R A : Type _} [CommRing R] [CommRing A] [Algebra R A]
 
+#print SubmodulesRingBasis /-
 /-- A family of submodules in a commutative `R`-algebra `A` is a submodules basis if it satisfies
 some axioms ensuring there is a topology on `A` which is compatible with the ring structure and
 admits this family as a basis of neighborhoods of zero. -/
@@ -195,11 +256,18 @@ structure SubmodulesRingBasis (B : ι → Submodule R A) : Prop where
   leftMul : ∀ (a : A) (i), ∃ j, a • B j ≤ B i
   mul : ∀ i, ∃ j, (B j : Set A) * B j ⊆ B i
 #align submodules_ring_basis SubmodulesRingBasis
+-/
 
 namespace SubmodulesRingBasis
 
 variable {B : ι → Submodule R A} (hB : SubmodulesRingBasis B)
 
+/- warning: submodules_ring_basis.to_ring_subgroups_basis -> SubmodulesRingBasis.toRing_subgroups_basis is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {R : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u3} A] [_inst_3 : Algebra.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))] {B : ι -> (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u1, u2, u3} ι R A _inst_1 _inst_2 _inst_3 B) -> (RingSubgroupsBasis.{u3, u1} A ι (CommRing.toRing.{u3} A _inst_2) (fun (i : ι) => Submodule.toAddSubgroup.{u2, u3} R A (CommRing.toRing.{u2} R _inst_1) (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2)))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3) (B i)))
+but is expected to have type
+  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2))] {B : ι -> (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (RingSubgroupsBasis.{u1, u3} A ι (CommRing.toRing.{u1} A _inst_2) (fun (i : ι) => Submodule.toAddSubgroup.{u2, u1} R A (CommRing.toRing.{u2} R _inst_1) (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3) (B i)))
+Case conversion may be inaccurate. Consider using '#align submodules_ring_basis.to_ring_subgroups_basis SubmodulesRingBasis.toRing_subgroups_basisₓ'. -/
 theorem toRing_subgroups_basis (hB : SubmodulesRingBasis B) :
     RingSubgroupsBasis fun i => (B i).toAddSubgroup :=
   by
@@ -211,15 +279,18 @@ theorem toRing_subgroups_basis (hB : SubmodulesRingBasis B) :
   exact hj ⟨b, b_in, rfl⟩
 #align submodules_ring_basis.to_ring_subgroups_basis SubmodulesRingBasis.toRing_subgroups_basis
 
+#print SubmodulesRingBasis.topology /-
 /-- The topology associated to a basis of submodules in an algebra. -/
 def topology [Nonempty ι] (hB : SubmodulesRingBasis B) : TopologicalSpace A :=
   hB.toRing_subgroups_basis.topology
 #align submodules_ring_basis.topology SubmodulesRingBasis.topology
+-/
 
 end SubmodulesRingBasis
 
 variable {M : Type _} [AddCommGroup M] [Module R M]
 
+#print SubmodulesBasis /-
 /-- A family of submodules in an `R`-module `M` is a submodules basis if it satisfies
 some axioms ensuring there is a topology on `M` which is compatible with the module structure and
 admits this family as a basis of neighborhoods of zero. -/
@@ -227,6 +298,7 @@ structure SubmodulesBasis [TopologicalSpace R] (B : ι → Submodule R M) : Prop
   inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j
   smul : ∀ (m : M) (i : ι), ∀ᶠ a in 𝓝 (0 : R), a • m ∈ B i
 #align submodules_basis SubmodulesBasis
+-/
 
 namespace SubmodulesBasis
 
@@ -234,6 +306,7 @@ variable [TopologicalSpace R] [Nonempty ι] {B : ι → Submodule R M} (hB : Sub
 
 include hB
 
+#print SubmodulesBasis.toModuleFilterBasis /-
 /-- The image of a submodules basis is a module filter basis. -/
 def toModuleFilterBasis : ModuleFilterBasis R M
     where
@@ -276,12 +349,16 @@ def toModuleFilterBasis : ModuleFilterBasis R M
     rintro m₀ _ ⟨i, rfl⟩
     exact hB.smul m₀ i
 #align submodules_basis.to_module_filter_basis SubmodulesBasis.toModuleFilterBasis
+-/
 
+#print SubmodulesBasis.topology /-
 /-- The topology associated to a basis of submodules in a module. -/
 def topology : TopologicalSpace M :=
   hB.toModuleFilterBasis.toAddGroupFilterBasis.topology
 #align submodules_basis.topology SubmodulesBasis.topology
+-/
 
+#print SubmodulesBasis.openAddSubgroup /-
 /-- Given a submodules basis, the basis elements as open additive subgroups in the associated
 topology. -/
 def openAddSubgroup (i : ι) : @OpenAddSubgroup M _ hB.topology :=
@@ -295,7 +372,14 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup M _ hB.topology :=
       rintro - ⟨b, b_in, rfl⟩
       exact (B i).add_mem a_in b_in }
 #align submodules_basis.open_add_subgroup SubmodulesBasis.openAddSubgroup
+-/
 
+/- warning: submodules_basis.nonarchimedean -> SubmodulesBasis.nonarchimedean is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M] [_inst_5 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4)] [_inst_6 : TopologicalSpace.{u2} R] [_inst_7 : Nonempty.{succ u1} ι] {B : ι -> (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4) _inst_5)} (hB : SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 _inst_6 B), NonarchimedeanAddGroup.{u3} M (AddCommGroup.toAddGroup.{u3} M _inst_4) (SubmodulesBasis.topology.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 _inst_6 _inst_7 B hB)
+but is expected to have type
+  forall {ι : Type.{u3}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u1}} [_inst_4 : AddCommGroup.{u1} M] [_inst_5 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4)] [_inst_6 : TopologicalSpace.{u2} R] [_inst_7 : Nonempty.{succ u3} ι] {B : ι -> (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_4) _inst_5)} (hB : SubmodulesBasis.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 B), NonarchimedeanAddGroup.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_4) (SubmodulesBasis.topology.{u3, u2, u1} ι R _inst_1 M _inst_4 _inst_5 _inst_6 _inst_7 B hB)
+Case conversion may be inaccurate. Consider using '#align submodules_basis.nonarchimedean SubmodulesBasis.nonarchimedeanₓ'. -/
 -- see Note [nonarchimedean non instances]
 theorem nonarchimedean (hB : SubmodulesBasis B) : @NonarchimedeanAddGroup M _ hB.topology :=
   by
@@ -327,6 +411,12 @@ view definitionaly gives the same topology on `A`.
 variable [TopologicalSpace R] {B : ι → Submodule R A} (hB : SubmodulesRingBasis B)
   (hsmul : ∀ (m : A) (i : ι), ∀ᶠ a : R in 𝓝 0, a • m ∈ B i)
 
+/- warning: submodules_ring_basis.to_submodules_basis -> SubmodulesRingBasis.toSubmodulesBasis is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {R : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u3} A] [_inst_3 : Algebra.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))] [_inst_6 : TopologicalSpace.{u2} R] {B : ι -> (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u1, u2, u3} ι R A _inst_1 _inst_2 _inst_3 B) -> (forall (m : A) (i : ι), Filter.Eventually.{u2} R (fun (a : R) => Membership.Mem.{u3, u3} A (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3)) (SetLike.hasMem.{u3, u3} (Submodule.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3)) A (Submodule.setLike.{u2, u3} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))) (SMul.smul.{u2, u3} R A (SMulZeroClass.toHasSmul.{u2, u3} R A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} R A (MulZeroClass.toHasZero.{u2} R (MulZeroOneClass.toMulZeroClass.{u2} R (MonoidWithZero.toMulZeroOneClass.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} R A (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)))))))) (Module.toMulActionWithZero.{u2, u3} R A (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2))))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3))))) a m) (B i)) (nhds.{u2} R _inst_6 (OfNat.ofNat.{u2} R 0 (OfNat.mk.{u2} R 0 (Zero.zero.{u2} R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))))))))))) -> (SubmodulesBasis.{u1, u2, u3} ι R _inst_1 A (NonUnitalNonAssocRing.toAddCommGroup.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_2)))) (Algebra.toModule.{u2, u3} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_2)) _inst_3) _inst_6 B)
+but is expected to have type
+  forall {ι : Type.{u3}} {R : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : CommRing.{u1} A] [_inst_3 : Algebra.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2))] [_inst_6 : TopologicalSpace.{u2} R] {B : ι -> (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3))}, (SubmodulesRingBasis.{u3, u2, u1} ι R A _inst_1 _inst_2 _inst_3 B) -> (forall (m : A) (i : ι), Filter.Eventually.{u2} R (fun (a : R) => Membership.mem.{u1, u1} A (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3)) (SetLike.instMembership.{u1, u1} (Submodule.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3)) A (Submodule.setLike.{u2, u1} R A (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A (CommRing.toRing.{u1} A _inst_2))))) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3))) (HSMul.hSMul.{u2, u1, u1} R A A (instHSMul.{u2, u1} R A (Algebra.toSMul.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3)) a m) (B i)) (nhds.{u2} R _inst_6 (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) -> (SubmodulesBasis.{u3, u2, u1} ι R _inst_1 A (Ring.toAddCommGroup.{u1} A (CommRing.toRing.{u1} A _inst_2)) (Algebra.toModule.{u2, u1} R A (CommRing.toCommSemiring.{u2} R _inst_1) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_2)) _inst_3) _inst_6 B)
+Case conversion may be inaccurate. Consider using '#align submodules_ring_basis.to_submodules_basis SubmodulesRingBasis.toSubmodulesBasisₓ'. -/
 theorem SubmodulesRingBasis.toSubmodulesBasis : SubmodulesBasis B :=
   { inter := hB.inter
     smul := hsmul }
@@ -337,6 +427,7 @@ example [Nonempty ι] : hB.topology = (hB.toSubmodulesBasis hsmul).topology :=
 
 end
 
+#print RingFilterBasis.SubmodulesBasis /-
 /-- Given a ring filter basis on a commutative ring `R`, define a compatibility condition
 on a family of submodules of a `R`-module `M`. This compatibility condition allows to get
 a topological module structure. -/
@@ -345,7 +436,14 @@ structure RingFilterBasis.SubmodulesBasis (BR : RingFilterBasis R) (B : ι → S
   inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j
   smul : ∀ (m : M) (i : ι), ∃ U ∈ BR, U ⊆ (fun a => a • m) ⁻¹' B i
 #align ring_filter_basis.submodules_basis RingFilterBasis.SubmodulesBasis
+-/
 
+/- warning: ring_filter_basis.submodules_basis_is_basis -> RingFilterBasis.submodulesBasisIsBasis is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M] [_inst_5 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4)] (BR : RingFilterBasis.{u2} R (CommRing.toRing.{u2} R _inst_1)) {B : ι -> (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} M _inst_4) _inst_5)}, (RingFilterBasis.SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 BR B) -> (SubmodulesBasis.{u1, u2, u3} ι R _inst_1 M _inst_4 _inst_5 (RingFilterBasis.topology.{u2} R (CommRing.toRing.{u2} R _inst_1) BR) B)
+but is expected to have type
+  forall {ι : Type.{u1}} {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] {M : Type.{u2}} [_inst_4 : AddCommGroup.{u2} M] [_inst_5 : Module.{u3, u2} R M (Ring.toSemiring.{u3} R (CommRing.toRing.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4)] (BR : RingFilterBasis.{u3} R (CommRing.toRing.{u3} R _inst_1)) {B : ι -> (Submodule.{u3, u2} R M (Ring.toSemiring.{u3} R (CommRing.toRing.{u3} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_4) _inst_5)}, (RingFilterBasis.SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 BR B) -> (SubmodulesBasis.{u1, u3, u2} ι R _inst_1 M _inst_4 _inst_5 (RingFilterBasis.topology.{u3} R (CommRing.toRing.{u3} R _inst_1) BR) B)
+Case conversion may be inaccurate. Consider using '#align ring_filter_basis.submodules_basis_is_basis RingFilterBasis.submodulesBasisIsBasisₓ'. -/
 theorem RingFilterBasis.submodulesBasisIsBasis (BR : RingFilterBasis R) {B : ι → Submodule R M}
     (hB : BR.SubmodulesBasis B) : @SubmodulesBasis ι R _ M _ _ BR.topology B :=
   { inter := hB.inter
@@ -356,6 +454,7 @@ theorem RingFilterBasis.submodulesBasisIsBasis (BR : RingFilterBasis R) {B : ι
       exact mem_of_superset (BR.to_add_group_filter_basis.mem_nhds_zero V_in) hV }
 #align ring_filter_basis.submodules_basis_is_basis RingFilterBasis.submodulesBasisIsBasis
 
+#print RingFilterBasis.moduleFilterBasis /-
 /-- The module filter basis associated to a ring filter basis and a compatible submodule basis.
 This allows to build a topological module structure compatible with the given module structure
 and the topology associated to the given ring filter basis. -/
@@ -363,4 +462,5 @@ def RingFilterBasis.moduleFilterBasis [Nonempty ι] (BR : RingFilterBasis R) {B
     (hB : BR.SubmodulesBasis B) : @ModuleFilterBasis R M _ BR.topology _ _ :=
   @SubmodulesBasis.toModuleFilterBasis ι R _ M _ _ BR.topology _ _ (BR.submodulesBasisIsBasis hB)
 #align ring_filter_basis.module_filter_basis RingFilterBasis.moduleFilterBasis
+-/
 

Changes in mathlib4

mathlib3
mathlib4
chore: remove stream-of-consciousness uses of have, replace and suffices (#10640)

No changes to tactic file, it's just boring fixes throughout the library.

This follows on from #6964.

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -159,8 +159,8 @@ theorem hasBasis_nhds (a : A) :
     constructor
     · rintro ⟨-, ⟨i, rfl⟩, hi⟩
       use i
-      suffices h : { b : A | b - a ∈ B i } = (fun y => a + y) '' ↑(B i)
-      · rw [h]
+      suffices h : { b : A | b - a ∈ B i } = (fun y => a + y) '' ↑(B i) by
+        rw [h]
         assumption
       simp only [image_add_left, neg_add_eq_sub]
       ext b
refactor(*): change definition of Set.image2 etc (#9275)
  • Redefine Set.image2 to use ∃ a ∈ s, ∃ b ∈ t, f a b = c instead of ∃ a b, a ∈ s ∧ b ∈ t ∧ f a b = c.
  • Redefine Set.seq as Set.image2. The new definition is equal to the old one but rw [Set.seq] gives a different result.
  • Redefine Filter.map₂ to use ∃ u ∈ f, ∃ v ∈ g, image2 m u v ⊆ s instead of ∃ u v, u ∈ f ∧ v ∈ g ∧ ...
  • Update lemmas like Set.mem_image2, Finset.mem_image₂, Set.mem_mul, Finset.mem_div etc

The two reasons to make the change are:

  • ∃ a ∈ s, ∃ b ∈ t, _ is a simp-normal form, and
  • it looks a bit nicer.
Diff
@@ -84,7 +84,7 @@ def toRingFilterBasis [Nonempty ι] {B : ι → AddSubgroup A} (hB : RingSubgrou
     use B i
     constructor
     · use i
-    · rintro x ⟨y, z, y_in, z_in, rfl⟩
+    · rintro x ⟨y, y_in, z, z_in, rfl⟩
       exact (B i).add_mem y_in z_in
   neg' := by
     rintro _ ⟨i, rfl⟩
@@ -276,7 +276,7 @@ def toModuleFilterBasis : ModuleFilterBasis R M where
     use B i
     constructor
     · use i
-    · rintro x ⟨y, z, y_in, z_in, rfl⟩
+    · rintro x ⟨y, y_in, z, z_in, rfl⟩
       exact (B i).add_mem y_in z_in
   neg' := by
     rintro _ ⟨i, rfl⟩
@@ -299,7 +299,7 @@ def toModuleFilterBasis : ModuleFilterBasis R M where
     · use B i
       constructor
       · use i
-      · rintro _ ⟨a, m, -, hm, rfl⟩
+      · rintro _ ⟨a, -, m, hm, rfl⟩
         exact (B i).smul_mem _ hm
   smul_left' := by
     rintro x₀ _ ⟨i, rfl⟩
chore(Topology/../Nonarchimedean): minor golf (#9209)
Diff
@@ -59,11 +59,7 @@ theorem of_comm {A ι : Type*} [CommRing A] (B : ι → AddSubgroup A)
   { inter
     mul
     leftMul
-    rightMul := by
-      intro x i
-      cases' leftMul x i with j hj
-      use j
-      simpa [mul_comm] using hj }
+    rightMul := fun x i ↦ (leftMul x i).imp fun j hj ↦ by simpa only [mul_comm] using hj }
 #align ring_subgroups_basis.of_comm RingSubgroupsBasis.of_comm
 
 /-- Every subgroups basis on a ring leads to a ring filter basis. -/
chore: remove trailing space in backticks (#7617)

This will improve spaces in the mathlib4 docs.

Diff
@@ -351,7 +351,7 @@ theorem nonarchimedean (hB : SubmodulesBasis B) : @NonarchimedeanAddGroup M _ hB
 
 library_note "nonarchimedean non instances"/--
 The non archimedean subgroup basis lemmas cannot be instances because some instances
-(such as `MeasureTheory.AEEqFun.instAddMonoid ` or `topological_add_group.to_has_continuous_add`)
+(such as `MeasureTheory.AEEqFun.instAddMonoid` or `topological_add_group.to_has_continuous_add`)
 cause the search for `@TopologicalAddGroup β ?m1 ?m2`, i.e. a search for a topological group where
 the topology/group structure are unknown. -/
 
refactor(Data/Matrix): Eliminate notation in favor of HMul (#6487)

The main difficulty here is that * has a slightly difference precedence to . notably around smul and neg.

The other annoyance is that ↑U ⬝ A ⬝ ↑U⁻¹ : Matrix m m 𝔸 now has to be written U.val * A * (U⁻¹).val in order to typecheck.

A downside of this change to consider: if you have a goal of A * (B * C) = (A * B) * C, mul_assoc now gives the illusion of matching, when in fact Matrix.mul_assoc is needed. Previously the distinct symbol made it easy to avoid this mistake.

On the flipside, there is now no need to rewrite by Matrix.mul_eq_mul all the time (indeed, the lemma is now removed).

Diff
@@ -387,7 +387,7 @@ structure RingFilterBasis.SubmodulesBasis (BR : RingFilterBasis R) (B : ι → S
   /-- Condition for `B` to be a filter basis on `M`. -/
   inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j
   /-- For any element `m : M` and any set `B i` in the submodule basis on `M`,
-    there is a `U` in the ring filter basis on `R` such that `U ⬝ m` is in `B i`. -/
+    there is a `U` in the ring filter basis on `R` such that `U * m` is in `B i`. -/
   smul : ∀ (m : M) (i : ι), ∃ U ∈ BR, U ⊆ (· • m) ⁻¹' B i
 #align ring_filter_basis.submodules_basis RingFilterBasis.SubmodulesBasis
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -34,7 +34,7 @@ open Topology Filter Pointwise
 /-- A family of additive subgroups on a ring `A` is a subgroups basis if it satisfies some
 axioms ensuring there is a topology on `A` which is compatible with the ring structure and
 admits this family as a basis of neighborhoods of zero. -/
-structure RingSubgroupsBasis {A ι : Type _} [Ring A] (B : ι → AddSubgroup A) : Prop where
+structure RingSubgroupsBasis {A ι : Type*} [Ring A] (B : ι → AddSubgroup A) : Prop where
   /-- Condition for `B` to be a filter basis on `A`. -/
   inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j
   /-- For each set `B` in the submodule basis on `A`, there is another basis element `B'` such
@@ -50,9 +50,9 @@ structure RingSubgroupsBasis {A ι : Type _} [Ring A] (B : ι → AddSubgroup A)
 
 namespace RingSubgroupsBasis
 
-variable {A ι : Type _} [Ring A]
+variable {A ι : Type*} [Ring A]
 
-theorem of_comm {A ι : Type _} [CommRing A] (B : ι → AddSubgroup A)
+theorem of_comm {A ι : Type*} [CommRing A] (B : ι → AddSubgroup A)
     (inter : ∀ i j, ∃ k, B k ≤ B i ⊓ B j) (mul : ∀ i, ∃ j, (B j : Set A) * B j ⊆ B i)
     (leftMul : ∀ x : A, ∀ i, ∃ j, (B j : Set A) ⊆ (fun y : A => x * y) ⁻¹' B i) :
     RingSubgroupsBasis B :=
@@ -205,7 +205,7 @@ theorem nonarchimedean : @NonarchimedeanRing A _ hB.topology := by
 
 end RingSubgroupsBasis
 
-variable {ι R A : Type _} [CommRing R] [CommRing A] [Algebra R A]
+variable {ι R A : Type*} [CommRing R] [CommRing A] [Algebra R A]
 
 /-- A family of submodules in a commutative `R`-algebra `A` is a submodules basis if it satisfies
 some axioms ensuring there is a topology on `A` which is compatible with the ring structure and
@@ -242,7 +242,7 @@ def topology [Nonempty ι] (hB : SubmodulesRingBasis B) : TopologicalSpace A :=
 
 end SubmodulesRingBasis
 
-variable {M : Type _} [AddCommGroup M] [Module R M]
+variable {M : Type*} [AddCommGroup M] [Module R M]
 
 /-- A family of submodules in an `R`-module `M` is a submodules basis if it satisfies
 some axioms ensuring there is a topology on `M` which is compatible with the module structure and
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
-
-! This file was ported from Lean 3 source module topology.algebra.nonarchimedean.bases
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Algebra.Nonarchimedean.Basic
 import Mathlib.Topology.Algebra.FilterBasis
 import Mathlib.Algebra.Module.Submodule.Pointwise
 
+#align_import topology.algebra.nonarchimedean.bases from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
 /-!
 # Neighborhood bases for non-archimedean rings and modules
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -296,7 +296,7 @@ def toModuleFilterBasis : ModuleFilterBasis R M where
     rintro x₀ _ ⟨i, rfl⟩
     use B i
     constructor
-    · use  i
+    · use i
     · simp
   smul' := by
     rintro _ ⟨i, rfl⟩
chore: rename fields of AddGroupWithZeroNhd (#5279)

This definition was broken because of not noticing auto-implicits.

(Perhaps we might even just delete it: it's not used. Who wrote it?)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -30,7 +30,7 @@ sub-modules in a commutative algebra. This important example gives rise to the a
 (studied in its own file).
 -/
 
-open Set Filter Function Lattice AddGroupWithZeroNhd
+open Set Filter Function Lattice
 
 open Topology Filter Pointwise
 
chore: fix grammar 3/3 (#5003)

Part 3 of #5001

Diff
@@ -364,7 +364,7 @@ end SubmodulesBasis
 section
 
 /-
-In this section, we check that in a `R`-algebra `A` over a ring equipped with a topology,
+In this section, we check that in an `R`-algebra `A` over a ring equipped with a topology,
 a basis of `R`-submodules which is compatible with the topology on `R` is also a submodule basis
 in the sense of `R`-modules (forgetting about the ring structure on `A`) and those two points of
 view definitionaly gives the same topology on `A`.
@@ -383,7 +383,7 @@ example [Nonempty ι] : hB.topology = (hB.toSubmodulesBasis hsmul).topology :=
 end
 
 /-- Given a ring filter basis on a commutative ring `R`, define a compatibility condition
-on a family of submodules of a `R`-module `M`. This compatibility condition allows to get
+on a family of submodules of an `R`-module `M`. This compatibility condition allows to get
 a topological module structure. -/
 structure RingFilterBasis.SubmodulesBasis (BR : RingFilterBasis R) (B : ι → Submodule R M) :
     Prop where
chore: fix many typos (#4983)

These are all doc fixes

Diff
@@ -26,7 +26,7 @@ family as a basis of neighborhoods of zero. In particular the given subgroups be
 (`RingSubgroupsBasis.nonarchimedean`).
 
 A special case of this construction is given by `SubmodulesBasis` where the subgroups are
-sub-modules in a commutative algebra. This important example gives rises to the adic topology
+sub-modules in a commutative algebra. This important example gives rise to the adic topology
 (studied in its own file).
 -/
 
chore: further cleanup after lean4#2210 (#4511)

Tracking down porting notes mentioning lean4#2210.

Some removals of nolint simpNF may need to be reverted; let's see what CI says.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -186,7 +186,6 @@ theorem hasBasis_nhds (a : A) :
 topology. -/
 def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
   -- Porting note: failed to synthesize instance `TopologicalSpace A`
-  -- Check again during lean4#2210 cleanup.
   let _ := hB.topology
   { B i with
     isOpen' := by
chore: tidy various files (#4304)

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Diff
@@ -190,7 +190,6 @@ def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
   let _ := hB.topology
   { B i with
     isOpen' := by
-      letI := hB.topology
       rw [isOpen_iff_mem_nhds]
       intro a a_in
       rw [(hB.hasBasis_nhds a).mem_iff]
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -356,8 +356,8 @@ theorem nonarchimedean (hB : SubmodulesBasis B) : @NonarchimedeanAddGroup M _ hB
 
 library_note "nonarchimedean non instances"/--
 The non archimedean subgroup basis lemmas cannot be instances because some instances
-(such as `measure_theory.ae_eq_fun.add_monoid ` or `topological_add_group.to_has_continuous_add`)
-cause the search for `@topological_add_group β ?m1 ?m2`, i.e. a search for a topological group where
+(such as `MeasureTheory.AEEqFun.instAddMonoid ` or `topological_add_group.to_has_continuous_add`)
+cause the search for `@TopologicalAddGroup β ?m1 ?m2`, i.e. a search for a topological group where
 the topology/group structure are unknown. -/
 
 
chore: reenable eta, bump to nightly 2023-05-16 (#3414)

Now that leanprover/lean4#2210 has been merged, this PR:

  • removes all the set_option synthInstance.etaExperiment true commands (and some etaExperiment% term elaborators)
  • removes many but not quite all set_option maxHeartbeats commands
  • makes various other changes required to cope with leanprover/lean4#2210.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Matthew Ballard <matt@mrb.email>

Diff
@@ -185,7 +185,9 @@ theorem hasBasis_nhds (a : A) :
 /-- Given a subgroups basis, the basis elements as open additive subgroups in the associated
 topology. -/
 def openAddSubgroup (i : ι) : @OpenAddSubgroup A _ hB.topology :=
-  let _ := hB.topology -- Porting note: failed to synthesize instance `TopologicalSpace A`
+  -- Porting note: failed to synthesize instance `TopologicalSpace A`
+  -- Check again during lean4#2210 cleanup.
+  let _ := hB.topology
   { B i with
     isOpen' := by
       letI := hB.topology
@@ -210,9 +212,6 @@ end RingSubgroupsBasis
 
 variable {ι R A : Type _} [CommRing R] [CommRing A] [Algebra R A]
 
--- Porting note: failed to synthesize instance `Module R A`
-set_option synthInstance.etaExperiment true
-
 /-- A family of submodules in a commutative `R`-algebra `A` is a submodules basis if it satisfies
 some axioms ensuring there is a topology on `A` which is compatible with the ring structure and
 admits this family as a basis of neighborhoods of zero. -/
feat: port Topology.Algebra.Nonarchimedean.Bases (#3476)

Dependencies 9 + 480

481 files ported (98.2%)
210789 lines ported (97.7%)
Show graph

The unported dependencies are