topology.algebra.open_subgroupMathlib.Topology.Algebra.OpenSubgroup

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -463,11 +463,11 @@ variable {R : Type _} [CommRing R]
 
 variable [TopologicalSpace R] [TopologicalRing R]
 
-#print Ideal.isOpen_of_open_subideal /-
-theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
+#print Ideal.isOpen_of_isOpen_subideal /-
+theorem isOpen_of_isOpen_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
     IsOpen (I : Set R) :=
   Submodule.isOpen_mono h hU
-#align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subideal
+#align ideal.is_open_of_open_subideal Ideal.isOpen_of_isOpen_subideal
 -/
 
 end Ideal
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2019 Johan Commelin All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johan Commelin
 -/
-import Mathbin.RingTheory.Ideal.Basic
-import Mathbin.Topology.Algebra.Ring.Basic
-import Mathbin.Topology.Sets.Opens
+import RingTheory.Ideal.Basic
+import Topology.Algebra.Ring.Basic
+import Topology.Sets.Opens
 
 #align_import topology.algebra.open_subgroup from "leanprover-community/mathlib"@"932872382355f00112641d305ba0619305dc8642"
 
Diff
@@ -94,7 +94,7 @@ instance : SetLike (OpenSubgroup G) G where
 @[to_additive]
 instance : SubgroupClass (OpenSubgroup G) G
     where
-  mul_mem U _ _ := U.mul_mem'
+  hMul_mem U _ _ := U.hMul_mem'
   one_mem U := U.one_mem'
   inv_mem U _ := U.inv_mem'
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2019 Johan Commelin All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johan Commelin
-
-! This file was ported from Lean 3 source module topology.algebra.open_subgroup
-! leanprover-community/mathlib commit 932872382355f00112641d305ba0619305dc8642
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.RingTheory.Ideal.Basic
 import Mathbin.Topology.Algebra.Ring.Basic
 import Mathbin.Topology.Sets.Opens
 
+#align_import topology.algebra.open_subgroup from "leanprover-community/mathlib"@"932872382355f00112641d305ba0619305dc8642"
+
 /-!
 # Open subgroups of a topological groups
 
Diff
@@ -73,11 +73,13 @@ variable {G : Type _} [Group G] [TopologicalSpace G]
 
 variable {U V : OpenSubgroup G} {g : G}
 
+#print OpenSubgroup.hasCoeSubgroup /-
 @[to_additive]
 instance hasCoeSubgroup : CoeTC (OpenSubgroup G) (Subgroup G) :=
   ⟨toSubgroup⟩
 #align open_subgroup.has_coe_subgroup OpenSubgroup.hasCoeSubgroup
 #align open_add_subgroup.has_coe_add_subgroup OpenAddSubgroup.hasCoeAddSubgroup
+-/
 
 #print OpenSubgroup.toSubgroup_injective /-
 @[to_additive]
@@ -99,55 +101,71 @@ instance : SubgroupClass (OpenSubgroup G) G
   one_mem U := U.one_mem'
   inv_mem U _ := U.inv_mem'
 
+#print OpenSubgroup.hasCoeOpens /-
 @[to_additive]
 instance hasCoeOpens : CoeTC (OpenSubgroup G) (Opens G) :=
   ⟨fun U => ⟨U, U.is_open'⟩⟩
 #align open_subgroup.has_coe_opens OpenSubgroup.hasCoeOpens
 #align open_add_subgroup.has_coe_opens OpenAddSubgroup.hasCoeOpens
+-/
 
+#print OpenSubgroup.coe_toOpens /-
 @[simp, norm_cast, to_additive]
 theorem coe_toOpens : ((U : Opens G) : Set G) = U :=
   rfl
 #align open_subgroup.coe_coe_opens OpenSubgroup.coe_toOpens
 #align open_add_subgroup.coe_coe_opens OpenAddSubgroup.coe_toOpens
+-/
 
+#print OpenSubgroup.coe_toSubgroup /-
 @[simp, norm_cast, to_additive]
 theorem coe_toSubgroup : ((U : Subgroup G) : Set G) = U :=
   rfl
 #align open_subgroup.coe_coe_subgroup OpenSubgroup.coe_toSubgroup
 #align open_add_subgroup.coe_coe_add_subgroup OpenAddSubgroup.coe_toAddSubgroup
+-/
 
+#print OpenSubgroup.mem_toOpens /-
 @[simp, norm_cast, to_additive]
 theorem mem_toOpens : g ∈ (U : Opens G) ↔ g ∈ U :=
   Iff.rfl
 #align open_subgroup.mem_coe_opens OpenSubgroup.mem_toOpens
 #align open_add_subgroup.mem_coe_opens OpenAddSubgroup.mem_toOpens
+-/
 
+#print OpenSubgroup.mem_toSubgroup /-
 @[simp, norm_cast, to_additive]
 theorem mem_toSubgroup : g ∈ (U : Subgroup G) ↔ g ∈ U :=
   Iff.rfl
 #align open_subgroup.mem_coe_subgroup OpenSubgroup.mem_toSubgroup
 #align open_add_subgroup.mem_coe_add_subgroup OpenAddSubgroup.mem_toAddSubgroup
+-/
 
+#print OpenSubgroup.ext /-
 @[ext, to_additive]
 theorem ext (h : ∀ x, x ∈ U ↔ x ∈ V) : U = V :=
   SetLike.ext h
 #align open_subgroup.ext OpenSubgroup.ext
 #align open_add_subgroup.ext OpenAddSubgroup.ext
+-/
 
 variable (U)
 
+#print OpenSubgroup.isOpen /-
 @[to_additive]
 protected theorem isOpen : IsOpen (U : Set G) :=
   U.is_open'
 #align open_subgroup.is_open OpenSubgroup.isOpen
 #align open_add_subgroup.is_open OpenAddSubgroup.isOpen
+-/
 
+#print OpenSubgroup.mem_nhds_one /-
 @[to_additive]
 theorem mem_nhds_one : (U : Set G) ∈ 𝓝 (1 : G) :=
   IsOpen.mem_nhds U.IsOpen U.one_mem
 #align open_subgroup.mem_nhds_one OpenSubgroup.mem_nhds_one
 #align open_add_subgroup.mem_nhds_zero OpenAddSubgroup.mem_nhds_zero
+-/
 
 variable {U}
 
@@ -155,34 +173,43 @@ variable {U}
 instance : Top (OpenSubgroup G) :=
   ⟨{ (⊤ : Subgroup G) with is_open' := isOpen_univ }⟩
 
+#print OpenSubgroup.mem_top /-
 @[simp, to_additive]
 theorem mem_top (x : G) : x ∈ (⊤ : OpenSubgroup G) :=
   trivial
 #align open_subgroup.mem_top OpenSubgroup.mem_top
 #align open_add_subgroup.mem_top OpenAddSubgroup.mem_top
+-/
 
+#print OpenSubgroup.coe_top /-
 @[simp, norm_cast, to_additive]
 theorem coe_top : ((⊤ : OpenSubgroup G) : Set G) = Set.univ :=
   rfl
 #align open_subgroup.coe_top OpenSubgroup.coe_top
 #align open_add_subgroup.coe_top OpenAddSubgroup.coe_top
+-/
 
+#print OpenSubgroup.toSubgroup_top /-
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_top : ((⊤ : OpenSubgroup G) : Subgroup G) = ⊤ :=
   rfl
 #align open_subgroup.coe_subgroup_top OpenSubgroup.toSubgroup_top
 #align open_add_subgroup.coe_add_subgroup_top OpenAddSubgroup.toAddSubgroup_top
+-/
 
+#print OpenSubgroup.toOpens_top /-
 @[simp, norm_cast, to_additive]
 theorem toOpens_top : ((⊤ : OpenSubgroup G) : Opens G) = ⊤ :=
   rfl
 #align open_subgroup.coe_opens_top OpenSubgroup.toOpens_top
 #align open_add_subgroup.coe_opens_top OpenAddSubgroup.toOpens_top
+-/
 
 @[to_additive]
 instance : Inhabited (OpenSubgroup G) :=
   ⟨⊤⟩
 
+#print OpenSubgroup.isClosed /-
 @[to_additive]
 theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :=
   by
@@ -196,37 +223,46 @@ theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :
   · simp [one_mem]
 #align open_subgroup.is_closed OpenSubgroup.isClosed
 #align open_add_subgroup.is_closed OpenAddSubgroup.isClosed
+-/
 
+#print OpenSubgroup.isClopen /-
 @[to_additive]
 theorem isClopen [ContinuousMul G] (U : OpenSubgroup G) : IsClopen (U : Set G) :=
   ⟨U.IsOpen, U.IsClosed⟩
 #align open_subgroup.is_clopen OpenSubgroup.isClopen
 #align open_add_subgroup.is_clopen OpenAddSubgroup.isClopen
+-/
 
 section
 
 variable {H : Type _} [Group H] [TopologicalSpace H]
 
+#print OpenSubgroup.prod /-
 /-- The product of two open subgroups as an open subgroup of the product group. -/
 @[to_additive "The product of two open subgroups as an open subgroup of the product group."]
 def prod (U : OpenSubgroup G) (V : OpenSubgroup H) : OpenSubgroup (G × H) :=
   { (U : Subgroup G).Prod (V : Subgroup H) with is_open' := U.IsOpen.Prod V.IsOpen }
 #align open_subgroup.prod OpenSubgroup.prod
 #align open_add_subgroup.sum OpenAddSubgroup.sum
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print OpenSubgroup.coe_prod /-
 @[simp, norm_cast, to_additive]
 theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) : (U.Prod V : Set (G × H)) = U ×ˢ V :=
   rfl
 #align open_subgroup.coe_prod OpenSubgroup.coe_prod
 #align open_add_subgroup.coe_sum OpenAddSubgroup.coe_sum
+-/
 
+#print OpenSubgroup.toSubgroup_prod /-
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_prod (U : OpenSubgroup G) (V : OpenSubgroup H) :
     (U.Prod V : Subgroup (G × H)) = (U : Subgroup G).Prod V :=
   rfl
 #align open_subgroup.coe_subgroup_prod OpenSubgroup.toSubgroup_prod
 #align open_add_subgroup.coe_add_subgroup_sum OpenAddSubgroup.toAddSubgroup_sum
+-/
 
 end
 
@@ -234,29 +270,37 @@ end
 instance : Inf (OpenSubgroup G) :=
   ⟨fun U V => ⟨U ⊓ V, U.IsOpen.inter V.IsOpen⟩⟩
 
+#print OpenSubgroup.coe_inf /-
 @[simp, norm_cast, to_additive]
 theorem coe_inf : (↑(U ⊓ V) : Set G) = (U : Set G) ∩ V :=
   rfl
 #align open_subgroup.coe_inf OpenSubgroup.coe_inf
 #align open_add_subgroup.coe_inf OpenAddSubgroup.coe_inf
+-/
 
+#print OpenSubgroup.toSubgroup_inf /-
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_inf : (↑(U ⊓ V) : Subgroup G) = ↑U ⊓ ↑V :=
   rfl
 #align open_subgroup.coe_subgroup_inf OpenSubgroup.toSubgroup_inf
 #align open_add_subgroup.coe_add_subgroup_inf OpenAddSubgroup.toAddSubgroup_inf
+-/
 
+#print OpenSubgroup.toOpens_inf /-
 @[simp, norm_cast, to_additive]
 theorem toOpens_inf : (↑(U ⊓ V) : Opens G) = ↑U ⊓ ↑V :=
   rfl
 #align open_subgroup.coe_opens_inf OpenSubgroup.toOpens_inf
 #align open_add_subgroup.coe_opens_inf OpenAddSubgroup.toOpens_inf
+-/
 
+#print OpenSubgroup.mem_inf /-
 @[simp, to_additive]
 theorem mem_inf {x} : x ∈ U ⊓ V ↔ x ∈ U ∧ x ∈ V :=
   Iff.rfl
 #align open_subgroup.mem_inf OpenSubgroup.mem_inf
 #align open_add_subgroup.mem_inf OpenAddSubgroup.mem_inf
+-/
 
 @[to_additive]
 instance : SemilatticeInf (OpenSubgroup G) :=
@@ -268,14 +312,17 @@ instance : OrderTop (OpenSubgroup G) where
   top := ⊤
   le_top U := Set.subset_univ _
 
+#print OpenSubgroup.toSubgroup_le /-
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_le : (U : Subgroup G) ≤ (V : Subgroup G) ↔ U ≤ V :=
   Iff.rfl
 #align open_subgroup.coe_subgroup_le OpenSubgroup.toSubgroup_le
 #align open_add_subgroup.coe_add_subgroup_le OpenAddSubgroup.toAddSubgroup_le
+-/
 
 variable {N : Type _} [Group N] [TopologicalSpace N]
 
+#print OpenSubgroup.comap /-
 /-- The preimage of an `open_subgroup` along a continuous `monoid` homomorphism
   is an `open_subgroup`. -/
 @[to_additive
@@ -284,28 +331,36 @@ def comap (f : G →* N) (hf : Continuous f) (H : OpenSubgroup N) : OpenSubgroup
   { (H : Subgroup N).comap f with is_open' := H.IsOpen.Preimage hf }
 #align open_subgroup.comap OpenSubgroup.comap
 #align open_add_subgroup.comap OpenAddSubgroup.comap
+-/
 
+#print OpenSubgroup.coe_comap /-
 @[simp, norm_cast, to_additive]
 theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
     (H.comap f hf : Set G) = f ⁻¹' H :=
   rfl
 #align open_subgroup.coe_comap OpenSubgroup.coe_comap
 #align open_add_subgroup.coe_comap OpenAddSubgroup.coe_comap
+-/
 
+#print OpenSubgroup.toSubgroup_comap /-
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
     (H.comap f hf : Subgroup G) = (H : Subgroup N).comap f :=
   rfl
 #align open_subgroup.coe_subgroup_comap OpenSubgroup.toSubgroup_comap
 #align open_add_subgroup.coe_add_subgroup_comap OpenAddSubgroup.toAddSubgroup_comap
+-/
 
+#print OpenSubgroup.mem_comap /-
 @[simp, to_additive]
 theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G} :
     x ∈ H.comap f hf ↔ f x ∈ H :=
   Iff.rfl
 #align open_subgroup.mem_comap OpenSubgroup.mem_comap
 #align open_add_subgroup.mem_comap OpenAddSubgroup.mem_comap
+-/
 
+#print OpenSubgroup.comap_comap /-
 @[to_additive]
 theorem comap_comap {P : Type _} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (f₂ : N →* P)
     (hf₂ : Continuous f₂) (f₁ : G →* N) (hf₁ : Continuous f₁) :
@@ -313,6 +368,7 @@ theorem comap_comap {P : Type _} [Group P] [TopologicalSpace P] (K : OpenSubgrou
   rfl
 #align open_subgroup.comap_comap OpenSubgroup.comap_comap
 #align open_add_subgroup.comap_comap OpenAddSubgroup.comap_comap
+-/
 
 end OpenSubgroup
 
@@ -320,6 +376,7 @@ namespace Subgroup
 
 variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G] (H : Subgroup G)
 
+#print Subgroup.isOpen_of_mem_nhds /-
 @[to_additive]
 theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : Set G) :=
   by
@@ -331,20 +388,26 @@ theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : S
     H.mul_mem_cancel_right (H.mul_mem (H.inv_mem hx) hg')] using this hg
 #align subgroup.is_open_of_mem_nhds Subgroup.isOpen_of_mem_nhds
 #align add_subgroup.is_open_of_mem_nhds AddSubgroup.isOpen_of_mem_nhds
+-/
 
+#print Subgroup.isOpen_mono /-
 @[to_additive]
 theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen (H₁ : Set G)) :
     IsOpen (H₂ : Set G) :=
   isOpen_of_mem_nhds _ <| Filter.mem_of_superset (h₁.mem_nhds <| one_mem H₁) h
 #align subgroup.is_open_mono Subgroup.isOpen_mono
 #align add_subgroup.is_open_mono AddSubgroup.isOpen_mono
+-/
 
+#print Subgroup.isOpen_of_openSubgroup /-
 @[to_additive]
 theorem isOpen_of_openSubgroup {U : OpenSubgroup G} (h : ↑U ≤ H) : IsOpen (H : Set G) :=
   isOpen_mono h U.IsOpen
 #align subgroup.is_open_of_open_subgroup Subgroup.isOpen_of_openSubgroup
 #align add_subgroup.is_open_of_open_add_subgroup AddSubgroup.isOpen_of_openAddSubgroup
+-/
 
+#print Subgroup.isOpen_of_one_mem_interior /-
 /-- If a subgroup of a topological group has `1` in its interior, then it is open. -/
 @[to_additive
       "If a subgroup of an additive topological group has `0` in its interior, then it is\nopen."]
@@ -353,6 +416,7 @@ theorem isOpen_of_one_mem_interior (h_1_int : (1 : G) ∈ interior (H : Set G))
   isOpen_of_mem_nhds H <| mem_interior_iff_mem_nhds.1 h_1_int
 #align subgroup.is_open_of_one_mem_interior Subgroup.isOpen_of_one_mem_interior
 #align add_subgroup.is_open_of_zero_mem_interior AddSubgroup.isOpen_of_zero_mem_interior
+-/
 
 end Subgroup
 
@@ -364,11 +428,13 @@ variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G]
 instance : Sup (OpenSubgroup G) :=
   ⟨fun U V => ⟨U ⊔ V, Subgroup.isOpen_mono (le_sup_left : U.1 ≤ U ⊔ V) U.IsOpen⟩⟩
 
+#print OpenSubgroup.toSubgroup_sup /-
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_sup (U V : OpenSubgroup G) : (↑(U ⊔ V) : Subgroup G) = ↑U ⊔ ↑V :=
   rfl
 #align open_subgroup.coe_subgroup_sup OpenSubgroup.toSubgroup_sup
 #align open_add_subgroup.coe_add_subgroup_sup OpenAddSubgroup.toAddSubgroup_sup
+-/
 
 @[to_additive]
 instance : Lattice (OpenSubgroup G) :=
@@ -385,10 +451,12 @@ variable {R : Type _} {M : Type _} [CommRing R]
 
 variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R M]
 
+#print Submodule.isOpen_mono /-
 theorem isOpen_mono {U P : Submodule R M} (h : U ≤ P) (hU : IsOpen (U : Set M)) :
     IsOpen (P : Set M) :=
   @AddSubgroup.isOpen_mono M _ _ _ U.toAddSubgroup P.toAddSubgroup h hU
 #align submodule.is_open_mono Submodule.isOpen_mono
+-/
 
 end Submodule
 
@@ -398,10 +466,12 @@ variable {R : Type _} [CommRing R]
 
 variable [TopologicalSpace R] [TopologicalRing R]
 
+#print Ideal.isOpen_of_open_subideal /-
 theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
     IsOpen (I : Set R) :=
   Submodule.isOpen_mono h hU
 #align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subideal
+-/
 
 end Ideal
 
Diff
@@ -189,7 +189,7 @@ theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :
   apply isOpen_compl_iff.1
   refine' isOpen_iff_forall_mem_open.2 fun x hx => ⟨(fun y => y * x⁻¹) ⁻¹' U, _, _, _⟩
   · refine' fun u hux hu => hx _
-    simp only [Set.mem_preimage, SetLike.mem_coe] at hux hu⊢
+    simp only [Set.mem_preimage, SetLike.mem_coe] at hux hu ⊢
     convert U.mul_mem (U.inv_mem hux) hu
     simp
   · exact U.is_open.preimage (continuous_mul_right _)
Diff
@@ -41,7 +41,7 @@ Note that this notion is especially relevant in a non-archimedean context, for i
 
 open TopologicalSpace
 
-open Topology
+open scoped Topology
 
 #print OpenAddSubgroup /-
 /-- The type of open subgroups of a topological additive group. -/
Diff
@@ -73,12 +73,6 @@ variable {G : Type _} [Group G] [TopologicalSpace G]
 
 variable {U V : OpenSubgroup G} {g : G}
 
-/- warning: open_subgroup.has_coe_subgroup -> OpenSubgroup.hasCoeSubgroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTCₓ.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTC.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.has_coe_subgroup OpenSubgroup.hasCoeSubgroupₓ'. -/
 @[to_additive]
 instance hasCoeSubgroup : CoeTC (OpenSubgroup G) (Subgroup G) :=
   ⟨toSubgroup⟩
@@ -105,72 +99,36 @@ instance : SubgroupClass (OpenSubgroup G) G
   one_mem U := U.one_mem'
   inv_mem U _ := U.inv_mem'
 
-/- warning: open_subgroup.has_coe_opens -> OpenSubgroup.hasCoeOpens is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTCₓ.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTC.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.has_coe_opens OpenSubgroup.hasCoeOpensₓ'. -/
 @[to_additive]
 instance hasCoeOpens : CoeTC (OpenSubgroup G) (Opens G) :=
   ⟨fun U => ⟨U, U.is_open'⟩⟩
 #align open_subgroup.has_coe_opens OpenSubgroup.hasCoeOpens
 #align open_add_subgroup.has_coe_opens OpenAddSubgroup.hasCoeOpens
 
-/- warning: open_subgroup.coe_coe_opens -> OpenSubgroup.coe_toOpens is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (TopologicalSpace.Opens.{u1} G _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.setLike.{u1} G _inst_2)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) U)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.instSetLikeOpens.{u1} G _inst_2) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 U)) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_coe_opens OpenSubgroup.coe_toOpensₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_toOpens : ((U : Opens G) : Set G) = U :=
   rfl
 #align open_subgroup.coe_coe_opens OpenSubgroup.coe_toOpens
 #align open_add_subgroup.coe_coe_opens OpenAddSubgroup.coe_toOpens
 
-/- warning: open_subgroup.coe_coe_subgroup -> OpenSubgroup.coe_toSubgroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U)) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_coe_subgroup OpenSubgroup.coe_toSubgroupₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_toSubgroup : ((U : Subgroup G) : Set G) = U :=
   rfl
 #align open_subgroup.coe_coe_subgroup OpenSubgroup.coe_toSubgroup
 #align open_add_subgroup.coe_coe_add_subgroup OpenAddSubgroup.coe_toAddSubgroup
 
-/- warning: open_subgroup.mem_coe_opens -> OpenSubgroup.mem_toOpens is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.Mem.{u1, u1} G (TopologicalSpace.Opens.{u1} G _inst_2) (SetLike.hasMem.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.setLike.{u1} G _inst_2)) g ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) U)) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) g U)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.mem.{u1, u1} G (TopologicalSpace.Opens.{u1} G _inst_2) (SetLike.instMembership.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.instSetLikeOpens.{u1} G _inst_2)) g (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 U)) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) g U)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_coe_opens OpenSubgroup.mem_toOpensₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem mem_toOpens : g ∈ (U : Opens G) ↔ g ∈ U :=
   Iff.rfl
 #align open_subgroup.mem_coe_opens OpenSubgroup.mem_toOpens
 #align open_add_subgroup.mem_coe_opens OpenAddSubgroup.mem_toOpens
 
-/- warning: open_subgroup.mem_coe_subgroup -> OpenSubgroup.mem_toSubgroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U)) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) g U)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) g (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U)) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) g U)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_coe_subgroup OpenSubgroup.mem_toSubgroupₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem mem_toSubgroup : g ∈ (U : Subgroup G) ↔ g ∈ U :=
   Iff.rfl
 #align open_subgroup.mem_coe_subgroup OpenSubgroup.mem_toSubgroup
 #align open_add_subgroup.mem_coe_add_subgroup OpenAddSubgroup.mem_toAddSubgroup
 
-/- warning: open_subgroup.ext -> OpenSubgroup.ext is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, (forall (x : G), Iff (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x U) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x V)) -> (Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) U V)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, (forall (x : G), Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x U) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x V)) -> (Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) U V)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.ext OpenSubgroup.extₓ'. -/
 @[ext, to_additive]
 theorem ext (h : ∀ x, x ∈ U ↔ x ∈ V) : U = V :=
   SetLike.ext h
@@ -179,24 +137,12 @@ theorem ext (h : ∀ x, x ∈ U ↔ x ∈ V) : U = V :=
 
 variable (U)
 
-/- warning: open_subgroup.is_open -> OpenSubgroup.isOpen is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.is_open OpenSubgroup.isOpenₓ'. -/
 @[to_additive]
 protected theorem isOpen : IsOpen (U : Set G) :=
   U.is_open'
 #align open_subgroup.is_open OpenSubgroup.isOpen
 #align open_add_subgroup.is_open OpenAddSubgroup.isOpen
 
-/- warning: open_subgroup.mem_nhds_one -> OpenSubgroup.mem_nhds_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), Membership.Mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (Filter.hasMem.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U) (nhds.{u1} G _inst_2 (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), Membership.mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (instMembershipSetFilter.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U) (nhds.{u1} G _inst_2 (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_nhds_one OpenSubgroup.mem_nhds_oneₓ'. -/
 @[to_additive]
 theorem mem_nhds_one : (U : Set G) ∈ 𝓝 (1 : G) :=
   IsOpen.mem_nhds U.IsOpen U.one_mem
@@ -209,48 +155,24 @@ variable {U}
 instance : Top (OpenSubgroup G) :=
   ⟨{ (⊤ : Subgroup G) with is_open' := isOpen_univ }⟩
 
-/- warning: open_subgroup.mem_top -> OpenSubgroup.mem_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (x : G), Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (x : G), Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_top OpenSubgroup.mem_topₓ'. -/
 @[simp, to_additive]
 theorem mem_top (x : G) : x ∈ (⊤ : OpenSubgroup G) :=
   trivial
 #align open_subgroup.mem_top OpenSubgroup.mem_top
 #align open_add_subgroup.mem_top OpenAddSubgroup.mem_top
 
-/- warning: open_subgroup.coe_top -> OpenSubgroup.coe_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))) (Set.univ.{u1} G)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))) (Set.univ.{u1} G)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_top OpenSubgroup.coe_topₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_top : ((⊤ : OpenSubgroup G) : Set G) = Set.univ :=
   rfl
 #align open_subgroup.coe_top OpenSubgroup.coe_top
 #align open_add_subgroup.coe_top OpenAddSubgroup.coe_top
 
-/- warning: open_subgroup.coe_subgroup_top -> OpenSubgroup.toSubgroup_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_top OpenSubgroup.toSubgroup_topₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_top : ((⊤ : OpenSubgroup G) : Subgroup G) = ⊤ :=
   rfl
 #align open_subgroup.coe_subgroup_top OpenSubgroup.toSubgroup_top
 #align open_add_subgroup.coe_add_subgroup_top OpenAddSubgroup.toAddSubgroup_top
 
-/- warning: open_subgroup.coe_opens_top -> OpenSubgroup.toOpens_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toHasTop.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.completeLattice.{u1} G _inst_2)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toTop.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} G _inst_2)))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_opens_top OpenSubgroup.toOpens_topₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toOpens_top : ((⊤ : OpenSubgroup G) : Opens G) = ⊤ :=
   rfl
@@ -261,12 +183,6 @@ theorem toOpens_top : ((⊤ : OpenSubgroup G) : Opens G) = ⊤ :=
 instance : Inhabited (OpenSubgroup G) :=
   ⟨⊤⟩
 
-/- warning: open_subgroup.is_closed -> OpenSubgroup.isClosed is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClosed.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClosed.{u1} G _inst_2 (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.is_closed OpenSubgroup.isClosedₓ'. -/
 @[to_additive]
 theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :=
   by
@@ -281,12 +197,6 @@ theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :
 #align open_subgroup.is_closed OpenSubgroup.isClosed
 #align open_add_subgroup.is_closed OpenAddSubgroup.isClosed
 
-/- warning: open_subgroup.is_clopen -> OpenSubgroup.isClopen is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClopen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClopen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.is_clopen OpenSubgroup.isClopenₓ'. -/
 @[to_additive]
 theorem isClopen [ContinuousMul G] (U : OpenSubgroup G) : IsClopen (U : Set G) :=
   ⟨U.IsOpen, U.IsClosed⟩
@@ -297,12 +207,6 @@ section
 
 variable {H : Type _} [Group H] [TopologicalSpace H]
 
-/- warning: open_subgroup.prod -> OpenSubgroup.prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H], (OpenSubgroup.{u1} G _inst_1 _inst_2) -> (OpenSubgroup.{u2} H _inst_3 _inst_4) -> (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H], (OpenSubgroup.{u1} G _inst_1 _inst_2) -> (OpenSubgroup.{u2} H _inst_3 _inst_4) -> (OpenSubgroup.{max u2 u1} (Prod.{u1, u2} G H) (Prod.instGroupProd.{u1, u2} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u1, u2} G H _inst_2 _inst_4))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.prod OpenSubgroup.prodₓ'. -/
 /-- The product of two open subgroups as an open subgroup of the product group. -/
 @[to_additive "The product of two open subgroups as an open subgroup of the product group."]
 def prod (U : OpenSubgroup G) (V : OpenSubgroup H) : OpenSubgroup (G × H) :=
@@ -310,12 +214,6 @@ def prod (U : OpenSubgroup G) (V : OpenSubgroup H) : OpenSubgroup (G × H) :=
 #align open_subgroup.prod OpenSubgroup.prod
 #align open_add_subgroup.sum OpenAddSubgroup.sum
 
-/- warning: open_subgroup.coe_prod -> OpenSubgroup.coe_prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u2} H _inst_3 _inst_4), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} G H)) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G H)) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G H)) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G H)) (SetLike.Set.hasCoeT.{max u1 u2, max u1 u2} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Prod.{u1, u2} G H) (OpenSubgroup.setLike.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4))))) (OpenSubgroup.prod.{u1, u2} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Set.prod.{u1, u2} G H ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} H _inst_3 _inst_4) (Set.{u2} H) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Set.{u2} H) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Set.{u2} H) (SetLike.Set.hasCoeT.{u2, u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) H (OpenSubgroup.setLike.{u2} H _inst_3 _inst_4)))) V))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] [_inst_2 : TopologicalSpace.{u2} G] {H : Type.{u1}} [_inst_3 : Group.{u1} H] [_inst_4 : TopologicalSpace.{u1} H] (U : OpenSubgroup.{u2} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} H _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (Prod.{u2, u1} G H)) (SetLike.coe.{max u2 u1, max u2 u1} (OpenSubgroup.{max u1 u2} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u1} G H _inst_2 _inst_4)) (Prod.{u2, u1} G H) (OpenSubgroup.instSetLikeOpenSubgroup.{max u2 u1} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u1} G H _inst_2 _inst_4)) (OpenSubgroup.prod.{u2, u1} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Set.prod.{u2, u1} G H (SetLike.coe.{u2, u2} (OpenSubgroup.{u2} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u2} G _inst_1 _inst_2) U) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} H _inst_3 _inst_4) H (OpenSubgroup.instSetLikeOpenSubgroup.{u1} H _inst_3 _inst_4) V))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_prod OpenSubgroup.coe_prodₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp, norm_cast, to_additive]
 theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) : (U.Prod V : Set (G × H)) = U ×ˢ V :=
@@ -323,12 +221,6 @@ theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) : (U.Prod V : Set (G
 #align open_subgroup.coe_prod OpenSubgroup.coe_prod
 #align open_add_subgroup.coe_sum OpenAddSubgroup.coe_sum
 
-/- warning: open_subgroup.coe_subgroup_prod -> OpenSubgroup.toSubgroup_prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u2} H _inst_3 _inst_4), Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) (OpenSubgroup.hasCoeSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)))) (OpenSubgroup.prod.{u1, u2} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Subgroup.prod.{u1, u2} G _inst_1 H _inst_3 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} H _inst_3 _inst_4) (Subgroup.{u2} H _inst_3) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Subgroup.{u2} H _inst_3) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Subgroup.{u2} H _inst_3) (OpenSubgroup.hasCoeSubgroup.{u2} H _inst_3 _inst_4))) V))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] [_inst_2 : TopologicalSpace.{u2} G] {H : Type.{u1}} [_inst_3 : Group.{u1} H] [_inst_4 : TopologicalSpace.{u1} H] (U : OpenSubgroup.{u2} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} H _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (Subgroup.{max u2 u1} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3)) (OpenSubgroup.toSubgroup.{max u2 u1} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u1} G H _inst_2 _inst_4) (OpenSubgroup.prod.{u2, u1} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Subgroup.prod.{u2, u1} G _inst_1 H _inst_3 (OpenSubgroup.toSubgroup.{u2} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} H _inst_3 _inst_4 V))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_prod OpenSubgroup.toSubgroup_prodₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_prod (U : OpenSubgroup G) (V : OpenSubgroup H) :
     (U.Prod V : Subgroup (G × H)) = (U : Subgroup G).Prod V :=
@@ -342,48 +234,24 @@ end
 instance : Inf (OpenSubgroup G) :=
   ⟨fun U V => ⟨U ⊓ V, U.IsOpen.inter V.IsOpen⟩⟩
 
-/- warning: open_subgroup.coe_inf -> OpenSubgroup.coe_inf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (Inter.inter.{u1} (Set.{u1} G) (Set.hasInter.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) V))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (Inter.inter.{u1} (Set.{u1} G) (Set.instInterSet.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) V))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_inf OpenSubgroup.coe_infₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_inf : (↑(U ⊓ V) : Set G) = (U : Set G) ∩ V :=
   rfl
 #align open_subgroup.coe_inf OpenSubgroup.coe_inf
 #align open_add_subgroup.coe_inf OpenAddSubgroup.coe_inf
 
-/- warning: open_subgroup.coe_subgroup_inf -> OpenSubgroup.toSubgroup_inf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 V))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_inf OpenSubgroup.toSubgroup_infₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_inf : (↑(U ⊓ V) : Subgroup G) = ↑U ⊓ ↑V :=
   rfl
 #align open_subgroup.coe_subgroup_inf OpenSubgroup.toSubgroup_inf
 #align open_add_subgroup.coe_add_subgroup_inf OpenAddSubgroup.toAddSubgroup_inf
 
-/- warning: open_subgroup.coe_opens_inf -> OpenSubgroup.toOpens_inf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (SemilatticeInf.toHasInf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Lattice.toSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.completeLattice.{u1} G _inst_2))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) V))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Lattice.toInf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} G _inst_2)))) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 V))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_opens_inf OpenSubgroup.toOpens_infₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toOpens_inf : (↑(U ⊓ V) : Opens G) = ↑U ⊓ ↑V :=
   rfl
 #align open_subgroup.coe_opens_inf OpenSubgroup.toOpens_inf
 #align open_add_subgroup.coe_opens_inf OpenAddSubgroup.toOpens_inf
 
-/- warning: open_subgroup.mem_inf -> OpenSubgroup.mem_inf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2} {x : G}, Iff (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (And (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x U) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x V))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2} {x : G}, Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (And (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x U) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x V))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_inf OpenSubgroup.mem_infₓ'. -/
 @[simp, to_additive]
 theorem mem_inf {x} : x ∈ U ⊓ V ↔ x ∈ U ∧ x ∈ V :=
   Iff.rfl
@@ -400,12 +268,6 @@ instance : OrderTop (OpenSubgroup G) where
   top := ⊤
   le_top U := Set.subset_univ _
 
-/- warning: open_subgroup.coe_subgroup_le -> OpenSubgroup.toSubgroup_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Iff (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V)) (LE.le.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Preorder.toHasLe.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (PartialOrder.toPreorder.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.partialOrder.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U V)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Iff (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 V)) (LE.le.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Preorder.toLE.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (PartialOrder.toPreorder.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instPartialOrderOpenSubgroup.{u1} G _inst_1 _inst_2))) U V)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_le OpenSubgroup.toSubgroup_leₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_le : (U : Subgroup G) ≤ (V : Subgroup G) ↔ U ≤ V :=
   Iff.rfl
@@ -414,12 +276,6 @@ theorem toSubgroup_le : (U : Subgroup G) ≤ (V : Subgroup G) ↔ U ≤ V :=
 
 variable {N : Type _} [Group N] [TopologicalSpace N]
 
-/- warning: open_subgroup.comap -> OpenSubgroup.comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))), (Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)) -> (OpenSubgroup.{u2} N _inst_3 _inst_4) -> (OpenSubgroup.{u1} G _inst_1 _inst_2)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))), (Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)) -> (OpenSubgroup.{u2} N _inst_3 _inst_4) -> (OpenSubgroup.{u1} G _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.comap OpenSubgroup.comapₓ'. -/
 /-- The preimage of an `open_subgroup` along a continuous `monoid` homomorphism
   is an `open_subgroup`. -/
 @[to_additive
@@ -429,12 +285,6 @@ def comap (f : G →* N) (hf : Continuous f) (H : OpenSubgroup N) : OpenSubgroup
 #align open_subgroup.comap OpenSubgroup.comap
 #align open_add_subgroup.comap OpenAddSubgroup.comap
 
-/- warning: open_subgroup.coe_comap -> OpenSubgroup.coe_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.setLike.{u2} N _inst_3 _inst_4)))) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f) (SetLike.coe.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4) H))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_comap OpenSubgroup.coe_comapₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
     (H.comap f hf : Set G) = f ⁻¹' H :=
@@ -442,12 +292,6 @@ theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
 #align open_subgroup.coe_comap OpenSubgroup.coe_comap
 #align open_add_subgroup.coe_comap OpenAddSubgroup.coe_comap
 
-/- warning: open_subgroup.coe_subgroup_comap -> OpenSubgroup.toSubgroup_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_3 f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (OpenSubgroup.hasCoeSubgroup.{u2} N _inst_3 _inst_4))) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_3 f (OpenSubgroup.toSubgroup.{u2} N _inst_3 _inst_4 H))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_comap OpenSubgroup.toSubgroup_comapₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
     (H.comap f hf : Subgroup G) = (H : Subgroup N).comap f :=
@@ -455,12 +299,6 @@ theorem toSubgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f)
 #align open_subgroup.coe_subgroup_comap OpenSubgroup.toSubgroup_comap
 #align open_add_subgroup.coe_add_subgroup_comap OpenAddSubgroup.toAddSubgroup_comap
 
-/- warning: open_subgroup.mem_comap -> OpenSubgroup.mem_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {H : OpenSubgroup.{u2} N _inst_3 _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))} {hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)} {x : G}, Iff (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Membership.Mem.{u2, u2} N (OpenSubgroup.{u2} N _inst_3 _inst_4) (SetLike.hasMem.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.setLike.{u2} N _inst_3 _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f x) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {H : OpenSubgroup.{u2} N _inst_3 _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))} {hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)} {x : G}, Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (OpenSubgroup.{u2} N _inst_3 _inst_4) (SetLike.instMembership.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f x) H)
-Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_comap OpenSubgroup.mem_comapₓ'. -/
 @[simp, to_additive]
 theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G} :
     x ∈ H.comap f hf ↔ f x ∈ H :=
@@ -468,9 +306,6 @@ theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G
 #align open_subgroup.mem_comap OpenSubgroup.mem_comap
 #align open_add_subgroup.mem_comap OpenAddSubgroup.mem_comap
 
-/- warning: open_subgroup.comap_comap -> OpenSubgroup.comap_comap is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align open_subgroup.comap_comap OpenSubgroup.comap_comapₓ'. -/
 @[to_additive]
 theorem comap_comap {P : Type _} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (f₂ : N →* P)
     (hf₂ : Continuous f₂) (f₁ : G →* N) (hf₁ : Continuous f₁) :
@@ -485,12 +320,6 @@ namespace Subgroup
 
 variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G] (H : Subgroup G)
 
-/- warning: subgroup.is_open_of_mem_nhds -> Subgroup.isOpen_of_mem_nhds is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {g : G}, (Membership.Mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (Filter.hasMem.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (nhds.{u1} G _inst_2 g)) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {g : G}, (Membership.mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (instMembershipSetFilter.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H) (nhds.{u1} G _inst_2 g)) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.is_open_of_mem_nhds Subgroup.isOpen_of_mem_nhdsₓ'. -/
 @[to_additive]
 theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : Set G) :=
   by
@@ -503,12 +332,6 @@ theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : S
 #align subgroup.is_open_of_mem_nhds Subgroup.isOpen_of_mem_nhds
 #align add_subgroup.is_open_of_mem_nhds AddSubgroup.isOpen_of_mem_nhds
 
-/- warning: subgroup.is_open_mono -> Subgroup.isOpen_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁ H₂) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁)) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₂))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) H₁ H₂) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₁)) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₂))
-Case conversion may be inaccurate. Consider using '#align subgroup.is_open_mono Subgroup.isOpen_monoₓ'. -/
 @[to_additive]
 theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen (H₁ : Set G)) :
     IsOpen (H₂ : Set G) :=
@@ -516,24 +339,12 @@ theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen
 #align subgroup.is_open_mono Subgroup.isOpen_mono
 #align add_subgroup.is_open_mono AddSubgroup.isOpen_mono
 
-/- warning: subgroup.is_open_of_open_subgroup -> Subgroup.isOpen_of_openSubgroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) H) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) H) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.is_open_of_open_subgroup Subgroup.isOpen_of_openSubgroupₓ'. -/
 @[to_additive]
 theorem isOpen_of_openSubgroup {U : OpenSubgroup G} (h : ↑U ≤ H) : IsOpen (H : Set G) :=
   isOpen_mono h U.IsOpen
 #align subgroup.is_open_of_open_subgroup Subgroup.isOpen_of_openSubgroup
 #align add_subgroup.is_open_of_open_add_subgroup AddSubgroup.isOpen_of_openAddSubgroup
 
-/- warning: subgroup.is_open_of_one_mem_interior -> Subgroup.isOpen_of_one_mem_interior is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (interior.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))) (interior.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.is_open_of_one_mem_interior Subgroup.isOpen_of_one_mem_interiorₓ'. -/
 /-- If a subgroup of a topological group has `1` in its interior, then it is open. -/
 @[to_additive
       "If a subgroup of an additive topological group has `0` in its interior, then it is\nopen."]
@@ -553,12 +364,6 @@ variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G]
 instance : Sup (OpenSubgroup G) :=
   ⟨fun U V => ⟨U ⊔ V, Subgroup.isOpen_mono (le_sup_left : U.1 ≤ U ⊔ V) U.IsOpen⟩⟩
 
-/- warning: open_subgroup.coe_subgroup_sup -> OpenSubgroup.toSubgroup_sup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} G _inst_1 _inst_2), Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (Sup.sup.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasSup.{u1} G _inst_1 _inst_2 _inst_3) U V)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} G _inst_1 _inst_2), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (Sup.sup.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instSupOpenSubgroup.{u1} G _inst_1 _inst_2 _inst_3) U V)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 V))
-Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_sup OpenSubgroup.toSubgroup_supₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_sup (U V : OpenSubgroup G) : (↑(U ⊔ V) : Subgroup G) = ↑U ⊔ ↑V :=
   rfl
@@ -580,12 +385,6 @@ variable {R : Type _} {M : Type _} [CommRing R]
 
 variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R M]
 
-/- warning: submodule.is_open_mono -> Submodule.isOpen_mono is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : TopologicalSpace.{u2} M] [_inst_4 : TopologicalAddGroup.{u2} M _inst_3 (AddCommGroup.toAddGroup.{u2} M _inst_2)] [_inst_5 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {U : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5} {P : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Preorder.toHasLe.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U P) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U)) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) P))
-but is expected to have type
-  forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : TopologicalSpace.{u1} M] [_inst_4 : TopologicalAddGroup.{u1} M _inst_3 (AddCommGroup.toAddGroup.{u1} M _inst_2)] [_inst_5 : Module.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] {U : Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5} {P : Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5}, (LE.le.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Preorder.toLE.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Submodule.completeLattice.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5))))) U P) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) U)) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) P))
-Case conversion may be inaccurate. Consider using '#align submodule.is_open_mono Submodule.isOpen_monoₓ'. -/
 theorem isOpen_mono {U P : Submodule R M} (h : U ≤ P) (hU : IsOpen (U : Set M)) :
     IsOpen (P : Set M) :=
   @AddSubgroup.isOpen_mono M _ _ _ U.toAddSubgroup P.toAddSubgroup h hU
@@ -599,12 +398,6 @@ variable {R : Type _} [CommRing R]
 
 variable [TopologicalSpace R] [TopologicalRing R]
 
-/- warning: ideal.is_open_of_open_subideal -> Ideal.isOpen_of_open_subideal is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toHasLe.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (SetLike.partialOrder.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U I) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U)) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) I))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))} {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) U I) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) U)) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) I))
-Case conversion may be inaccurate. Consider using '#align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subidealₓ'. -/
 theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
     IsOpen (I : Set R) :=
   Submodule.isOpen_mono h hU
Diff
@@ -469,10 +469,7 @@ theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G
 #align open_add_subgroup.mem_comap OpenAddSubgroup.mem_comap
 
 /- warning: open_subgroup.comap_comap -> OpenSubgroup.comap_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] [_inst_6 : TopologicalSpace.{u3} P] (K : OpenSubgroup.{u3} P _inst_5 _inst_6) (f₂ : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (hf₂ : Continuous.{u2, u3} N P _inst_4 _inst_6 (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) f₂)) (f₁ : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf₁ : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f₁)), Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f₁ hf₁ (OpenSubgroup.comap.{u2, u3} N _inst_3 _inst_4 P _inst_5 _inst_6 f₂ hf₂ K)) (OpenSubgroup.comap.{u1, u3} G _inst_1 _inst_2 P _inst_5 _inst_6 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) f₂ f₁) (Continuous.comp.{u1, u2, u3} G N P _inst_2 _inst_4 _inst_6 (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) f₂) (fun (x : G) => coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f₁ x) hf₂ hf₁) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] [_inst_6 : TopologicalSpace.{u3} P] (K : OpenSubgroup.{u3} P _inst_5 _inst_6) (f₂ : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (hf₂ : Continuous.{u2, u3} N P _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂)) (f₁ : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf₁ : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁)), Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f₁ hf₁ (OpenSubgroup.comap.{u2, u3} N _inst_3 _inst_4 P _inst_5 _inst_6 f₂ hf₂ K)) (OpenSubgroup.comap.{u1, u3} G _inst_1 _inst_2 P _inst_5 _inst_6 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) f₂ f₁) (Continuous.comp.{u1, u3, u2} G N P _inst_2 _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂) (fun (x : G) => FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁ x) hf₂ hf₁) K)
+<too large>
 Case conversion may be inaccurate. Consider using '#align open_subgroup.comap_comap OpenSubgroup.comap_comapₓ'. -/
 @[to_additive]
 theorem comap_comap {P : Type _} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (f₂ : N →* P)
Diff
@@ -418,7 +418,7 @@ variable {N : Type _} [Group N] [TopologicalSpace N]
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))), (Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)) -> (OpenSubgroup.{u2} N _inst_3 _inst_4) -> (OpenSubgroup.{u1} G _inst_1 _inst_2)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))), (Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)) -> (OpenSubgroup.{u2} N _inst_3 _inst_4) -> (OpenSubgroup.{u1} G _inst_1 _inst_2)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))), (Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)) -> (OpenSubgroup.{u2} N _inst_3 _inst_4) -> (OpenSubgroup.{u1} G _inst_1 _inst_2)
 Case conversion may be inaccurate. Consider using '#align open_subgroup.comap OpenSubgroup.comapₓ'. -/
 /-- The preimage of an `open_subgroup` along a continuous `monoid` homomorphism
   is an `open_subgroup`. -/
@@ -433,7 +433,7 @@ def comap (f : G →* N) (hf : Continuous f) (H : OpenSubgroup N) : OpenSubgroup
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.setLike.{u2} N _inst_3 _inst_4)))) H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f) (SetLike.coe.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f) (SetLike.coe.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4) H))
 Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_comap OpenSubgroup.coe_comapₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
@@ -446,7 +446,7 @@ theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_3 f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (OpenSubgroup.hasCoeSubgroup.{u2} N _inst_3 _inst_4))) H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_3 f (OpenSubgroup.toSubgroup.{u2} N _inst_3 _inst_4 H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_3 f (OpenSubgroup.toSubgroup.{u2} N _inst_3 _inst_4 H))
 Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_comap OpenSubgroup.toSubgroup_comapₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem toSubgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
@@ -459,7 +459,7 @@ theorem toSubgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f)
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {H : OpenSubgroup.{u2} N _inst_3 _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))} {hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)} {x : G}, Iff (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Membership.Mem.{u2, u2} N (OpenSubgroup.{u2} N _inst_3 _inst_4) (SetLike.hasMem.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.setLike.{u2} N _inst_3 _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f x) H)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {H : OpenSubgroup.{u2} N _inst_3 _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))} {hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)} {x : G}, Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (OpenSubgroup.{u2} N _inst_3 _inst_4) (SetLike.instMembership.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f x) H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {H : OpenSubgroup.{u2} N _inst_3 _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))} {hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)} {x : G}, Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (OpenSubgroup.{u2} N _inst_3 _inst_4) (SetLike.instMembership.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f x) H)
 Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_comap OpenSubgroup.mem_comapₓ'. -/
 @[simp, to_additive]
 theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G} :
@@ -472,7 +472,7 @@ theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] [_inst_6 : TopologicalSpace.{u3} P] (K : OpenSubgroup.{u3} P _inst_5 _inst_6) (f₂ : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (hf₂ : Continuous.{u2, u3} N P _inst_4 _inst_6 (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) f₂)) (f₁ : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf₁ : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f₁)), Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f₁ hf₁ (OpenSubgroup.comap.{u2, u3} N _inst_3 _inst_4 P _inst_5 _inst_6 f₂ hf₂ K)) (OpenSubgroup.comap.{u1, u3} G _inst_1 _inst_2 P _inst_5 _inst_6 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) f₂ f₁) (Continuous.comp.{u1, u2, u3} G N P _inst_2 _inst_4 _inst_6 (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) f₂) (fun (x : G) => coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f₁ x) hf₂ hf₁) K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] [_inst_6 : TopologicalSpace.{u3} P] (K : OpenSubgroup.{u3} P _inst_5 _inst_6) (f₂ : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (hf₂ : Continuous.{u2, u3} N P _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂)) (f₁ : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf₁ : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁)), Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f₁ hf₁ (OpenSubgroup.comap.{u2, u3} N _inst_3 _inst_4 P _inst_5 _inst_6 f₂ hf₂ K)) (OpenSubgroup.comap.{u1, u3} G _inst_1 _inst_2 P _inst_5 _inst_6 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) f₂ f₁) (Continuous.comp.{u1, u3, u2} G N P _inst_2 _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂) (fun (x : G) => FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁ x) hf₂ hf₁) K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] [_inst_6 : TopologicalSpace.{u3} P] (K : OpenSubgroup.{u3} P _inst_5 _inst_6) (f₂ : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (hf₂ : Continuous.{u2, u3} N P _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂)) (f₁ : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf₁ : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁)), Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f₁ hf₁ (OpenSubgroup.comap.{u2, u3} N _inst_3 _inst_4 P _inst_5 _inst_6 f₂ hf₂ K)) (OpenSubgroup.comap.{u1, u3} G _inst_1 _inst_2 P _inst_5 _inst_6 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) f₂ f₁) (Continuous.comp.{u1, u3, u2} G N P _inst_2 _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂) (fun (x : G) => FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁ x) hf₂ hf₁) K)
 Case conversion may be inaccurate. Consider using '#align open_subgroup.comap_comap OpenSubgroup.comap_comapₓ'. -/
 @[to_additive]
 theorem comap_comap {P : Type _} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (f₂ : N →* P)
Diff
@@ -402,7 +402,7 @@ instance : OrderTop (OpenSubgroup G) where
 
 /- warning: open_subgroup.coe_subgroup_le -> OpenSubgroup.toSubgroup_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Iff (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V)) (LE.le.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Preorder.toLE.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (PartialOrder.toPreorder.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.partialOrder.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U V)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Iff (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V)) (LE.le.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Preorder.toHasLe.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (PartialOrder.toPreorder.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.partialOrder.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U V)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Iff (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 V)) (LE.le.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Preorder.toLE.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (PartialOrder.toPreorder.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instPartialOrderOpenSubgroup.{u1} G _inst_1 _inst_2))) U V)
 Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_le OpenSubgroup.toSubgroup_leₓ'. -/
@@ -508,7 +508,7 @@ theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : S
 
 /- warning: subgroup.is_open_mono -> Subgroup.isOpen_mono is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁ H₂) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁)) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₂))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁ H₂) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁)) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₂))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) H₁ H₂) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₁)) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₂))
 Case conversion may be inaccurate. Consider using '#align subgroup.is_open_mono Subgroup.isOpen_monoₓ'. -/
@@ -521,7 +521,7 @@ theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen
 
 /- warning: subgroup.is_open_of_open_subgroup -> Subgroup.isOpen_of_openSubgroup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) H) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) H) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) H) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.is_open_of_open_subgroup Subgroup.isOpen_of_openSubgroupₓ'. -/
@@ -585,7 +585,7 @@ variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R
 
 /- warning: submodule.is_open_mono -> Submodule.isOpen_mono is a dubious translation:
 lean 3 declaration is
-  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : TopologicalSpace.{u2} M] [_inst_4 : TopologicalAddGroup.{u2} M _inst_3 (AddCommGroup.toAddGroup.{u2} M _inst_2)] [_inst_5 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {U : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5} {P : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U P) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U)) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) P))
+  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : TopologicalSpace.{u2} M] [_inst_4 : TopologicalAddGroup.{u2} M _inst_3 (AddCommGroup.toAddGroup.{u2} M _inst_2)] [_inst_5 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {U : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5} {P : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Preorder.toHasLe.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U P) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U)) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) P))
 but is expected to have type
   forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : TopologicalSpace.{u1} M] [_inst_4 : TopologicalAddGroup.{u1} M _inst_3 (AddCommGroup.toAddGroup.{u1} M _inst_2)] [_inst_5 : Module.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] {U : Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5} {P : Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5}, (LE.le.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Preorder.toLE.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Submodule.completeLattice.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5))))) U P) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) U)) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) P))
 Case conversion may be inaccurate. Consider using '#align submodule.is_open_mono Submodule.isOpen_monoₓ'. -/
@@ -604,7 +604,7 @@ variable [TopologicalSpace R] [TopologicalRing R]
 
 /- warning: ideal.is_open_of_open_subideal -> Ideal.isOpen_of_open_subideal is a dubious translation:
 lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (SetLike.partialOrder.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U I) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U)) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) I))
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toHasLe.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (SetLike.partialOrder.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U I) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U)) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) I))
 but is expected to have type
   forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))} {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) U I) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) U)) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) I))
 Case conversion may be inaccurate. Consider using '#align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subidealₓ'. -/
Diff
@@ -587,7 +587,7 @@ variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R
 lean 3 declaration is
   forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : TopologicalSpace.{u2} M] [_inst_4 : TopologicalAddGroup.{u2} M _inst_3 (AddCommGroup.toAddGroup.{u2} M _inst_2)] [_inst_5 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {U : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5} {P : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U P) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U)) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) P))
 but is expected to have type
-  forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : TopologicalSpace.{u1} M] [_inst_4 : TopologicalAddGroup.{u1} M _inst_3 (AddCommGroup.toAddGroup.{u1} M _inst_2)] [_inst_5 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] {U : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5} {P : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5}, (LE.le.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Preorder.toLE.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Submodule.completeLattice.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5))))) U P) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) U)) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) P))
+  forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : TopologicalSpace.{u1} M] [_inst_4 : TopologicalAddGroup.{u1} M _inst_3 (AddCommGroup.toAddGroup.{u1} M _inst_2)] [_inst_5 : Module.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] {U : Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5} {P : Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5}, (LE.le.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Preorder.toLE.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Submodule.completeLattice.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5))))) U P) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) U)) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) P))
 Case conversion may be inaccurate. Consider using '#align submodule.is_open_mono Submodule.isOpen_monoₓ'. -/
 theorem isOpen_mono {U P : Submodule R M} (h : U ≤ P) (hU : IsOpen (U : Set M)) :
     IsOpen (P : Set M) :=
@@ -606,7 +606,7 @@ variable [TopologicalSpace R] [TopologicalRing R]
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (SetLike.partialOrder.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U I) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U)) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) I))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Submodule.completeLattice.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) U I) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) U)) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) I))
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))} {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))) U I) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) U)) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) I))
 Case conversion may be inaccurate. Consider using '#align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subidealₓ'. -/
 theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
     IsOpen (I : Set R) :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johan Commelin
 
 ! This file was ported from Lean 3 source module topology.algebra.open_subgroup
-! leanprover-community/mathlib commit 83f81aea33931a1edb94ce0f32b9a5d484de6978
+! leanprover-community/mathlib commit 932872382355f00112641d305ba0619305dc8642
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Topology.Sets.Opens
 /-!
 # Open subgroups of a topological groups
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This files builds the lattice `open_subgroup G` of open subgroups in a topological group `G`,
 and its additive version `open_add_subgroup`.  This lattice has a top element, the subgroup of all
 elements, but no bottom element in general. The trivial subgroup which is the natural candidate
Diff
@@ -584,7 +584,7 @@ variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R
 lean 3 declaration is
   forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : TopologicalSpace.{u2} M] [_inst_4 : TopologicalAddGroup.{u2} M _inst_3 (AddCommGroup.toAddGroup.{u2} M _inst_2)] [_inst_5 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {U : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5} {P : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U P) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U)) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) P))
 but is expected to have type
-  forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : TopologicalSpace.{u1} M] [_inst_4 : TopologicalAddGroup.{u1} M _inst_3 (AddCommGroup.toAddGroup.{u1} M _inst_2)] [_inst_5 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] {U : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5} {P : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5}, (LE.le.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Preorder.toLE.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Submodule.completeLattice.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5))))) U P) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.instSetLikeSubmodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) U)) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.instSetLikeSubmodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) P))
+  forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : TopologicalSpace.{u1} M] [_inst_4 : TopologicalAddGroup.{u1} M _inst_3 (AddCommGroup.toAddGroup.{u1} M _inst_2)] [_inst_5 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] {U : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5} {P : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5}, (LE.le.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Preorder.toLE.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Submodule.completeLattice.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5))))) U P) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) U)) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.setLike.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) P))
 Case conversion may be inaccurate. Consider using '#align submodule.is_open_mono Submodule.isOpen_monoₓ'. -/
 theorem isOpen_mono {U P : Submodule R M} (h : U ≤ P) (hU : IsOpen (U : Set M)) :
     IsOpen (P : Set M) :=
@@ -603,7 +603,7 @@ variable [TopologicalSpace R] [TopologicalRing R]
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (SetLike.partialOrder.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U I) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U)) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) I))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Submodule.completeLattice.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) U I) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.instSetLikeSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) U)) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.instSetLikeSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) I))
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Submodule.completeLattice.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) U I) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) U)) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) I))
 Case conversion may be inaccurate. Consider using '#align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subidealₓ'. -/
 theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
     IsOpen (I : Set R) :=
Diff
@@ -40,17 +40,21 @@ open TopologicalSpace
 
 open Topology
 
+#print OpenAddSubgroup /-
 /-- The type of open subgroups of a topological additive group. -/
 structure OpenAddSubgroup (G : Type _) [AddGroup G] [TopologicalSpace G] extends AddSubgroup G where
   is_open' : IsOpen carrier
 #align open_add_subgroup OpenAddSubgroup
+-/
 
+#print OpenSubgroup /-
 /-- The type of open subgroups of a topological group. -/
 @[to_additive]
 structure OpenSubgroup (G : Type _) [Group G] [TopologicalSpace G] extends Subgroup G where
   is_open' : IsOpen carrier
 #align open_subgroup OpenSubgroup
 #align open_add_subgroup OpenAddSubgroup
+-/
 
 /-- Reinterpret an `open_subgroup` as a `subgroup`. -/
 add_decl_doc OpenSubgroup.toSubgroup
@@ -66,22 +70,30 @@ variable {G : Type _} [Group G] [TopologicalSpace G]
 
 variable {U V : OpenSubgroup G} {g : G}
 
+/- warning: open_subgroup.has_coe_subgroup -> OpenSubgroup.hasCoeSubgroup is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTCₓ.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTC.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.has_coe_subgroup OpenSubgroup.hasCoeSubgroupₓ'. -/
 @[to_additive]
 instance hasCoeSubgroup : CoeTC (OpenSubgroup G) (Subgroup G) :=
   ⟨toSubgroup⟩
 #align open_subgroup.has_coe_subgroup OpenSubgroup.hasCoeSubgroup
 #align open_add_subgroup.has_coe_add_subgroup OpenAddSubgroup.hasCoeAddSubgroup
 
+#print OpenSubgroup.toSubgroup_injective /-
 @[to_additive]
-theorem coe_subgroup_injective : Injective (coe : OpenSubgroup G → Subgroup G)
+theorem toSubgroup_injective : Injective (coe : OpenSubgroup G → Subgroup G)
   | ⟨_, _⟩, ⟨_, _⟩, rfl => rfl
-#align open_subgroup.coe_subgroup_injective OpenSubgroup.coe_subgroup_injective
-#align open_add_subgroup.coe_add_subgroup_injective OpenAddSubgroup.coe_add_subgroup_injective
+#align open_subgroup.coe_subgroup_injective OpenSubgroup.toSubgroup_injective
+#align open_add_subgroup.coe_add_subgroup_injective OpenAddSubgroup.toAddSubgroup_injective
+-/
 
 @[to_additive]
 instance : SetLike (OpenSubgroup G) G where
   coe U := U.1
-  coe_injective' _ _ h := coe_subgroup_injective <| SetLike.ext' h
+  coe_injective' _ _ h := toSubgroup_injective <| SetLike.ext' h
 
 @[to_additive]
 instance : SubgroupClass (OpenSubgroup G) G
@@ -90,36 +102,72 @@ instance : SubgroupClass (OpenSubgroup G) G
   one_mem U := U.one_mem'
   inv_mem U _ := U.inv_mem'
 
+/- warning: open_subgroup.has_coe_opens -> OpenSubgroup.hasCoeOpens is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTCₓ.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], CoeTC.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.has_coe_opens OpenSubgroup.hasCoeOpensₓ'. -/
 @[to_additive]
 instance hasCoeOpens : CoeTC (OpenSubgroup G) (Opens G) :=
   ⟨fun U => ⟨U, U.is_open'⟩⟩
 #align open_subgroup.has_coe_opens OpenSubgroup.hasCoeOpens
 #align open_add_subgroup.has_coe_opens OpenAddSubgroup.hasCoeOpens
 
+/- warning: open_subgroup.coe_coe_opens -> OpenSubgroup.coe_toOpens is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (TopologicalSpace.Opens.{u1} G _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.setLike.{u1} G _inst_2)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) U)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.instSetLikeOpens.{u1} G _inst_2) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 U)) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_coe_opens OpenSubgroup.coe_toOpensₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_coe_opens : ((U : Opens G) : Set G) = U :=
+theorem coe_toOpens : ((U : Opens G) : Set G) = U :=
   rfl
-#align open_subgroup.coe_coe_opens OpenSubgroup.coe_coe_opens
-#align open_add_subgroup.coe_coe_opens OpenAddSubgroup.coe_coe_opens
-
+#align open_subgroup.coe_coe_opens OpenSubgroup.coe_toOpens
+#align open_add_subgroup.coe_coe_opens OpenAddSubgroup.coe_toOpens
+
+/- warning: open_subgroup.coe_coe_subgroup -> OpenSubgroup.coe_toSubgroup is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U)) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_coe_subgroup OpenSubgroup.coe_toSubgroupₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_coe_subgroup : ((U : Subgroup G) : Set G) = U :=
+theorem coe_toSubgroup : ((U : Subgroup G) : Set G) = U :=
   rfl
-#align open_subgroup.coe_coe_subgroup OpenSubgroup.coe_coe_subgroup
-#align open_add_subgroup.coe_coe_add_subgroup OpenAddSubgroup.coe_coe_add_subgroup
-
+#align open_subgroup.coe_coe_subgroup OpenSubgroup.coe_toSubgroup
+#align open_add_subgroup.coe_coe_add_subgroup OpenAddSubgroup.coe_toAddSubgroup
+
+/- warning: open_subgroup.mem_coe_opens -> OpenSubgroup.mem_toOpens is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.Mem.{u1, u1} G (TopologicalSpace.Opens.{u1} G _inst_2) (SetLike.hasMem.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.setLike.{u1} G _inst_2)) g ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) U)) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) g U)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.mem.{u1, u1} G (TopologicalSpace.Opens.{u1} G _inst_2) (SetLike.instMembership.{u1, u1} (TopologicalSpace.Opens.{u1} G _inst_2) G (TopologicalSpace.Opens.instSetLikeOpens.{u1} G _inst_2)) g (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 U)) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) g U)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_coe_opens OpenSubgroup.mem_toOpensₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem mem_coe_opens : g ∈ (U : Opens G) ↔ g ∈ U :=
+theorem mem_toOpens : g ∈ (U : Opens G) ↔ g ∈ U :=
   Iff.rfl
-#align open_subgroup.mem_coe_opens OpenSubgroup.mem_coe_opens
-#align open_add_subgroup.mem_coe_opens OpenAddSubgroup.mem_coe_opens
-
+#align open_subgroup.mem_coe_opens OpenSubgroup.mem_toOpens
+#align open_add_subgroup.mem_coe_opens OpenAddSubgroup.mem_toOpens
+
+/- warning: open_subgroup.mem_coe_subgroup -> OpenSubgroup.mem_toSubgroup is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U)) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) g U)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {g : G}, Iff (Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) g (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U)) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) g U)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_coe_subgroup OpenSubgroup.mem_toSubgroupₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem mem_coe_subgroup : g ∈ (U : Subgroup G) ↔ g ∈ U :=
+theorem mem_toSubgroup : g ∈ (U : Subgroup G) ↔ g ∈ U :=
   Iff.rfl
-#align open_subgroup.mem_coe_subgroup OpenSubgroup.mem_coe_subgroup
-#align open_add_subgroup.mem_coe_add_subgroup OpenAddSubgroup.mem_coe_add_subgroup
-
+#align open_subgroup.mem_coe_subgroup OpenSubgroup.mem_toSubgroup
+#align open_add_subgroup.mem_coe_add_subgroup OpenAddSubgroup.mem_toAddSubgroup
+
+/- warning: open_subgroup.ext -> OpenSubgroup.ext is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, (forall (x : G), Iff (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x U) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x V)) -> (Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) U V)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, (forall (x : G), Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x U) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x V)) -> (Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) U V)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.ext OpenSubgroup.extₓ'. -/
 @[ext, to_additive]
 theorem ext (h : ∀ x, x ∈ U ↔ x ∈ V) : U = V :=
   SetLike.ext h
@@ -128,12 +176,24 @@ theorem ext (h : ∀ x, x ∈ U ↔ x ∈ V) : U = V :=
 
 variable (U)
 
+/- warning: open_subgroup.is_open -> OpenSubgroup.isOpen is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.is_open OpenSubgroup.isOpenₓ'. -/
 @[to_additive]
 protected theorem isOpen : IsOpen (U : Set G) :=
   U.is_open'
 #align open_subgroup.is_open OpenSubgroup.isOpen
 #align open_add_subgroup.is_open OpenAddSubgroup.isOpen
 
+/- warning: open_subgroup.mem_nhds_one -> OpenSubgroup.mem_nhds_one is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), Membership.Mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (Filter.hasMem.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U) (nhds.{u1} G _inst_2 (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), Membership.mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (instMembershipSetFilter.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U) (nhds.{u1} G _inst_2 (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_nhds_one OpenSubgroup.mem_nhds_oneₓ'. -/
 @[to_additive]
 theorem mem_nhds_one : (U : Set G) ∈ 𝓝 (1 : G) :=
   IsOpen.mem_nhds U.IsOpen U.one_mem
@@ -146,34 +206,64 @@ variable {U}
 instance : Top (OpenSubgroup G) :=
   ⟨{ (⊤ : Subgroup G) with is_open' := isOpen_univ }⟩
 
+/- warning: open_subgroup.mem_top -> OpenSubgroup.mem_top is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (x : G), Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] (x : G), Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_top OpenSubgroup.mem_topₓ'. -/
 @[simp, to_additive]
 theorem mem_top (x : G) : x ∈ (⊤ : OpenSubgroup G) :=
   trivial
 #align open_subgroup.mem_top OpenSubgroup.mem_top
 #align open_add_subgroup.mem_top OpenAddSubgroup.mem_top
 
+/- warning: open_subgroup.coe_top -> OpenSubgroup.coe_top is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))) (Set.univ.{u1} G)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))) (Set.univ.{u1} G)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_top OpenSubgroup.coe_topₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_top : ((⊤ : OpenSubgroup G) : Set G) = Set.univ :=
   rfl
 #align open_subgroup.coe_top OpenSubgroup.coe_top
 #align open_add_subgroup.coe_top OpenAddSubgroup.coe_top
 
+/- warning: open_subgroup.coe_subgroup_top -> OpenSubgroup.toSubgroup_top is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_top OpenSubgroup.toSubgroup_topₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_subgroup_top : ((⊤ : OpenSubgroup G) : Subgroup G) = ⊤ :=
+theorem toSubgroup_top : ((⊤ : OpenSubgroup G) : Subgroup G) = ⊤ :=
   rfl
-#align open_subgroup.coe_subgroup_top OpenSubgroup.coe_subgroup_top
-#align open_add_subgroup.coe_add_subgroup_top OpenAddSubgroup.coe_add_subgroup_top
-
+#align open_subgroup.coe_subgroup_top OpenSubgroup.toSubgroup_top
+#align open_add_subgroup.coe_add_subgroup_top OpenAddSubgroup.toAddSubgroup_top
+
+/- warning: open_subgroup.coe_opens_top -> OpenSubgroup.toOpens_top is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasTop.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toHasTop.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.completeLattice.{u1} G _inst_2)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G], Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 (Top.top.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instTopOpenSubgroup.{u1} G _inst_1 _inst_2))) (Top.top.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toTop.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} G _inst_2)))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_opens_top OpenSubgroup.toOpens_topₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_opens_top : ((⊤ : OpenSubgroup G) : Opens G) = ⊤ :=
+theorem toOpens_top : ((⊤ : OpenSubgroup G) : Opens G) = ⊤ :=
   rfl
-#align open_subgroup.coe_opens_top OpenSubgroup.coe_opens_top
-#align open_add_subgroup.coe_opens_top OpenAddSubgroup.coe_opens_top
+#align open_subgroup.coe_opens_top OpenSubgroup.toOpens_top
+#align open_add_subgroup.coe_opens_top OpenAddSubgroup.toOpens_top
 
 @[to_additive]
 instance : Inhabited (OpenSubgroup G) :=
   ⟨⊤⟩
 
+/- warning: open_subgroup.is_closed -> OpenSubgroup.isClosed is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClosed.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClosed.{u1} G _inst_2 (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.is_closed OpenSubgroup.isClosedₓ'. -/
 @[to_additive]
 theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :=
   by
@@ -188,6 +278,12 @@ theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :
 #align open_subgroup.is_closed OpenSubgroup.isClosed
 #align open_add_subgroup.is_closed OpenAddSubgroup.isClosed
 
+/- warning: open_subgroup.is_clopen -> OpenSubgroup.isClopen is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClopen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2), IsClopen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.is_clopen OpenSubgroup.isClopenₓ'. -/
 @[to_additive]
 theorem isClopen [ContinuousMul G] (U : OpenSubgroup G) : IsClopen (U : Set G) :=
   ⟨U.IsOpen, U.IsClosed⟩
@@ -198,6 +294,12 @@ section
 
 variable {H : Type _} [Group H] [TopologicalSpace H]
 
+/- warning: open_subgroup.prod -> OpenSubgroup.prod is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H], (OpenSubgroup.{u1} G _inst_1 _inst_2) -> (OpenSubgroup.{u2} H _inst_3 _inst_4) -> (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H], (OpenSubgroup.{u1} G _inst_1 _inst_2) -> (OpenSubgroup.{u2} H _inst_3 _inst_4) -> (OpenSubgroup.{max u2 u1} (Prod.{u1, u2} G H) (Prod.instGroupProd.{u1, u2} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u1, u2} G H _inst_2 _inst_4))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.prod OpenSubgroup.prodₓ'. -/
 /-- The product of two open subgroups as an open subgroup of the product group. -/
 @[to_additive "The product of two open subgroups as an open subgroup of the product group."]
 def prod (U : OpenSubgroup G) (V : OpenSubgroup H) : OpenSubgroup (G × H) :=
@@ -205,6 +307,12 @@ def prod (U : OpenSubgroup G) (V : OpenSubgroup H) : OpenSubgroup (G × H) :=
 #align open_subgroup.prod OpenSubgroup.prod
 #align open_add_subgroup.sum OpenAddSubgroup.sum
 
+/- warning: open_subgroup.coe_prod -> OpenSubgroup.coe_prod is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u2} H _inst_3 _inst_4), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} G H)) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G H)) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G H)) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G H)) (SetLike.Set.hasCoeT.{max u1 u2, max u1 u2} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Prod.{u1, u2} G H) (OpenSubgroup.setLike.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4))))) (OpenSubgroup.prod.{u1, u2} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Set.prod.{u1, u2} G H ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} H _inst_3 _inst_4) (Set.{u2} H) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Set.{u2} H) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Set.{u2} H) (SetLike.Set.hasCoeT.{u2, u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) H (OpenSubgroup.setLike.{u2} H _inst_3 _inst_4)))) V))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] [_inst_2 : TopologicalSpace.{u2} G] {H : Type.{u1}} [_inst_3 : Group.{u1} H] [_inst_4 : TopologicalSpace.{u1} H] (U : OpenSubgroup.{u2} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} H _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (Prod.{u2, u1} G H)) (SetLike.coe.{max u2 u1, max u2 u1} (OpenSubgroup.{max u1 u2} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u1} G H _inst_2 _inst_4)) (Prod.{u2, u1} G H) (OpenSubgroup.instSetLikeOpenSubgroup.{max u2 u1} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u1} G H _inst_2 _inst_4)) (OpenSubgroup.prod.{u2, u1} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Set.prod.{u2, u1} G H (SetLike.coe.{u2, u2} (OpenSubgroup.{u2} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u2} G _inst_1 _inst_2) U) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} H _inst_3 _inst_4) H (OpenSubgroup.instSetLikeOpenSubgroup.{u1} H _inst_3 _inst_4) V))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_prod OpenSubgroup.coe_prodₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp, norm_cast, to_additive]
 theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) : (U.Prod V : Set (G × H)) = U ×ˢ V :=
@@ -212,12 +320,18 @@ theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) : (U.Prod V : Set (G
 #align open_subgroup.coe_prod OpenSubgroup.coe_prod
 #align open_add_subgroup.coe_sum OpenAddSubgroup.coe_sum
 
+/- warning: open_subgroup.coe_subgroup_prod -> OpenSubgroup.toSubgroup_prod is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] [_inst_4 : TopologicalSpace.{u2} H] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u2} H _inst_3 _inst_4), Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (OpenSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3)) (OpenSubgroup.hasCoeSubgroup.{max u1 u2} (Prod.{u1, u2} G H) (Prod.group.{u1, u2} G H _inst_1 _inst_3) (Prod.topologicalSpace.{u1, u2} G H _inst_2 _inst_4)))) (OpenSubgroup.prod.{u1, u2} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Subgroup.prod.{u1, u2} G _inst_1 H _inst_3 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} H _inst_3 _inst_4) (Subgroup.{u2} H _inst_3) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Subgroup.{u2} H _inst_3) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} H _inst_3 _inst_4) (Subgroup.{u2} H _inst_3) (OpenSubgroup.hasCoeSubgroup.{u2} H _inst_3 _inst_4))) V))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] [_inst_2 : TopologicalSpace.{u2} G] {H : Type.{u1}} [_inst_3 : Group.{u1} H] [_inst_4 : TopologicalSpace.{u1} H] (U : OpenSubgroup.{u2} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} H _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (Subgroup.{max u2 u1} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3)) (OpenSubgroup.toSubgroup.{max u2 u1} (Prod.{u2, u1} G H) (Prod.instGroupProd.{u2, u1} G H _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u1} G H _inst_2 _inst_4) (OpenSubgroup.prod.{u2, u1} G _inst_1 _inst_2 H _inst_3 _inst_4 U V)) (Subgroup.prod.{u2, u1} G _inst_1 H _inst_3 (OpenSubgroup.toSubgroup.{u2} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} H _inst_3 _inst_4 V))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_prod OpenSubgroup.toSubgroup_prodₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_subgroup_prod (U : OpenSubgroup G) (V : OpenSubgroup H) :
+theorem toSubgroup_prod (U : OpenSubgroup G) (V : OpenSubgroup H) :
     (U.Prod V : Subgroup (G × H)) = (U : Subgroup G).Prod V :=
   rfl
-#align open_subgroup.coe_subgroup_prod OpenSubgroup.coe_subgroup_prod
-#align open_add_subgroup.coe_add_subgroup_sum OpenAddSubgroup.coe_add_subgroup_sum
+#align open_subgroup.coe_subgroup_prod OpenSubgroup.toSubgroup_prod
+#align open_add_subgroup.coe_add_subgroup_sum OpenAddSubgroup.toAddSubgroup_sum
 
 end
 
@@ -225,24 +339,48 @@ end
 instance : Inf (OpenSubgroup G) :=
   ⟨fun U V => ⟨U ⊓ V, U.IsOpen.inter V.IsOpen⟩⟩
 
+/- warning: open_subgroup.coe_inf -> OpenSubgroup.coe_inf is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (Inter.inter.{u1} (Set.{u1} G) (Set.hasInter.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) V))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (Inter.inter.{u1} (Set.{u1} G) (Set.instInterSet.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) U) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) V))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_inf OpenSubgroup.coe_infₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_inf : (↑(U ⊓ V) : Set G) = (U : Set G) ∩ V :=
   rfl
 #align open_subgroup.coe_inf OpenSubgroup.coe_inf
 #align open_add_subgroup.coe_inf OpenAddSubgroup.coe_inf
 
+/- warning: open_subgroup.coe_subgroup_inf -> OpenSubgroup.toSubgroup_inf is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 V))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_inf OpenSubgroup.toSubgroup_infₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_subgroup_inf : (↑(U ⊓ V) : Subgroup G) = ↑U ⊓ ↑V :=
+theorem toSubgroup_inf : (↑(U ⊓ V) : Subgroup G) = ↑U ⊓ ↑V :=
   rfl
-#align open_subgroup.coe_subgroup_inf OpenSubgroup.coe_subgroup_inf
-#align open_add_subgroup.coe_add_subgroup_inf OpenAddSubgroup.coe_add_subgroup_inf
-
+#align open_subgroup.coe_subgroup_inf OpenSubgroup.toSubgroup_inf
+#align open_add_subgroup.coe_add_subgroup_inf OpenAddSubgroup.toAddSubgroup_inf
+
+/- warning: open_subgroup.coe_opens_inf -> OpenSubgroup.toOpens_inf is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (SemilatticeInf.toHasInf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Lattice.toSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.completeLattice.{u1} G _inst_2))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.hasCoeOpens.{u1} G _inst_1 _inst_2))) V))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Eq.{succ u1} (TopologicalSpace.Opens.{u1} G _inst_2) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (Inf.inf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (Lattice.toInf.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (ConditionallyCompleteLattice.toLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} G _inst_2) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} G _inst_2)))) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toOpens.{u1} G _inst_1 _inst_2 V))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_opens_inf OpenSubgroup.toOpens_infₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_opens_inf : (↑(U ⊓ V) : Opens G) = ↑U ⊓ ↑V :=
+theorem toOpens_inf : (↑(U ⊓ V) : Opens G) = ↑U ⊓ ↑V :=
   rfl
-#align open_subgroup.coe_opens_inf OpenSubgroup.coe_opens_inf
-#align open_add_subgroup.coe_opens_inf OpenAddSubgroup.coe_opens_inf
-
+#align open_subgroup.coe_opens_inf OpenSubgroup.toOpens_inf
+#align open_add_subgroup.coe_opens_inf OpenAddSubgroup.toOpens_inf
+
+/- warning: open_subgroup.mem_inf -> OpenSubgroup.mem_inf is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2} {x : G}, Iff (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasInf.{u1} G _inst_1 _inst_2) U V)) (And (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x U) (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x V))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2} {x : G}, Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (Inf.inf.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instInfOpenSubgroup.{u1} G _inst_1 _inst_2) U V)) (And (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x U) (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x V))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_inf OpenSubgroup.mem_infₓ'. -/
 @[simp, to_additive]
 theorem mem_inf {x} : x ∈ U ⊓ V ↔ x ∈ U ∧ x ∈ V :=
   Iff.rfl
@@ -259,14 +397,26 @@ instance : OrderTop (OpenSubgroup G) where
   top := ⊤
   le_top U := Set.subset_univ _
 
+/- warning: open_subgroup.coe_subgroup_le -> OpenSubgroup.toSubgroup_le is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Iff (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V)) (LE.le.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Preorder.toLE.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (PartialOrder.toPreorder.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.partialOrder.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) U V)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {U : OpenSubgroup.{u1} G _inst_1 _inst_2} {V : OpenSubgroup.{u1} G _inst_1 _inst_2}, Iff (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 V)) (LE.le.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Preorder.toLE.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (PartialOrder.toPreorder.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instPartialOrderOpenSubgroup.{u1} G _inst_1 _inst_2))) U V)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_le OpenSubgroup.toSubgroup_leₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_subgroup_le : (U : Subgroup G) ≤ (V : Subgroup G) ↔ U ≤ V :=
+theorem toSubgroup_le : (U : Subgroup G) ≤ (V : Subgroup G) ↔ U ≤ V :=
   Iff.rfl
-#align open_subgroup.coe_subgroup_le OpenSubgroup.coe_subgroup_le
-#align open_add_subgroup.coe_add_subgroup_le OpenAddSubgroup.coe_add_subgroup_le
+#align open_subgroup.coe_subgroup_le OpenSubgroup.toSubgroup_le
+#align open_add_subgroup.coe_add_subgroup_le OpenAddSubgroup.toAddSubgroup_le
 
 variable {N : Type _} [Group N] [TopologicalSpace N]
 
+/- warning: open_subgroup.comap -> OpenSubgroup.comap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))), (Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)) -> (OpenSubgroup.{u2} N _inst_3 _inst_4) -> (OpenSubgroup.{u1} G _inst_1 _inst_2)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))), (Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)) -> (OpenSubgroup.{u2} N _inst_3 _inst_4) -> (OpenSubgroup.{u1} G _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.comap OpenSubgroup.comapₓ'. -/
 /-- The preimage of an `open_subgroup` along a continuous `monoid` homomorphism
   is an `open_subgroup`. -/
 @[to_additive
@@ -276,6 +426,12 @@ def comap (f : G →* N) (hf : Continuous f) (H : OpenSubgroup N) : OpenSubgroup
 #align open_subgroup.comap OpenSubgroup.comap
 #align open_add_subgroup.comap OpenAddSubgroup.comap
 
+/- warning: open_subgroup.coe_comap -> OpenSubgroup.coe_comap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)))) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.setLike.{u2} N _inst_3 _inst_4)))) H))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f) (SetLike.coe.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4) H))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_comap OpenSubgroup.coe_comapₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
     (H.comap f hf : Set G) = f ⁻¹' H :=
@@ -283,13 +439,25 @@ theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
 #align open_subgroup.coe_comap OpenSubgroup.coe_comap
 #align open_add_subgroup.coe_comap OpenAddSubgroup.coe_comap
 
+/- warning: open_subgroup.coe_subgroup_comap -> OpenSubgroup.toSubgroup_comap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_3 f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (HasLiftT.mk.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (CoeTCₓ.coe.{succ u2, succ u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) (Subgroup.{u2} N _inst_3) (OpenSubgroup.hasCoeSubgroup.{u2} N _inst_3 _inst_4))) H))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] (H : OpenSubgroup.{u2} N _inst_3 _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_3 f (OpenSubgroup.toSubgroup.{u2} N _inst_3 _inst_4 H))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_comap OpenSubgroup.toSubgroup_comapₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_subgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
+theorem toSubgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
     (H.comap f hf : Subgroup G) = (H : Subgroup N).comap f :=
   rfl
-#align open_subgroup.coe_subgroup_comap OpenSubgroup.coe_subgroup_comap
-#align open_add_subgroup.coe_add_subgroup_comap OpenAddSubgroup.coe_add_subgroup_comap
-
+#align open_subgroup.coe_subgroup_comap OpenSubgroup.toSubgroup_comap
+#align open_add_subgroup.coe_add_subgroup_comap OpenAddSubgroup.toAddSubgroup_comap
+
+/- warning: open_subgroup.mem_comap -> OpenSubgroup.mem_comap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {H : OpenSubgroup.{u2} N _inst_3 _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))} {hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f)} {x : G}, Iff (Membership.Mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.hasMem.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.setLike.{u1} G _inst_1 _inst_2)) x (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Membership.Mem.{u2, u2} N (OpenSubgroup.{u2} N _inst_3 _inst_4) (SetLike.hasMem.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.setLike.{u2} N _inst_3 _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f x) H)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {H : OpenSubgroup.{u2} N _inst_3 _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))} {hf : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f)} {x : G}, Iff (Membership.mem.{u1, u1} G (OpenSubgroup.{u1} G _inst_1 _inst_2) (SetLike.instMembership.{u1, u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) G (OpenSubgroup.instSetLikeOpenSubgroup.{u1} G _inst_1 _inst_2)) x (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f hf H)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (OpenSubgroup.{u2} N _inst_3 _inst_4) (SetLike.instMembership.{u2, u2} (OpenSubgroup.{u2} N _inst_3 _inst_4) N (OpenSubgroup.instSetLikeOpenSubgroup.{u2} N _inst_3 _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f x) H)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.mem_comap OpenSubgroup.mem_comapₓ'. -/
 @[simp, to_additive]
 theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G} :
     x ∈ H.comap f hf ↔ f x ∈ H :=
@@ -297,6 +465,12 @@ theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G
 #align open_subgroup.mem_comap OpenSubgroup.mem_comap
 #align open_add_subgroup.mem_comap OpenAddSubgroup.mem_comap
 
+/- warning: open_subgroup.comap_comap -> OpenSubgroup.comap_comap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] [_inst_6 : TopologicalSpace.{u3} P] (K : OpenSubgroup.{u3} P _inst_5 _inst_6) (f₂ : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (hf₂ : Continuous.{u2, u3} N P _inst_4 _inst_6 (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) f₂)) (f₁ : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf₁ : Continuous.{u1, u2} G N _inst_2 _inst_4 (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f₁)), Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f₁ hf₁ (OpenSubgroup.comap.{u2, u3} N _inst_3 _inst_4 P _inst_5 _inst_6 f₂ hf₂ K)) (OpenSubgroup.comap.{u1, u3} G _inst_1 _inst_2 P _inst_5 _inst_6 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) f₂ f₁) (Continuous.comp.{u1, u2, u3} G N P _inst_2 _inst_4 _inst_6 (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) f₂) (fun (x : G) => coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) f₁ x) hf₂ hf₁) K)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] {N : Type.{u2}} [_inst_3 : Group.{u2} N] [_inst_4 : TopologicalSpace.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] [_inst_6 : TopologicalSpace.{u3} P] (K : OpenSubgroup.{u3} P _inst_5 _inst_6) (f₂ : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (hf₂ : Continuous.{u2, u3} N P _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂)) (f₁ : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (hf₁ : Continuous.{u1, u2} G N _inst_2 _inst_4 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁)), Eq.{succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.comap.{u1, u2} G _inst_1 _inst_2 N _inst_3 _inst_4 f₁ hf₁ (OpenSubgroup.comap.{u2, u3} N _inst_3 _inst_4 P _inst_5 _inst_6 f₂ hf₂ K)) (OpenSubgroup.comap.{u1, u3} G _inst_1 _inst_2 P _inst_5 _inst_6 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) f₂ f₁) (Continuous.comp.{u1, u3, u2} G N P _inst_2 _inst_4 _inst_6 (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))))) f₂) (fun (x : G) => FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_3)))))) f₁ x) hf₂ hf₁) K)
+Case conversion may be inaccurate. Consider using '#align open_subgroup.comap_comap OpenSubgroup.comap_comapₓ'. -/
 @[to_additive]
 theorem comap_comap {P : Type _} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (f₂ : N →* P)
     (hf₂ : Continuous f₂) (f₁ : G →* N) (hf₁ : Continuous f₁) :
@@ -311,6 +485,12 @@ namespace Subgroup
 
 variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G] (H : Subgroup G)
 
+/- warning: subgroup.is_open_of_mem_nhds -> Subgroup.isOpen_of_mem_nhds is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {g : G}, (Membership.Mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (Filter.hasMem.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (nhds.{u1} G _inst_2 g)) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {g : G}, (Membership.mem.{u1, u1} (Set.{u1} G) (Filter.{u1} G) (instMembershipSetFilter.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H) (nhds.{u1} G _inst_2 g)) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
+Case conversion may be inaccurate. Consider using '#align subgroup.is_open_of_mem_nhds Subgroup.isOpen_of_mem_nhdsₓ'. -/
 @[to_additive]
 theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : Set G) :=
   by
@@ -323,6 +503,12 @@ theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : S
 #align subgroup.is_open_of_mem_nhds Subgroup.isOpen_of_mem_nhds
 #align add_subgroup.is_open_of_mem_nhds AddSubgroup.isOpen_of_mem_nhds
 
+/- warning: subgroup.is_open_mono -> Subgroup.isOpen_mono is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁ H₂) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₁)) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H₂))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) H₁ H₂) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₁)) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₂))
+Case conversion may be inaccurate. Consider using '#align subgroup.is_open_mono Subgroup.isOpen_monoₓ'. -/
 @[to_additive]
 theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen (H₁ : Set G)) :
     IsOpen (H₂ : Set G) :=
@@ -330,12 +516,24 @@ theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen
 #align subgroup.is_open_mono Subgroup.isOpen_mono
 #align add_subgroup.is_open_mono AddSubgroup.isOpen_mono
 
+/- warning: subgroup.is_open_of_open_subgroup -> Subgroup.isOpen_of_openSubgroup is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) H) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1) {U : OpenSubgroup.{u1} G _inst_1 _inst_2}, (LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) H) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
+Case conversion may be inaccurate. Consider using '#align subgroup.is_open_of_open_subgroup Subgroup.isOpen_of_openSubgroupₓ'. -/
 @[to_additive]
 theorem isOpen_of_openSubgroup {U : OpenSubgroup G} (h : ↑U ≤ H) : IsOpen (H : Set G) :=
   isOpen_mono h U.IsOpen
 #align subgroup.is_open_of_open_subgroup Subgroup.isOpen_of_openSubgroup
-#align add_subgroup.is_open_of_open_add_subgroup AddSubgroup.isOpen_of_open_add_subgroup
-
+#align add_subgroup.is_open_of_open_add_subgroup AddSubgroup.isOpen_of_openAddSubgroup
+
+/- warning: subgroup.is_open_of_one_mem_interior -> Subgroup.isOpen_of_one_mem_interior is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (interior.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) -> (IsOpen.{u1} G _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (H : Subgroup.{u1} G _inst_1), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))) (interior.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))) -> (IsOpen.{u1} G _inst_2 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
+Case conversion may be inaccurate. Consider using '#align subgroup.is_open_of_one_mem_interior Subgroup.isOpen_of_one_mem_interiorₓ'. -/
 /-- If a subgroup of a topological group has `1` in its interior, then it is open. -/
 @[to_additive
       "If a subgroup of an additive topological group has `0` in its interior, then it is\nopen."]
@@ -355,16 +553,22 @@ variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G]
 instance : Sup (OpenSubgroup G) :=
   ⟨fun U V => ⟨U ⊔ V, Subgroup.isOpen_mono (le_sup_left : U.1 ≤ U ⊔ V) U.IsOpen⟩⟩
 
+/- warning: open_subgroup.coe_subgroup_sup -> OpenSubgroup.toSubgroup_sup is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} G _inst_1 _inst_2), Eq.{succ u1} (Subgroup.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) (Sup.sup.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.hasSup.{u1} G _inst_1 _inst_2 _inst_3) U V)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) U) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (HasLiftT.mk.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (Subgroup.{u1} G _inst_1) (OpenSubgroup.hasCoeSubgroup.{u1} G _inst_1 _inst_2))) V))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : TopologicalSpace.{u1} G] [_inst_3 : ContinuousMul.{u1} G _inst_2 (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))] (U : OpenSubgroup.{u1} G _inst_1 _inst_2) (V : OpenSubgroup.{u1} G _inst_1 _inst_2), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 (Sup.sup.{u1} (OpenSubgroup.{u1} G _inst_1 _inst_2) (OpenSubgroup.instSupOpenSubgroup.{u1} G _inst_1 _inst_2 _inst_3) U V)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (ConditionallyCompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 U) (OpenSubgroup.toSubgroup.{u1} G _inst_1 _inst_2 V))
+Case conversion may be inaccurate. Consider using '#align open_subgroup.coe_subgroup_sup OpenSubgroup.toSubgroup_supₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_subgroup_sup (U V : OpenSubgroup G) : (↑(U ⊔ V) : Subgroup G) = ↑U ⊔ ↑V :=
+theorem toSubgroup_sup (U V : OpenSubgroup G) : (↑(U ⊔ V) : Subgroup G) = ↑U ⊔ ↑V :=
   rfl
-#align open_subgroup.coe_subgroup_sup OpenSubgroup.coe_subgroup_sup
-#align open_add_subgroup.coe_add_subgroup_sup OpenAddSubgroup.coe_add_subgroup_sup
+#align open_subgroup.coe_subgroup_sup OpenSubgroup.toSubgroup_sup
+#align open_add_subgroup.coe_add_subgroup_sup OpenAddSubgroup.toAddSubgroup_sup
 
 @[to_additive]
 instance : Lattice (OpenSubgroup G) :=
   { OpenSubgroup.semilatticeInf,
-    coe_subgroup_injective.SemilatticeSup (coe : OpenSubgroup G → Subgroup G) fun _ _ => rfl with }
+    toSubgroup_injective.SemilatticeSup (coe : OpenSubgroup G → Subgroup G) fun _ _ => rfl with }
 
 end OpenSubgroup
 
@@ -376,6 +580,12 @@ variable {R : Type _} {M : Type _} [CommRing R]
 
 variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R M]
 
+/- warning: submodule.is_open_mono -> Submodule.isOpen_mono is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : TopologicalSpace.{u2} M] [_inst_4 : TopologicalAddGroup.{u2} M _inst_3 (AddCommGroup.toAddGroup.{u2} M _inst_2)] [_inst_5 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {U : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5} {P : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U P) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) U)) -> (IsOpen.{u2} M _inst_3 ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_5)))) P))
+but is expected to have type
+  forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommRing.{u2} R] [_inst_2 : AddCommGroup.{u1} M] [_inst_3 : TopologicalSpace.{u1} M] [_inst_4 : TopologicalAddGroup.{u1} M _inst_3 (AddCommGroup.toAddGroup.{u1} M _inst_2)] [_inst_5 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2)] {U : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5} {P : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5}, (LE.le.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Preorder.toLE.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (PartialOrder.toPreorder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) (Submodule.completeLattice.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5))))) U P) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.instSetLikeSubmodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) U)) -> (IsOpen.{u1} M _inst_3 (SetLike.coe.{u1, u1} (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) M (Submodule.instSetLikeSubmodule.{u2, u1} R M (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) (AddCommGroup.toAddCommMonoid.{u1} M _inst_2) _inst_5) P))
+Case conversion may be inaccurate. Consider using '#align submodule.is_open_mono Submodule.isOpen_monoₓ'. -/
 theorem isOpen_mono {U P : Submodule R M} (h : U ≤ P) (hU : IsOpen (U : Set M)) :
     IsOpen (P : Set M) :=
   @AddSubgroup.isOpen_mono M _ _ _ U.toAddSubgroup P.toAddSubgroup h hU
@@ -389,6 +599,12 @@ variable {R : Type _} [CommRing R]
 
 variable [TopologicalSpace R] [TopologicalRing R]
 
+/- warning: ideal.is_open_of_open_subideal -> Ideal.isOpen_of_open_subideal is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (SetLike.partialOrder.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U I) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) U)) -> (IsOpen.{u1} R _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (HasLiftT.mk.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (CoeTCₓ.coe.{succ u1, succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Set.{u1} R) (SetLike.Set.hasCoeT.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) I))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalRing.{u1} R _inst_2 (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))] {U : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))} {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))}, (LE.le.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Preorder.toLE.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Submodule.completeLattice.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) U I) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.instSetLikeSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) U)) -> (IsOpen.{u1} R _inst_2 (SetLike.coe.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) R (Submodule.instSetLikeSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) I))
+Case conversion may be inaccurate. Consider using '#align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subidealₓ'. -/
 theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
     IsOpen (I : Set R) :=
   Submodule.isOpen_mono h hU
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johan Commelin
 
 ! This file was ported from Lean 3 source module topology.algebra.open_subgroup
-! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
+! leanprover-community/mathlib commit 83f81aea33931a1edb94ce0f32b9a5d484de6978
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -66,22 +66,30 @@ variable {G : Type _} [Group G] [TopologicalSpace G]
 
 variable {U V : OpenSubgroup G} {g : G}
 
-@[to_additive]
-instance hasCoeSet : CoeTC (OpenSubgroup G) (Set G) :=
-  ⟨fun U => U.1⟩
-#align open_subgroup.has_coe_set OpenSubgroup.hasCoeSet
-#align open_add_subgroup.has_coe_set OpenAddSubgroup.hasCoeSet
-
-@[to_additive]
-instance : Membership G (OpenSubgroup G) :=
-  ⟨fun g U => g ∈ (U : Set G)⟩
-
 @[to_additive]
 instance hasCoeSubgroup : CoeTC (OpenSubgroup G) (Subgroup G) :=
   ⟨toSubgroup⟩
 #align open_subgroup.has_coe_subgroup OpenSubgroup.hasCoeSubgroup
 #align open_add_subgroup.has_coe_add_subgroup OpenAddSubgroup.hasCoeAddSubgroup
 
+@[to_additive]
+theorem coe_subgroup_injective : Injective (coe : OpenSubgroup G → Subgroup G)
+  | ⟨_, _⟩, ⟨_, _⟩, rfl => rfl
+#align open_subgroup.coe_subgroup_injective OpenSubgroup.coe_subgroup_injective
+#align open_add_subgroup.coe_add_subgroup_injective OpenAddSubgroup.coe_add_subgroup_injective
+
+@[to_additive]
+instance : SetLike (OpenSubgroup G) G where
+  coe U := U.1
+  coe_injective' _ _ h := coe_subgroup_injective <| SetLike.ext' h
+
+@[to_additive]
+instance : SubgroupClass (OpenSubgroup G) G
+    where
+  mul_mem U _ _ := U.mul_mem'
+  one_mem U := U.one_mem'
+  inv_mem U _ := U.inv_mem'
+
 @[to_additive]
 instance hasCoeOpens : CoeTC (OpenSubgroup G) (Opens G) :=
   ⟨fun U => ⟨U, U.is_open'⟩⟩
@@ -89,10 +97,16 @@ instance hasCoeOpens : CoeTC (OpenSubgroup G) (Opens G) :=
 #align open_add_subgroup.has_coe_opens OpenAddSubgroup.hasCoeOpens
 
 @[simp, norm_cast, to_additive]
-theorem mem_coe : g ∈ (U : Set G) ↔ g ∈ U :=
-  Iff.rfl
-#align open_subgroup.mem_coe OpenSubgroup.mem_coe
-#align open_add_subgroup.mem_coe OpenAddSubgroup.mem_coe
+theorem coe_coe_opens : ((U : Opens G) : Set G) = U :=
+  rfl
+#align open_subgroup.coe_coe_opens OpenSubgroup.coe_coe_opens
+#align open_add_subgroup.coe_coe_opens OpenAddSubgroup.coe_coe_opens
+
+@[simp, norm_cast, to_additive]
+theorem coe_coe_subgroup : ((U : Subgroup G) : Set G) = U :=
+  rfl
+#align open_subgroup.coe_coe_subgroup OpenSubgroup.coe_coe_subgroup
+#align open_add_subgroup.coe_coe_add_subgroup OpenAddSubgroup.coe_coe_add_subgroup
 
 @[simp, norm_cast, to_additive]
 theorem mem_coe_opens : g ∈ (U : Opens G) ↔ g ∈ U :=
@@ -106,26 +120,12 @@ theorem mem_coe_subgroup : g ∈ (U : Subgroup G) ↔ g ∈ U :=
 #align open_subgroup.mem_coe_subgroup OpenSubgroup.mem_coe_subgroup
 #align open_add_subgroup.mem_coe_add_subgroup OpenAddSubgroup.mem_coe_add_subgroup
 
-@[to_additive]
-theorem coe_injective : Injective (coe : OpenSubgroup G → Set G) :=
-  by
-  rintro ⟨⟨⟩⟩ ⟨⟨⟩⟩ ⟨h⟩
-  congr
-#align open_subgroup.coe_injective OpenSubgroup.coe_injective
-#align open_add_subgroup.coe_injective OpenAddSubgroup.coe_injective
-
 @[ext, to_additive]
 theorem ext (h : ∀ x, x ∈ U ↔ x ∈ V) : U = V :=
-  coe_injective <| Set.ext h
+  SetLike.ext h
 #align open_subgroup.ext OpenSubgroup.ext
 #align open_add_subgroup.ext OpenAddSubgroup.ext
 
-@[to_additive]
-theorem ext_iff : U = V ↔ ∀ x, x ∈ U ↔ x ∈ V :=
-  ⟨fun h x => h ▸ Iff.rfl, ext⟩
-#align open_subgroup.ext_iff OpenSubgroup.ext_iff
-#align open_add_subgroup.ext_iff OpenAddSubgroup.ext_iff
-
 variable (U)
 
 @[to_additive]
@@ -134,24 +134,6 @@ protected theorem isOpen : IsOpen (U : Set G) :=
 #align open_subgroup.is_open OpenSubgroup.isOpen
 #align open_add_subgroup.is_open OpenAddSubgroup.isOpen
 
-@[to_additive]
-protected theorem one_mem : (1 : G) ∈ U :=
-  U.one_mem'
-#align open_subgroup.one_mem OpenSubgroup.one_mem
-#align open_add_subgroup.zero_mem OpenAddSubgroup.zero_mem
-
-@[to_additive]
-protected theorem inv_mem {g : G} (h : g ∈ U) : g⁻¹ ∈ U :=
-  U.inv_mem' h
-#align open_subgroup.inv_mem OpenSubgroup.inv_mem
-#align open_add_subgroup.neg_mem OpenAddSubgroup.neg_mem
-
-@[to_additive]
-protected theorem mul_mem {g₁ g₂ : G} (h₁ : g₁ ∈ U) (h₂ : g₂ ∈ U) : g₁ * g₂ ∈ U :=
-  U.mul_mem' h₁ h₂
-#align open_subgroup.mul_mem OpenSubgroup.mul_mem
-#align open_add_subgroup.add_mem OpenAddSubgroup.add_mem
-
 @[to_additive]
 theorem mem_nhds_one : (U : Set G) ∈ 𝓝 (1 : G) :=
   IsOpen.mem_nhds U.IsOpen U.one_mem
@@ -164,6 +146,30 @@ variable {U}
 instance : Top (OpenSubgroup G) :=
   ⟨{ (⊤ : Subgroup G) with is_open' := isOpen_univ }⟩
 
+@[simp, to_additive]
+theorem mem_top (x : G) : x ∈ (⊤ : OpenSubgroup G) :=
+  trivial
+#align open_subgroup.mem_top OpenSubgroup.mem_top
+#align open_add_subgroup.mem_top OpenAddSubgroup.mem_top
+
+@[simp, norm_cast, to_additive]
+theorem coe_top : ((⊤ : OpenSubgroup G) : Set G) = Set.univ :=
+  rfl
+#align open_subgroup.coe_top OpenSubgroup.coe_top
+#align open_add_subgroup.coe_top OpenAddSubgroup.coe_top
+
+@[simp, norm_cast, to_additive]
+theorem coe_subgroup_top : ((⊤ : OpenSubgroup G) : Subgroup G) = ⊤ :=
+  rfl
+#align open_subgroup.coe_subgroup_top OpenSubgroup.coe_subgroup_top
+#align open_add_subgroup.coe_add_subgroup_top OpenAddSubgroup.coe_add_subgroup_top
+
+@[simp, norm_cast, to_additive]
+theorem coe_opens_top : ((⊤ : OpenSubgroup G) : Opens G) = ⊤ :=
+  rfl
+#align open_subgroup.coe_opens_top OpenSubgroup.coe_opens_top
+#align open_add_subgroup.coe_opens_top OpenAddSubgroup.coe_opens_top
+
 @[to_additive]
 instance : Inhabited (OpenSubgroup G) :=
   ⟨⊤⟩
@@ -173,52 +179,51 @@ theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :
   by
   apply isOpen_compl_iff.1
   refine' isOpen_iff_forall_mem_open.2 fun x hx => ⟨(fun y => y * x⁻¹) ⁻¹' U, _, _, _⟩
-  · intro u hux
-    simp only [Set.mem_preimage, Set.mem_compl_iff, mem_coe] at hux hx⊢
-    refine' mt (fun hu => _) hx
+  · refine' fun u hux hu => hx _
+    simp only [Set.mem_preimage, SetLike.mem_coe] at hux hu⊢
     convert U.mul_mem (U.inv_mem hux) hu
     simp
   · exact U.is_open.preimage (continuous_mul_right _)
-  · simp [U.one_mem]
+  · simp [one_mem]
 #align open_subgroup.is_closed OpenSubgroup.isClosed
 #align open_add_subgroup.is_closed OpenAddSubgroup.isClosed
 
+@[to_additive]
+theorem isClopen [ContinuousMul G] (U : OpenSubgroup G) : IsClopen (U : Set G) :=
+  ⟨U.IsOpen, U.IsClosed⟩
+#align open_subgroup.is_clopen OpenSubgroup.isClopen
+#align open_add_subgroup.is_clopen OpenAddSubgroup.isClopen
+
 section
 
 variable {H : Type _} [Group H] [TopologicalSpace H]
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /-- The product of two open subgroups as an open subgroup of the product group. -/
 @[to_additive "The product of two open subgroups as an open subgroup of the product group."]
 def prod (U : OpenSubgroup G) (V : OpenSubgroup H) : OpenSubgroup (G × H) :=
-  {
-    (U : Subgroup G).Prod (V : Subgroup
-          H) with
-    carrier := U ×ˢ V
-    is_open' := U.IsOpen.Prod V.IsOpen }
+  { (U : Subgroup G).Prod (V : Subgroup H) with is_open' := U.IsOpen.Prod V.IsOpen }
 #align open_subgroup.prod OpenSubgroup.prod
 #align open_add_subgroup.sum OpenAddSubgroup.sum
 
-end
+/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+@[simp, norm_cast, to_additive]
+theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) : (U.Prod V : Set (G × H)) = U ×ˢ V :=
+  rfl
+#align open_subgroup.coe_prod OpenSubgroup.coe_prod
+#align open_add_subgroup.coe_sum OpenAddSubgroup.coe_sum
 
-@[to_additive]
-instance : PartialOrder (OpenSubgroup G) :=
-  { PartialOrder.lift (coe : OpenSubgroup G → Set G) coe_injective with
-    le := fun U V => ∀ ⦃x⦄, x ∈ U → x ∈ V }
+@[simp, norm_cast, to_additive]
+theorem coe_subgroup_prod (U : OpenSubgroup G) (V : OpenSubgroup H) :
+    (U.Prod V : Subgroup (G × H)) = (U : Subgroup G).Prod V :=
+  rfl
+#align open_subgroup.coe_subgroup_prod OpenSubgroup.coe_subgroup_prod
+#align open_add_subgroup.coe_add_subgroup_sum OpenAddSubgroup.coe_add_subgroup_sum
 
-@[to_additive]
-instance : SemilatticeInf (OpenSubgroup G) :=
-  {
-    OpenSubgroup.partialOrder with
-    inf := fun U V => { (U : Subgroup G) ⊓ V with is_open' := IsOpen.inter U.IsOpen V.IsOpen }
-    inf_le_left := fun U V => Set.inter_subset_left _ _
-    inf_le_right := fun U V => Set.inter_subset_right _ _
-    le_inf := fun U V W hV hW => Set.subset_inter hV hW }
+end
 
 @[to_additive]
-instance : OrderTop (OpenSubgroup G) where
-  top := ⊤
-  le_top U := Set.subset_univ _
+instance : Inf (OpenSubgroup G) :=
+  ⟨fun U V => ⟨U ⊓ V, U.IsOpen.inter V.IsOpen⟩⟩
 
 @[simp, norm_cast, to_additive]
 theorem coe_inf : (↑(U ⊓ V) : Set G) = (U : Set G) ∩ V :=
@@ -227,10 +232,32 @@ theorem coe_inf : (↑(U ⊓ V) : Set G) = (U : Set G) ∩ V :=
 #align open_add_subgroup.coe_inf OpenAddSubgroup.coe_inf
 
 @[simp, norm_cast, to_additive]
-theorem coe_subset : (U : Set G) ⊆ V ↔ U ≤ V :=
+theorem coe_subgroup_inf : (↑(U ⊓ V) : Subgroup G) = ↑U ⊓ ↑V :=
+  rfl
+#align open_subgroup.coe_subgroup_inf OpenSubgroup.coe_subgroup_inf
+#align open_add_subgroup.coe_add_subgroup_inf OpenAddSubgroup.coe_add_subgroup_inf
+
+@[simp, norm_cast, to_additive]
+theorem coe_opens_inf : (↑(U ⊓ V) : Opens G) = ↑U ⊓ ↑V :=
+  rfl
+#align open_subgroup.coe_opens_inf OpenSubgroup.coe_opens_inf
+#align open_add_subgroup.coe_opens_inf OpenAddSubgroup.coe_opens_inf
+
+@[simp, to_additive]
+theorem mem_inf {x} : x ∈ U ⊓ V ↔ x ∈ U ∧ x ∈ V :=
   Iff.rfl
-#align open_subgroup.coe_subset OpenSubgroup.coe_subset
-#align open_add_subgroup.coe_subset OpenAddSubgroup.coe_subset
+#align open_subgroup.mem_inf OpenSubgroup.mem_inf
+#align open_add_subgroup.mem_inf OpenAddSubgroup.mem_inf
+
+@[to_additive]
+instance : SemilatticeInf (OpenSubgroup G) :=
+  { SetLike.partialOrder,
+    SetLike.coe_injective.SemilatticeInf (coe : OpenSubgroup G → Set G) fun _ _ => rfl with }
+
+@[to_additive]
+instance : OrderTop (OpenSubgroup G) where
+  top := ⊤
+  le_top U := Set.subset_univ _
 
 @[simp, norm_cast, to_additive]
 theorem coe_subgroup_le : (U : Subgroup G) ≤ (V : Subgroup G) ↔ U ≤ V :=
@@ -249,13 +276,20 @@ def comap (f : G →* N) (hf : Continuous f) (H : OpenSubgroup N) : OpenSubgroup
 #align open_subgroup.comap OpenSubgroup.comap
 #align open_add_subgroup.comap OpenAddSubgroup.comap
 
-@[simp, to_additive]
+@[simp, norm_cast, to_additive]
 theorem coe_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
     (H.comap f hf : Set G) = f ⁻¹' H :=
   rfl
 #align open_subgroup.coe_comap OpenSubgroup.coe_comap
 #align open_add_subgroup.coe_comap OpenAddSubgroup.coe_comap
 
+@[simp, norm_cast, to_additive]
+theorem coe_subgroup_comap (H : OpenSubgroup N) (f : G →* N) (hf : Continuous f) :
+    (H.comap f hf : Subgroup G) = (H : Subgroup N).comap f :=
+  rfl
+#align open_subgroup.coe_subgroup_comap OpenSubgroup.coe_subgroup_comap
+#align open_add_subgroup.coe_add_subgroup_comap OpenAddSubgroup.coe_add_subgroup_comap
+
 @[simp, to_additive]
 theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G} :
     x ∈ H.comap f hf ↔ f x ∈ H :=
@@ -280,50 +314,37 @@ variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G] (H : Subg
 @[to_additive]
 theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : Set G) :=
   by
-  simp only [isOpen_iff_mem_nhds, SetLike.mem_coe] at hg⊢
-  intro x hx
-  have : Filter.Tendsto (fun y => y * (x⁻¹ * g)) (𝓝 x) (𝓝 <| x * (x⁻¹ * g)) :=
-    (continuous_id.mul continuous_const).Tendsto _
-  rw [mul_inv_cancel_left] at this
-  have := Filter.mem_map'.1 (this hg)
-  replace hg : g ∈ H := SetLike.mem_coe.1 (mem_of_mem_nhds hg)
-  simp only [SetLike.mem_coe, H.mul_mem_cancel_right (H.mul_mem (H.inv_mem hx) hg)] at this
-  exact this
+  refine' isOpen_iff_mem_nhds.2 fun x hx => _
+  have hg' : g ∈ H := SetLike.mem_coe.1 (mem_of_mem_nhds hg)
+  have : Filter.Tendsto (fun y => y * (x⁻¹ * g)) (𝓝 x) (𝓝 g) :=
+    (continuous_id.mul continuous_const).tendsto' _ _ (mul_inv_cancel_left _ _)
+  simpa only [SetLike.mem_coe, Filter.mem_map',
+    H.mul_mem_cancel_right (H.mul_mem (H.inv_mem hx) hg')] using this hg
 #align subgroup.is_open_of_mem_nhds Subgroup.isOpen_of_mem_nhds
 #align add_subgroup.is_open_of_mem_nhds AddSubgroup.isOpen_of_mem_nhds
 
 @[to_additive]
-theorem isOpen_of_openSubgroup {U : OpenSubgroup G} (h : U.1 ≤ H) : IsOpen (H : Set G) :=
-  H.isOpen_of_mem_nhds (Filter.mem_of_superset U.mem_nhds_one h)
+theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen (H₁ : Set G)) :
+    IsOpen (H₂ : Set G) :=
+  isOpen_of_mem_nhds _ <| Filter.mem_of_superset (h₁.mem_nhds <| one_mem H₁) h
+#align subgroup.is_open_mono Subgroup.isOpen_mono
+#align add_subgroup.is_open_mono AddSubgroup.isOpen_mono
+
+@[to_additive]
+theorem isOpen_of_openSubgroup {U : OpenSubgroup G} (h : ↑U ≤ H) : IsOpen (H : Set G) :=
+  isOpen_mono h U.IsOpen
 #align subgroup.is_open_of_open_subgroup Subgroup.isOpen_of_openSubgroup
 #align add_subgroup.is_open_of_open_add_subgroup AddSubgroup.isOpen_of_open_add_subgroup
 
 /-- If a subgroup of a topological group has `1` in its interior, then it is open. -/
 @[to_additive
       "If a subgroup of an additive topological group has `0` in its interior, then it is\nopen."]
-theorem isOpen_of_one_mem_interior {G : Type _} [Group G] [TopologicalSpace G] [TopologicalGroup G]
-    {H : Subgroup G} (h_1_int : (1 : G) ∈ interior (H : Set G)) : IsOpen (H : Set G) :=
-  by
-  have h : 𝓝 1 ≤ Filter.principal (H : Set G) :=
-    nhds_le_of_le h_1_int isOpen_interior (Filter.principal_mono.2 interior_subset)
-  rw [isOpen_iff_nhds]
-  intro g hg
-  rw [show 𝓝 g = Filter.map (⇑(Homeomorph.mulLeft g)) (𝓝 1) by simp]
-  convert Filter.map_mono h
-  simp only [Homeomorph.coe_mulLeft, Filter.map_principal, Set.image_mul_left,
-    Filter.principal_eq_iff_eq]
-  ext
-  simp [H.mul_mem_cancel_left (H.inv_mem hg)]
+theorem isOpen_of_one_mem_interior (h_1_int : (1 : G) ∈ interior (H : Set G)) :
+    IsOpen (H : Set G) :=
+  isOpen_of_mem_nhds H <| mem_interior_iff_mem_nhds.1 h_1_int
 #align subgroup.is_open_of_one_mem_interior Subgroup.isOpen_of_one_mem_interior
 #align add_subgroup.is_open_of_zero_mem_interior AddSubgroup.isOpen_of_zero_mem_interior
 
-@[to_additive]
-theorem isOpen_mono {H₁ H₂ : Subgroup G} (h : H₁ ≤ H₂) (h₁ : IsOpen (H₁ : Set G)) :
-    IsOpen (H₂ : Set G) :=
-  @isOpen_of_openSubgroup _ _ _ _ H₂ { H₁ with is_open' := h₁ } h
-#align subgroup.is_open_mono Subgroup.isOpen_mono
-#align add_subgroup.is_open_mono AddSubgroup.isOpen_mono
-
 end Subgroup
 
 namespace OpenSubgroup
@@ -331,21 +352,19 @@ namespace OpenSubgroup
 variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G]
 
 @[to_additive]
-instance : SemilatticeSup (OpenSubgroup G) :=
-  {
-    OpenSubgroup.semilatticeInf with
-    sup := fun U V =>
-      { (U : Subgroup G) ⊔ V with
-        is_open' :=
-          show IsOpen (((U : Subgroup G) ⊔ V : Subgroup G) : Set G) from
-            Subgroup.isOpen_mono le_sup_left U.IsOpen }
-    le_sup_left := fun U V => coe_subgroup_le.1 le_sup_left
-    le_sup_right := fun U V => coe_subgroup_le.1 le_sup_right
-    sup_le := fun U V W hU hV => coe_subgroup_le.1 (sup_le hU hV) }
+instance : Sup (OpenSubgroup G) :=
+  ⟨fun U V => ⟨U ⊔ V, Subgroup.isOpen_mono (le_sup_left : U.1 ≤ U ⊔ V) U.IsOpen⟩⟩
+
+@[simp, norm_cast, to_additive]
+theorem coe_subgroup_sup (U V : OpenSubgroup G) : (↑(U ⊔ V) : Subgroup G) = ↑U ⊔ ↑V :=
+  rfl
+#align open_subgroup.coe_subgroup_sup OpenSubgroup.coe_subgroup_sup
+#align open_add_subgroup.coe_add_subgroup_sup OpenAddSubgroup.coe_add_subgroup_sup
 
 @[to_additive]
 instance : Lattice (OpenSubgroup G) :=
-  { OpenSubgroup.semilatticeSup, OpenSubgroup.semilatticeInf with }
+  { OpenSubgroup.semilatticeInf,
+    coe_subgroup_injective.SemilatticeSup (coe : OpenSubgroup G → Subgroup G) fun _ _ => rfl with }
 
 end OpenSubgroup
 
Diff
@@ -4,11 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johan Commelin
 
 ! This file was ported from Lean 3 source module topology.algebra.open_subgroup
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
-import Mathbin.Topology.Algebra.Ring
+import Mathbin.RingTheory.Ideal.Basic
+import Mathbin.Topology.Algebra.Ring.Basic
 import Mathbin.Topology.Sets.Opens
 
 /-!

Changes in mathlib4

mathlib3
mathlib4
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -367,7 +367,6 @@ namespace Submodule
 open OpenAddSubgroup
 
 variable {R : Type*} {M : Type*} [CommRing R]
-
 variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R M]
 
 theorem isOpen_mono {U P : Submodule R M} (h : U ≤ P) (hU : IsOpen (U : Set M)) :
@@ -380,7 +379,6 @@ end Submodule
 namespace Ideal
 
 variable {R : Type*} [CommRing R]
-
 variable [TopologicalSpace R] [TopologicalRing R]
 
 theorem isOpen_of_isOpen_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -241,7 +241,7 @@ theorem mem_inf {x} : x ∈ U ⊓ V ↔ x ∈ U ∧ x ∈ V :=
 @[to_additive]
 instance instPartialOrderOpenSubgroup : PartialOrder (OpenSubgroup G) := inferInstance
 
--- porting note: we override `toPartialorder` to get better `le`
+-- Porting note: we override `toPartialorder` to get better `le`
 @[to_additive]
 instance instSemilatticeInfOpenSubgroup : SemilatticeInf (OpenSubgroup G) :=
   { SetLike.coe_injective.semilatticeInf ((↑) : OpenSubgroup G → Set G) fun _ _ => rfl with
@@ -353,7 +353,7 @@ theorem toSubgroup_sup (U V : OpenSubgroup G) : (↑(U ⊔ V) : Subgroup G) = 
 #align open_subgroup.coe_subgroup_sup OpenSubgroup.toSubgroup_sup
 #align open_add_subgroup.coe_add_subgroup_sup OpenAddSubgroup.toAddSubgroup_sup
 
--- porting note: we override `toPartialorder` to get better `le`
+-- Porting note: we override `toPartialorder` to get better `le`
 @[to_additive]
 instance : Lattice (OpenSubgroup G) :=
   { instSemilatticeInfOpenSubgroup,
refactor(Topology/Clopen): order of open and closed (#9957)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -179,7 +179,7 @@ theorem isClosed [ContinuousMul G] (U : OpenSubgroup G) : IsClosed (U : Set G) :
 
 @[to_additive]
 theorem isClopen [ContinuousMul G] (U : OpenSubgroup G) : IsClopen (U : Set G) :=
-  ⟨U.isOpen, U.isClosed⟩
+  ⟨U.isClosed, U.isOpen⟩
 #align open_subgroup.is_clopen OpenSubgroup.isClopen
 #align open_add_subgroup.is_clopen OpenAddSubgroup.isClopen
 
chore: rename lemmas containing "of_open" to match the naming convention (#8229)

Mostly, this means replacing "of_open" by "of_isOpen". A few lemmas names were misleading and are corrected differently. Zulip discussion.

Diff
@@ -383,9 +383,9 @@ variable {R : Type*} [CommRing R]
 
 variable [TopologicalSpace R] [TopologicalRing R]
 
-theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
+theorem isOpen_of_isOpen_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U : Set R)) :
     IsOpen (I : Set R) :=
   @Submodule.isOpen_mono R R _ _ _ _ Semiring.toModule _ _ h hU
-#align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subideal
+#align ideal.is_open_of_open_subideal Ideal.isOpen_of_isOpen_subideal
 
 end Ideal
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
@@ -36,13 +36,13 @@ Note that this notion is especially relevant in a non-archimedean context, for i
 open TopologicalSpace Topology Function
 
 /-- The type of open subgroups of a topological additive group. -/
-structure OpenAddSubgroup (G : Type _) [AddGroup G] [TopologicalSpace G] extends AddSubgroup G where
+structure OpenAddSubgroup (G : Type*) [AddGroup G] [TopologicalSpace G] extends AddSubgroup G where
   isOpen' : IsOpen carrier
 #align open_add_subgroup OpenAddSubgroup
 
 /-- The type of open subgroups of a topological group. -/
 @[to_additive]
-structure OpenSubgroup (G : Type _) [Group G] [TopologicalSpace G] extends Subgroup G where
+structure OpenSubgroup (G : Type*) [Group G] [TopologicalSpace G] extends Subgroup G where
   isOpen' : IsOpen carrier
 #align open_subgroup OpenSubgroup
 
@@ -56,7 +56,7 @@ attribute [coe] OpenSubgroup.toSubgroup OpenAddSubgroup.toAddSubgroup
 
 namespace OpenSubgroup
 
-variable {G : Type _} [Group G] [TopologicalSpace G]
+variable {G : Type*} [Group G] [TopologicalSpace G]
 variable {U V : OpenSubgroup G} {g : G}
 
 @[to_additive]
@@ -185,7 +185,7 @@ theorem isClopen [ContinuousMul G] (U : OpenSubgroup G) : IsClopen (U : Set G) :
 
 section
 
-variable {H : Type _} [Group H] [TopologicalSpace H]
+variable {H : Type*} [Group H] [TopologicalSpace H]
 
 /-- The product of two open subgroups as an open subgroup of the product group. -/
 @[to_additive "The product of two open subgroups as an open subgroup of the product group."]
@@ -259,7 +259,7 @@ theorem toSubgroup_le : (U : Subgroup G) ≤ (V : Subgroup G) ↔ U ≤ V :=
 #align open_subgroup.coe_subgroup_le OpenSubgroup.toSubgroup_le
 #align open_add_subgroup.coe_add_subgroup_le OpenAddSubgroup.toAddSubgroup_le
 
-variable {N : Type _} [Group N] [TopologicalSpace N]
+variable {N : Type*} [Group N] [TopologicalSpace N]
 
 /-- The preimage of an `OpenSubgroup` along a continuous `Monoid` homomorphism
   is an `OpenSubgroup`. -/
@@ -292,7 +292,7 @@ theorem mem_comap {H : OpenSubgroup N} {f : G →* N} {hf : Continuous f} {x : G
 #align open_add_subgroup.mem_comap OpenAddSubgroup.mem_comap
 
 @[to_additive]
-theorem comap_comap {P : Type _} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (f₂ : N →* P)
+theorem comap_comap {P : Type*} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (f₂ : N →* P)
     (hf₂ : Continuous f₂) (f₁ : G →* N) (hf₁ : Continuous f₁) :
     (K.comap f₂ hf₂).comap f₁ hf₁ = K.comap (f₂.comp f₁) (hf₂.comp hf₁) :=
   rfl
@@ -303,7 +303,7 @@ end OpenSubgroup
 
 namespace Subgroup
 
-variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G] (H : Subgroup G)
+variable {G : Type*} [Group G] [TopologicalSpace G] [ContinuousMul G] (H : Subgroup G)
 
 @[to_additive]
 theorem isOpen_of_mem_nhds {g : G} (hg : (H : Set G) ∈ 𝓝 g) : IsOpen (H : Set G) := by
@@ -342,7 +342,7 @@ end Subgroup
 
 namespace OpenSubgroup
 
-variable {G : Type _} [Group G] [TopologicalSpace G] [ContinuousMul G]
+variable {G : Type*} [Group G] [TopologicalSpace G] [ContinuousMul G]
 
 @[to_additive]
 instance : Sup (OpenSubgroup G) :=
@@ -366,7 +366,7 @@ namespace Submodule
 
 open OpenAddSubgroup
 
-variable {R : Type _} {M : Type _} [CommRing R]
+variable {R : Type*} {M : Type*} [CommRing R]
 
 variable [AddCommGroup M] [TopologicalSpace M] [TopologicalAddGroup M] [Module R M]
 
@@ -379,7 +379,7 @@ end Submodule
 
 namespace Ideal
 
-variable {R : Type _} [CommRing R]
+variable {R : Type*} [CommRing R]
 
 variable [TopologicalSpace R] [TopologicalRing R]
 
chore: ensure all instances referred to directly have explicit names (#6423)

Per https://github.com/leanprover/lean4/issues/2343, we are going to need to change the automatic generation of instance names, as they become too long.

This PR ensures that everywhere in Mathlib that refers to an instance by name, that name is given explicitly, rather than being automatically generated.

There are four exceptions, which are now commented, with links to https://github.com/leanprover/lean4/issues/2343.

This was implemented by running Mathlib against a modified Lean that appended _ᾰ to all automatically generated names, and fixing everything.

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

Diff
@@ -211,7 +211,7 @@ theorem toSubgroup_prod (U : OpenSubgroup G) (V : OpenSubgroup H) :
 end
 
 @[to_additive]
-instance : Inf (OpenSubgroup G) :=
+instance instInfOpenSubgroup : Inf (OpenSubgroup G) :=
   ⟨fun U V => ⟨U ⊓ V, U.isOpen.inter V.isOpen⟩⟩
 
 @[to_additive (attr := simp, norm_cast)]
@@ -239,11 +239,11 @@ theorem mem_inf {x} : x ∈ U ⊓ V ↔ x ∈ U ∧ x ∈ V :=
 #align open_add_subgroup.mem_inf OpenAddSubgroup.mem_inf
 
 @[to_additive]
-instance : PartialOrder (OpenSubgroup G) := inferInstance
+instance instPartialOrderOpenSubgroup : PartialOrder (OpenSubgroup G) := inferInstance
 
 -- porting note: we override `toPartialorder` to get better `le`
 @[to_additive]
-instance : SemilatticeInf (OpenSubgroup G) :=
+instance instSemilatticeInfOpenSubgroup : SemilatticeInf (OpenSubgroup G) :=
   { SetLike.coe_injective.semilatticeInf ((↑) : OpenSubgroup G → Set G) fun _ _ => rfl with
     toInf := instInfOpenSubgroup
     toPartialOrder := instPartialOrderOpenSubgroup }
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) 2019 Johan Commelin All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johan Commelin
-
-! This file was ported from Lean 3 source module topology.algebra.open_subgroup
-! leanprover-community/mathlib commit 83f81aea33931a1edb94ce0f32b9a5d484de6978
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.RingTheory.Ideal.Basic
 import Mathlib.Topology.Algebra.Ring.Basic
 import Mathlib.Topology.Sets.Opens
 
+#align_import topology.algebra.open_subgroup from "leanprover-community/mathlib"@"83f81aea33931a1edb94ce0f32b9a5d484de6978"
+
 /-!
 # Open subgroups of a topological groups
 
refactor: use the typeclass SProd to implement overloaded notation · ×ˢ · (#4200)

Currently, the following notations are changed from · ×ˢ · because Lean 4 can't deal with ambiguous notations. | Definition | Notation | | :

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

Diff
@@ -198,7 +198,8 @@ def prod (U : OpenSubgroup G) (V : OpenSubgroup H) : OpenSubgroup (G × H) :=
 #align open_add_subgroup.sum OpenAddSubgroup.sum
 
 @[to_additive (attr := simp, norm_cast)]
-theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) : (U.prod V : Set (G × H)) = U ×ˢ V :=
+theorem coe_prod (U : OpenSubgroup G) (V : OpenSubgroup H) :
+    (U.prod V : Set (G × H)) = (U : Set G) ×ˢ (V : Set H) :=
   rfl
 #align open_subgroup.coe_prod OpenSubgroup.coe_prod
 #align open_add_subgroup.coe_sum OpenAddSubgroup.coe_sum
chore: tidy various files (#2999)
Diff
@@ -265,8 +265,8 @@ variable {N : Type _} [Group N] [TopologicalSpace N]
 
 /-- The preimage of an `OpenSubgroup` along a continuous `Monoid` homomorphism
   is an `OpenSubgroup`. -/
-@[to_additive "The preimage of an `open_add_subgroup` along a continuous `add_monoid` homomorphism
-is an `open_add_subgroup`."]
+@[to_additive "The preimage of an `OpenAddSubgroup` along a continuous `AddMonoid` homomorphism
+is an `OpenAddSubgroup`."]
 def comap (f : G →* N) (hf : Continuous f) (H : OpenSubgroup N) : OpenSubgroup G :=
   ⟨.comap f H, H.isOpen.preimage hf⟩
 #align open_subgroup.comap OpenSubgroup.comap
@@ -391,4 +391,3 @@ theorem isOpen_of_open_subideal {U I : Ideal R} (h : U ≤ I) (hU : IsOpen (U :
 #align ideal.is_open_of_open_subideal Ideal.isOpen_of_open_subideal
 
 end Ideal
-
feat: port Topology.Algebra.OpenSubgroup (#2889)

Dependencies 9 + 453

454 files ported (98.1%)
196367 lines ported (97.5%)
Show graph

The unported dependencies are