topology.algebra.ring.basic
⟷
Mathlib.Topology.Algebra.Ring.Basic
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-/
-import Mathbin.Algebra.Ring.Prod
-import Mathbin.RingTheory.Subring.Basic
-import Mathbin.Topology.Algebra.Group.Basic
+import Algebra.Ring.Prod
+import RingTheory.Subring.Basic
+import Topology.Algebra.Group.Basic
#align_import topology.algebra.ring.basic from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -223,7 +223,7 @@ section AddOpposite
open AddOpposite
instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [ContinuousMul α] : ContinuousMul αᵃᵒᵖ
- where continuous_mul := by
+ where continuous_hMul := by
convert
continuous_op.comp <|
(@continuous_mul α _ _ _).comp <| continuous_unop.prod_map continuous_unop
@@ -384,7 +384,7 @@ variable {α : Type _} [Ring α]
instance inhabited {α : Type u} [Ring α] : Inhabited (RingTopology α) :=
⟨{ toTopologicalSpace := ⊤
continuous_add := continuous_top
- continuous_mul := continuous_top
+ continuous_hMul := continuous_top
continuous_neg := continuous_top }⟩
#align ring_topology.inhabited RingTopology.inhabited
-/
@@ -411,7 +411,7 @@ private def def_Inf (S : Set (RingTopology α)) : RingTopology α :=
have h := continuous_sInf_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
have h_continuous_id := @Continuous.prod_map _ _ _ _ t t Inf_S' Inf_S' _ _ h h
exact @Continuous.comp _ _ _ (id _) (id _) t _ _ continuous_add h_continuous_id
- continuous_mul := by
+ continuous_hMul := by
apply continuous_sInf_rng.2
rintro _ ⟨⟨t, tr⟩, haS, rfl⟩; skip
have h := continuous_sInf_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-
-! This file was ported from Lean 3 source module topology.algebra.ring.basic
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Ring.Prod
import Mathbin.RingTheory.Subring.Basic
import Mathbin.Topology.Algebra.Group.Basic
+#align_import topology.algebra.ring.basic from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
/-!
# Topological (semi)rings
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -72,6 +72,7 @@ class TopologicalRing [TopologicalSpace α] [NonUnitalNonAssocRing α] extends T
variable {α}
+#print TopologicalSemiring.continuousNeg_of_mul /-
/-- If `R` is a ring with a continuous multiplication, then negation is continuous as well since it
is just multiplication with `-1`. -/
theorem TopologicalSemiring.continuousNeg_of_mul [TopologicalSpace α] [NonAssocRing α]
@@ -80,6 +81,7 @@ theorem TopologicalSemiring.continuousNeg_of_mul [TopologicalSpace α] [NonAssoc
continuous_neg := by
simpa using (continuous_const.mul continuous_id : Continuous fun x : α => -1 * x) }
#align topological_semiring.has_continuous_neg_of_mul TopologicalSemiring.continuousNeg_of_mul
+-/
#print TopologicalSemiring.toTopologicalRing /-
/-- If `R` is a ring which is a topological semiring, then it is automatically a topological
@@ -136,31 +138,41 @@ def Subsemiring.topologicalClosure (s : Subsemiring α) : Subsemiring α :=
#align subsemiring.topological_closure Subsemiring.topologicalClosure
-/
+#print Subsemiring.topologicalClosure_coe /-
@[simp]
theorem Subsemiring.topologicalClosure_coe (s : Subsemiring α) :
(s.topologicalClosure : Set α) = closure (s : Set α) :=
rfl
#align subsemiring.topological_closure_coe Subsemiring.topologicalClosure_coe
+-/
+#print Subsemiring.le_topologicalClosure /-
theorem Subsemiring.le_topologicalClosure (s : Subsemiring α) : s ≤ s.topologicalClosure :=
subset_closure
#align subsemiring.le_topological_closure Subsemiring.le_topologicalClosure
+-/
+#print Subsemiring.isClosed_topologicalClosure /-
theorem Subsemiring.isClosed_topologicalClosure (s : Subsemiring α) :
IsClosed (s.topologicalClosure : Set α) := by convert isClosed_closure
#align subsemiring.is_closed_topological_closure Subsemiring.isClosed_topologicalClosure
+-/
+#print Subsemiring.topologicalClosure_minimal /-
theorem Subsemiring.topologicalClosure_minimal (s : Subsemiring α) {t : Subsemiring α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
#align subsemiring.topological_closure_minimal Subsemiring.topologicalClosure_minimal
+-/
+#print Subsemiring.commSemiringTopologicalClosure /-
/-- If a subsemiring of a topological semiring is commutative, then so is its
topological closure. -/
def Subsemiring.commSemiringTopologicalClosure [T2Space α] (s : Subsemiring α)
(hs : ∀ x y : s, x * y = y * x) : CommSemiring s.topologicalClosure :=
{ s.topologicalClosure.toSemiring, s.toSubmonoid.commMonoidTopologicalClosure hs with }
#align subsemiring.comm_semiring_topological_closure Subsemiring.commSemiringTopologicalClosure
+-/
end
@@ -231,6 +243,7 @@ section
variable {R : Type _} [NonUnitalNonAssocRing R] [TopologicalSpace R]
+#print TopologicalRing.of_addGroup_of_nhds_zero /-
theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
(hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hmul_left : ∀ x₀ : R, Tendsto (fun x : R => x₀ * x) (𝓝 0) <| 𝓝 0)
@@ -259,7 +272,9 @@ theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
refine' tendsto_map.comp (hadd.comp (tendsto.prod_mk _ hmul))
exact hadd.comp (((hmul_right y₀).comp tendsto_fst).prod_mk ((hmul_left x₀).comp tendsto_snd))
#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_addGroup_of_nhds_zero
+-/
+#print TopologicalRing.of_nhds_zero /-
theorem TopologicalRing.of_nhds_zero
(hadd : Tendsto (uncurry ((· + ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hneg : Tendsto (fun x => -x : R → R) (𝓝 0) (𝓝 0))
@@ -270,6 +285,7 @@ theorem TopologicalRing.of_nhds_zero
haveI := TopologicalAddGroup.of_comm_of_nhds_zero hadd hneg hleft
TopologicalRing.of_addGroup_of_nhds_zero hmul hmul_left hmul_right
#align topological_ring.of_nhds_zero TopologicalRing.of_nhds_zero
+-/
end
@@ -279,15 +295,19 @@ section
variable [NonUnitalNonAssocRing α] [TopologicalRing α]
+#print mulLeft_continuous /-
/-- In a topological semiring, the left-multiplication `add_monoid_hom` is continuous. -/
theorem mulLeft_continuous (x : α) : Continuous (AddMonoidHom.mulLeft x) :=
continuous_const.mul continuous_id
#align mul_left_continuous mulLeft_continuous
+-/
+#print mulRight_continuous /-
/-- In a topological semiring, the right-multiplication `add_monoid_hom` is continuous. -/
theorem mulRight_continuous (x : α) : Continuous (AddMonoidHom.mulRight x) :=
continuous_id.mul continuous_const
#align mul_right_continuous mulRight_continuous
+-/
end
@@ -309,24 +329,32 @@ def Subring.topologicalClosure (S : Subring α) : Subring α :=
#align subring.topological_closure Subring.topologicalClosure
-/
+#print Subring.le_topologicalClosure /-
theorem Subring.le_topologicalClosure (s : Subring α) : s ≤ s.topologicalClosure :=
subset_closure
#align subring.le_topological_closure Subring.le_topologicalClosure
+-/
+#print Subring.isClosed_topologicalClosure /-
theorem Subring.isClosed_topologicalClosure (s : Subring α) :
IsClosed (s.topologicalClosure : Set α) := by convert isClosed_closure
#align subring.is_closed_topological_closure Subring.isClosed_topologicalClosure
+-/
+#print Subring.topologicalClosure_minimal /-
theorem Subring.topologicalClosure_minimal (s : Subring α) {t : Subring α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
#align subring.topological_closure_minimal Subring.topologicalClosure_minimal
+-/
+#print Subring.commRingTopologicalClosure /-
/-- If a subring of a topological ring is commutative, then so is its topological closure. -/
def Subring.commRingTopologicalClosure [T2Space α] (s : Subring α) (hs : ∀ x y : s, x * y = y * x) :
CommRing s.topologicalClosure :=
{ s.topologicalClosure.toRing, s.toSubmonoid.commMonoidTopologicalClosure hs with }
#align subring.comm_ring_topological_closure Subring.commRingTopologicalClosure
+-/
end TopologicalSemiring
@@ -375,7 +403,6 @@ theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g := by ext
instance : PartialOrder (RingTopology α) :=
PartialOrder.lift RingTopology.toTopologicalSpace <| ext
--- mathport name: exprcont
local notation "cont" => @Continuous _ _
private def def_Inf (S : Set (RingTopology α)) : RingTopology α :=
@@ -428,6 +455,7 @@ def coinduced {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α →
#align ring_topology.coinduced RingTopology.coinduced
-/
+#print RingTopology.coinduced_continuous /-
theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) :
cont t (coinduced f).toTopologicalSpace f :=
by
@@ -436,7 +464,9 @@ theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β
rintro _ ⟨t', ht', rfl⟩
exact ht'
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
+-/
+#print RingTopology.toAddGroupTopology /-
/-- The forgetful functor from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
where
@@ -444,16 +474,20 @@ def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
to_topologicalAddGroup :=
@TopologicalRing.to_topologicalAddGroup _ _ t.toTopologicalSpace t.toTopologicalRing
#align ring_topology.to_add_group_topology RingTopology.toAddGroupTopology
+-/
+#print RingTopology.toAddGroupTopology.orderEmbedding /-
/-- The order embedding from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology.orderEmbedding : OrderEmbedding (RingTopology α) (AddGroupTopology α) :=
OrderEmbedding.ofMapLEIff toAddGroupTopology fun _ _ => Iff.rfl
#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbedding
+-/
end RingTopology
section AbsoluteValue
+#print AbsoluteValue.comp /-
/-- Construct an absolute value on a semiring `T` from an absolute value on a semiring `R`
and an injective ring homomorphism `f : T →+* R` -/
def AbsoluteValue.comp {R S T : Type _} [Semiring T] [Semiring R] [OrderedSemiring S]
@@ -465,6 +499,7 @@ def AbsoluteValue.comp {R S T : Type _} [Semiring T] [Semiring R] [OrderedSemiri
eq_zero' := by simp only [map_eq_zero_iff f hf, v.eq_zero, forall_const, iff_self_iff]
add_le' := by simp only [Function.comp_apply, map_add, v.add_le, forall_const]
#align absolute_value.comp AbsoluteValue.comp
+-/
end AbsoluteValue
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -215,7 +215,8 @@ open AddOpposite
instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [ContinuousMul α] : ContinuousMul αᵃᵒᵖ
where continuous_mul := by
- convert continuous_op.comp <|
+ convert
+ continuous_op.comp <|
(@continuous_mul α _ _ _).comp <| continuous_unop.prod_map continuous_unop
instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [TopologicalSemiring α] :
@@ -423,7 +424,7 @@ instance : CompleteLattice (RingTopology α) :=
/-- Given `f : α → β` and a topology on `α`, the coinduced ring topology on `β` is the finest
topology such that `f` is continuous and `β` is a topological ring. -/
def coinduced {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) : RingTopology β :=
- sInf { b : RingTopology β | TopologicalSpace.coinduced f t ≤ b.toTopologicalSpace }
+ sInf {b : RingTopology β | TopologicalSpace.coinduced f t ≤ b.toTopologicalSpace}
#align ring_topology.coinduced RingTopology.coinduced
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -54,7 +54,7 @@ then `topological_ring` should be used. Note: in the presence of `non_assoc_ring
mathematically equivalent (see `topological_semiring.has_continuous_neg_of_mul` or
`topological_semiring.to_topological_ring`). -/
class TopologicalSemiring [TopologicalSpace α] [NonUnitalNonAssocSemiring α] extends
- ContinuousAdd α, ContinuousMul α : Prop
+ ContinuousAdd α, ContinuousMul α : Prop
#align topological_semiring TopologicalSemiring
-/
@@ -66,7 +66,7 @@ multiplication as it is multiplication with `-1`. (See
`topological_semiring.has_continuous_neg_of_mul` and
`topological_semiring.to_topological_add_group`) -/
class TopologicalRing [TopologicalSpace α] [NonUnitalNonAssocRing α] extends TopologicalSemiring α,
- ContinuousNeg α : Prop
+ ContinuousNeg α : Prop
#align topological_ring TopologicalRing
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -38,7 +38,7 @@ of topological (semi)rings.
open Classical Set Filter TopologicalSpace Function
-open Classical Topology Filter
+open scoped Classical Topology Filter
section TopologicalSemiring
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -72,12 +72,6 @@ class TopologicalRing [TopologicalSpace α] [NonUnitalNonAssocRing α] extends T
variable {α}
-/- warning: topological_semiring.has_continuous_neg_of_mul -> TopologicalSemiring.continuousNeg_of_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))))], ContinuousNeg.{u1} α _inst_1 (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (NonAssocRing.toAddCommGroupWithOne.{u1} α _inst_2)))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))], ContinuousNeg.{u1} α _inst_1 (AddGroupWithOne.toNeg.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (NonAssocRing.toAddCommGroupWithOne.{u1} α _inst_2)))
-Case conversion may be inaccurate. Consider using '#align topological_semiring.has_continuous_neg_of_mul TopologicalSemiring.continuousNeg_of_mulₓ'. -/
/-- If `R` is a ring with a continuous multiplication, then negation is continuous as well since it
is just multiplication with `-1`. -/
theorem TopologicalSemiring.continuousNeg_of_mul [TopologicalSpace α] [NonAssocRing α]
@@ -142,55 +136,25 @@ def Subsemiring.topologicalClosure (s : Subsemiring α) : Subsemiring α :=
#align subsemiring.topological_closure Subsemiring.topologicalClosure
-/
-/- warning: subsemiring.topological_closure_coe -> Subsemiring.topologicalClosure_coe is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), Eq.{succ u1} (Set.{u1} α) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)) (closure.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), Eq.{succ u1} (Set.{u1} α) (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)) (closure.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) s))
-Case conversion may be inaccurate. Consider using '#align subsemiring.topological_closure_coe Subsemiring.topologicalClosure_coeₓ'. -/
@[simp]
theorem Subsemiring.topologicalClosure_coe (s : Subsemiring α) :
(s.topologicalClosure : Set α) = closure (s : Set α) :=
rfl
#align subsemiring.topological_closure_coe Subsemiring.topologicalClosure_coe
-/- warning: subsemiring.le_topological_closure -> Subsemiring.le_topologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toHasLe.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) s (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
-Case conversion may be inaccurate. Consider using '#align subsemiring.le_topological_closure Subsemiring.le_topologicalClosureₓ'. -/
theorem Subsemiring.le_topologicalClosure (s : Subsemiring α) : s ≤ s.topologicalClosure :=
subset_closure
#align subsemiring.le_topological_closure Subsemiring.le_topologicalClosure
-/- warning: subsemiring.is_closed_topological_closure -> Subsemiring.isClosed_topologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
-Case conversion may be inaccurate. Consider using '#align subsemiring.is_closed_topological_closure Subsemiring.isClosed_topologicalClosureₓ'. -/
theorem Subsemiring.isClosed_topologicalClosure (s : Subsemiring α) :
IsClosed (s.topologicalClosure : Set α) := by convert isClosed_closure
#align subsemiring.is_closed_topological_closure Subsemiring.isClosed_topologicalClosure
-/- warning: subsemiring.topological_closure_minimal -> Subsemiring.topologicalClosure_minimal is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) {t : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)}, (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toHasLe.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) t)) -> (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toHasLe.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) {t : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)}, (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) s t) -> (IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) t)) -> (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
-Case conversion may be inaccurate. Consider using '#align subsemiring.topological_closure_minimal Subsemiring.topologicalClosure_minimalₓ'. -/
theorem Subsemiring.topologicalClosure_minimal (s : Subsemiring α) {t : Subsemiring α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
#align subsemiring.topological_closure_minimal Subsemiring.topologicalClosure_minimal
-/- warning: subsemiring.comm_semiring_topological_closure -> Subsemiring.commSemiringTopologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), (forall (x : coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (y : coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (MulMemClass.mul.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))) (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.commSemiringTopologicalClosure._proof_1.{u1} α _inst_2) s)) x y) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (MulMemClass.mul.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))) (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.commSemiringTopologicalClosure._proof_1.{u1} α _inst_2) s)) y x)) -> (CommSemiring.{u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), (forall (x : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (y : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)), Eq.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2) s))) x y) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2) s))) y x)) -> (CommSemiring.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))))
-Case conversion may be inaccurate. Consider using '#align subsemiring.comm_semiring_topological_closure Subsemiring.commSemiringTopologicalClosureₓ'. -/
/-- If a subsemiring of a topological semiring is commutative, then so is its
topological closure. -/
def Subsemiring.commSemiringTopologicalClosure [T2Space α] (s : Subsemiring α)
@@ -266,12 +230,6 @@ section
variable {R : Type _} [NonUnitalNonAssocRing R] [TopologicalSpace R]
-/- warning: topological_ring.of_add_group_of_nhds_zero -> TopologicalRing.of_addGroup_of_nhds_zero is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalAddGroup.{u1} R _inst_2 (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalAddGroup.{u1} R _inst_2 (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (fun (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.806 : R) (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.808 : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.806 x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.808)) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
-Case conversion may be inaccurate. Consider using '#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_addGroup_of_nhds_zeroₓ'. -/
theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
(hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hmul_left : ∀ x₀ : R, Tendsto (fun x : R => x₀ * x) (𝓝 0) <| 𝓝 0)
@@ -301,12 +259,6 @@ theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
exact hadd.comp (((hmul_right y₀).comp tendsto_fst).prod_mk ((hmul_left x₀).comp tendsto_snd))
#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_addGroup_of_nhds_zero
-/- warning: topological_ring.of_nhds_zero -> TopologicalRing.of_nhds_zero is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} R R (fun (x : R) => Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1)))) x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Eq.{succ u1} (Filter.{u1} R) (nhds.{u1} R _inst_2 x₀) (Filter.map.{u1, u1} R R (fun (x : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (fun (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.975 : R) (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.977 : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.975 x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.977)) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (Filter.Tendsto.{u1, u1} R R (fun (x : R) => Neg.neg.{u1} R (NegZeroClass.toNeg.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R (SubtractionMonoid.toSubNegZeroMonoid.{u1} R (SubtractionCommMonoid.toSubtractionMonoid.{u1} R (AddCommGroup.toDivisionAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1)))))) x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (fun (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1059 : R) (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1061 : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1059 x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1061)) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Eq.{succ u1} (Filter.{u1} R) (nhds.{u1} R _inst_2 x₀) (Filter.map.{u1, u1} R R (fun (x : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
-Case conversion may be inaccurate. Consider using '#align topological_ring.of_nhds_zero TopologicalRing.of_nhds_zeroₓ'. -/
theorem TopologicalRing.of_nhds_zero
(hadd : Tendsto (uncurry ((· + ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hneg : Tendsto (fun x => -x : R → R) (𝓝 0) (𝓝 0))
@@ -326,23 +278,11 @@ section
variable [NonUnitalNonAssocRing α] [TopologicalRing α]
-/- warning: mul_left_continuous -> mulLeft_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
-Case conversion may be inaccurate. Consider using '#align mul_left_continuous mulLeft_continuousₓ'. -/
/-- In a topological semiring, the left-multiplication `add_monoid_hom` is continuous. -/
theorem mulLeft_continuous (x : α) : Continuous (AddMonoidHom.mulLeft x) :=
continuous_const.mul continuous_id
#align mul_left_continuous mulLeft_continuous
-/- warning: mul_right_continuous -> mulRight_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
-Case conversion may be inaccurate. Consider using '#align mul_right_continuous mulRight_continuousₓ'. -/
/-- In a topological semiring, the right-multiplication `add_monoid_hom` is continuous. -/
theorem mulRight_continuous (x : α) : Continuous (AddMonoidHom.mulRight x) :=
continuous_id.mul continuous_const
@@ -368,43 +308,19 @@ def Subring.topologicalClosure (S : Subring α) : Subring α :=
#align subring.topological_closure Subring.topologicalClosure
-/
-/- warning: subring.le_topological_closure -> Subring.le_topologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toHasLe.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) s (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
-Case conversion may be inaccurate. Consider using '#align subring.le_topological_closure Subring.le_topologicalClosureₓ'. -/
theorem Subring.le_topologicalClosure (s : Subring α) : s ≤ s.topologicalClosure :=
subset_closure
#align subring.le_topological_closure Subring.le_topologicalClosure
-/- warning: subring.is_closed_topological_closure -> Subring.isClosed_topologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subring.{u1} α _inst_2) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
-Case conversion may be inaccurate. Consider using '#align subring.is_closed_topological_closure Subring.isClosed_topologicalClosureₓ'. -/
theorem Subring.isClosed_topologicalClosure (s : Subring α) :
IsClosed (s.topologicalClosure : Set α) := by convert isClosed_closure
#align subring.is_closed_topological_closure Subring.isClosed_topologicalClosure
-/- warning: subring.topological_closure_minimal -> Subring.topologicalClosure_minimal is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2) {t : Subring.{u1} α _inst_2}, (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toHasLe.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subring.{u1} α _inst_2) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) t)) -> (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toHasLe.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2) {t : Subring.{u1} α _inst_2}, (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) s t) -> (IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2) t)) -> (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
-Case conversion may be inaccurate. Consider using '#align subring.topological_closure_minimal Subring.topologicalClosure_minimalₓ'. -/
theorem Subring.topologicalClosure_minimal (s : Subring α) {t : Subring α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
#align subring.topological_closure_minimal Subring.topologicalClosure_minimal
-/- warning: subring.comm_ring_topological_closure -> Subring.commRingTopologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subring.{u1} α _inst_2), (forall (x : coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (y : coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (MulMemClass.mul.{u1, u1} α (Subring.{u1} α _inst_2) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))))) (Subring.setLike.{u1} α _inst_2) (Subring.commRingTopologicalClosure._proof_1.{u1} α _inst_2) s)) x y) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (MulMemClass.mul.{u1, u1} α (Subring.{u1} α _inst_2) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))))) (Subring.setLike.{u1} α _inst_2) (Subring.commRingTopologicalClosure._proof_1.{u1} α _inst_2) s)) y x)) -> (CommRing.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subring.{u1} α _inst_2), (forall (x : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (y : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)), Eq.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) x y) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) y x)) -> (CommRing.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))))
-Case conversion may be inaccurate. Consider using '#align subring.comm_ring_topological_closure Subring.commRingTopologicalClosureₓ'. -/
/-- If a subring of a topological ring is commutative, then so is its topological closure. -/
def Subring.commRingTopologicalClosure [T2Space α] (s : Subring α) (hs : ∀ x y : s, x * y = y * x) :
CommRing s.topologicalClosure :=
@@ -511,12 +427,6 @@ def coinduced {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α →
#align ring_topology.coinduced RingTopology.coinduced
-/
-/- warning: ring_topology.coinduced_continuous -> RingTopology.coinduced_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [t : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u2} β] (f : α -> β), Continuous.{u1, u2} α β t (RingTopology.toTopologicalSpace.{u2} β _inst_2 (RingTopology.coinduced.{u1, u2} α β t _inst_2 f)) f
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [t : TopologicalSpace.{u2} α] [_inst_2 : Ring.{u1} β] (f : α -> β), Continuous.{u2, u1} α β t (RingTopology.toTopologicalSpace.{u1} β _inst_2 (RingTopology.coinduced.{u2, u1} α β t _inst_2 f)) f
-Case conversion may be inaccurate. Consider using '#align ring_topology.coinduced_continuous RingTopology.coinduced_continuousₓ'. -/
theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) :
cont t (coinduced f).toTopologicalSpace f :=
by
@@ -526,12 +436,6 @@ theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β
exact ht'
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
-/- warning: ring_topology.to_add_group_topology -> RingTopology.toAddGroupTopology is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], (RingTopology.{u1} α _inst_1) -> (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], (RingTopology.{u1} α _inst_1) -> (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)))
-Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology RingTopology.toAddGroupTopologyₓ'. -/
/-- The forgetful functor from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
where
@@ -540,12 +444,6 @@ def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
@TopologicalRing.to_topologicalAddGroup _ _ t.toTopologicalSpace t.toTopologicalRing
#align ring_topology.to_add_group_topology RingTopology.toAddGroupTopology
-/- warning: ring_topology.to_add_group_topology.order_embedding -> RingTopology.toAddGroupTopology.orderEmbedding is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (Preorder.toHasLe.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.partialOrder.{u1} α _inst_1))) (Preorder.toHasLe.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (AddGroupTopology.partialOrder.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.instPartialOrderRingTopology.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (AddGroupTopology.instPartialOrderAddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbeddingₓ'. -/
/-- The order embedding from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology.orderEmbedding : OrderEmbedding (RingTopology α) (AddGroupTopology α) :=
OrderEmbedding.ofMapLEIff toAddGroupTopology fun _ _ => Iff.rfl
@@ -555,12 +453,6 @@ end RingTopology
section AbsoluteValue
-/- warning: absolute_value.comp -> AbsoluteValue.comp is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (fun (_x : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) => T -> R) (RingHom.hasCoeToFun.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
-Case conversion may be inaccurate. Consider using '#align absolute_value.comp AbsoluteValue.compₓ'. -/
/-- Construct an absolute value on a semiring `T` from an absolute value on a semiring `R`
and an injective ring homomorphism `f : T →+* R` -/
def AbsoluteValue.comp {R S T : Type _} [Semiring T] [Semiring R] [OrderedSemiring S]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -295,9 +295,7 @@ theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
(𝓝 0 ×ᶠ 𝓝 0) ((map fun x : R => x + x₀ * y₀) <| 𝓝 0)
by
convert this using 1
- · ext
- simp only [comp_app, mul_add, add_mul]
- abel
+ · ext; simp only [comp_app, mul_add, add_mul]; abel
· simp only [add_comm]
refine' tendsto_map.comp (hadd.comp (tendsto.prod_mk _ hmul))
exact hadd.comp (((hmul_right y₀).comp tendsto_fst).prod_mk ((hmul_left x₀).comp tendsto_snd))
@@ -451,10 +449,7 @@ instance inhabited {α : Type u} [Ring α] : Inhabited (RingTopology α) :=
#print RingTopology.ext /-
@[ext]
-theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g :=
- by
- ext : 2
- exact h
+theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g := by ext : 2; exact h
#align ring_topology.ext' RingTopology.ext
-/
@@ -498,10 +493,7 @@ contained in the intersection of `s` and `t`. -/
instance : CompleteSemilatticeInf (RingTopology α) :=
{ RingTopology.partialOrder with
sInf := defInf
- inf_le := fun S a haS =>
- by
- apply topological_space.complete_lattice.Inf_le
- use a, ⟨haS, rfl⟩
+ inf_le := fun S a haS => by apply topological_space.complete_lattice.Inf_le; use a, ⟨haS, rfl⟩
le_inf := by
intro S a hab
apply topological_space.complete_lattice.le_Inf
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -486,7 +486,6 @@ private def def_Inf (S : Set (RingTopology α)) : RingTopology α :=
rintro _ ⟨⟨t, tr⟩, haS, rfl⟩; skip
have h := continuous_sInf_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
exact @Continuous.comp _ _ _ (id _) (id _) t _ _ continuous_neg h }
-#align ring_topology.def_Inf ring_topology.def_Inf
/-- Ring topologies on `α` form a complete lattice, with `⊥` the discrete topology and `⊤` the
indiscrete topology.
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -568,7 +568,7 @@ section AbsoluteValue
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (fun (_x : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) => T -> R) (RingHom.hasCoeToFun.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
Case conversion may be inaccurate. Consider using '#align absolute_value.comp AbsoluteValue.compₓ'. -/
/-- Construct an absolute value on a semiring `T` from an absolute value on a semiring `R`
and an injective ring homomorphism `f : T →+* R` -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -156,7 +156,7 @@ theorem Subsemiring.topologicalClosure_coe (s : Subsemiring α) :
/- warning: subsemiring.le_topological_closure -> Subsemiring.le_topologicalClosure is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toHasLe.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) s (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
Case conversion may be inaccurate. Consider using '#align subsemiring.le_topological_closure Subsemiring.le_topologicalClosureₓ'. -/
@@ -176,7 +176,7 @@ theorem Subsemiring.isClosed_topologicalClosure (s : Subsemiring α) :
/- warning: subsemiring.topological_closure_minimal -> Subsemiring.topologicalClosure_minimal is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) {t : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)}, (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) t)) -> (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) {t : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)}, (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toHasLe.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) t)) -> (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toHasLe.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) {t : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)}, (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) s t) -> (IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) t)) -> (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
Case conversion may be inaccurate. Consider using '#align subsemiring.topological_closure_minimal Subsemiring.topologicalClosure_minimalₓ'. -/
@@ -372,7 +372,7 @@ def Subring.topologicalClosure (S : Subring α) : Subring α :=
/- warning: subring.le_topological_closure -> Subring.le_topologicalClosure is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toHasLe.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) s (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
Case conversion may be inaccurate. Consider using '#align subring.le_topological_closure Subring.le_topologicalClosureₓ'. -/
@@ -392,7 +392,7 @@ theorem Subring.isClosed_topologicalClosure (s : Subring α) :
/- warning: subring.topological_closure_minimal -> Subring.topologicalClosure_minimal is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2) {t : Subring.{u1} α _inst_2}, (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subring.{u1} α _inst_2) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) t)) -> (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2) {t : Subring.{u1} α _inst_2}, (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toHasLe.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subring.{u1} α _inst_2) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) t)) -> (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toHasLe.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2) {t : Subring.{u1} α _inst_2}, (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) s t) -> (IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2) t)) -> (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
Case conversion may be inaccurate. Consider using '#align subring.topological_closure_minimal Subring.topologicalClosure_minimalₓ'. -/
@@ -551,7 +551,7 @@ def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
/- warning: ring_topology.to_add_group_topology.order_embedding -> RingTopology.toAddGroupTopology.orderEmbedding is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.partialOrder.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (AddGroupTopology.partialOrder.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))))
+ forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (Preorder.toHasLe.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.partialOrder.{u1} α _inst_1))) (Preorder.toHasLe.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (AddGroupTopology.partialOrder.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.instPartialOrderRingTopology.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (AddGroupTopology.instPartialOrderAddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)))))
Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbeddingₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -467,24 +467,24 @@ instance : PartialOrder (RingTopology α) :=
local notation "cont" => @Continuous _ _
private def def_Inf (S : Set (RingTopology α)) : RingTopology α :=
- let Inf_S' := infₛ (toTopologicalSpace '' S)
+ let Inf_S' := sInf (toTopologicalSpace '' S)
{ toTopologicalSpace := Inf_S'
continuous_add := by
- apply continuous_infₛ_rng.2
+ apply continuous_sInf_rng.2
rintro _ ⟨⟨t, tr⟩, haS, rfl⟩; skip
- have h := continuous_infₛ_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
+ have h := continuous_sInf_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
have h_continuous_id := @Continuous.prod_map _ _ _ _ t t Inf_S' Inf_S' _ _ h h
exact @Continuous.comp _ _ _ (id _) (id _) t _ _ continuous_add h_continuous_id
continuous_mul := by
- apply continuous_infₛ_rng.2
+ apply continuous_sInf_rng.2
rintro _ ⟨⟨t, tr⟩, haS, rfl⟩; skip
- have h := continuous_infₛ_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
+ have h := continuous_sInf_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
have h_continuous_id := @Continuous.prod_map _ _ _ _ t t Inf_S' Inf_S' _ _ h h
exact @Continuous.comp _ _ _ (id _) (id _) t _ _ continuous_mul h_continuous_id
continuous_neg := by
- apply continuous_infₛ_rng.2
+ apply continuous_sInf_rng.2
rintro _ ⟨⟨t, tr⟩, haS, rfl⟩; skip
- have h := continuous_infₛ_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
+ have h := continuous_sInf_dom (Set.mem_image_of_mem to_topological_space haS) continuous_id
exact @Continuous.comp _ _ _ (id _) (id _) t _ _ continuous_neg h }
#align ring_topology.def_Inf ring_topology.def_Inf
@@ -498,7 +498,7 @@ The supremum of two ring topologies `s` and `t` is the infimum of the family of
contained in the intersection of `s` and `t`. -/
instance : CompleteSemilatticeInf (RingTopology α) :=
{ RingTopology.partialOrder with
- infₛ := defInf
+ sInf := defInf
inf_le := fun S a haS =>
by
apply topological_space.complete_lattice.Inf_le
@@ -516,7 +516,7 @@ instance : CompleteLattice (RingTopology α) :=
/-- Given `f : α → β` and a topology on `α`, the coinduced ring topology on `β` is the finest
topology such that `f` is continuous and `β` is a topological ring. -/
def coinduced {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) : RingTopology β :=
- infₛ { b : RingTopology β | TopologicalSpace.coinduced f t ≤ b.toTopologicalSpace }
+ sInf { b : RingTopology β | TopologicalSpace.coinduced f t ≤ b.toTopologicalSpace }
#align ring_topology.coinduced RingTopology.coinduced
-/
@@ -530,7 +530,7 @@ theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β
cont t (coinduced f).toTopologicalSpace f :=
by
rw [continuous_iff_coinduced_le]
- refine' le_infₛ _
+ refine' le_sInf _
rintro _ ⟨t', ht', rfl⟩
exact ht'
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -405,7 +405,7 @@ theorem Subring.topologicalClosure_minimal (s : Subring α) {t : Subring α} (h
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subring.{u1} α _inst_2), (forall (x : coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (y : coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (MulMemClass.mul.{u1, u1} α (Subring.{u1} α _inst_2) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))))) (Subring.setLike.{u1} α _inst_2) (Subring.commRingTopologicalClosure._proof_1.{u1} α _inst_2) s)) x y) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (MulMemClass.mul.{u1, u1} α (Subring.{u1} α _inst_2) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))))) (Subring.setLike.{u1} α _inst_2) (Subring.commRingTopologicalClosure._proof_1.{u1} α _inst_2) s)) y x)) -> (CommRing.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subring.{u1} α _inst_2), (forall (x : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (y : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)), Eq.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) x y) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) y x)) -> (CommRing.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subring.{u1} α _inst_2), (forall (x : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (y : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)), Eq.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) x y) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α (Ring.toSemiring.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) y x)) -> (CommRing.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))))
Case conversion may be inaccurate. Consider using '#align subring.comm_ring_topological_closure Subring.commRingTopologicalClosureₓ'. -/
/-- If a subring of a topological ring is commutative, then so is its topological closure. -/
def Subring.commRingTopologicalClosure [T2Space α] (s : Subring α) (hs : ∀ x y : s, x * y = y * x) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -74,7 +74,7 @@ variable {α}
/- warning: topological_semiring.has_continuous_neg_of_mul -> TopologicalSemiring.continuousNeg_of_mul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))))], ContinuousNeg.{u1} α _inst_1 (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α _inst_2))))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))))], ContinuousNeg.{u1} α _inst_1 (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (NonAssocRing.toAddCommGroupWithOne.{u1} α _inst_2)))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))], ContinuousNeg.{u1} α _inst_1 (AddGroupWithOne.toNeg.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (NonAssocRing.toAddCommGroupWithOne.{u1} α _inst_2)))
Case conversion may be inaccurate. Consider using '#align topological_semiring.has_continuous_neg_of_mul TopologicalSemiring.continuousNeg_of_mulₓ'. -/
@@ -537,7 +537,7 @@ theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β
/- warning: ring_topology.to_add_group_topology -> RingTopology.toAddGroupTopology is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], (RingTopology.{u1} α _inst_1) -> (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))
+ forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], (RingTopology.{u1} α _inst_1) -> (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], (RingTopology.{u1} α _inst_1) -> (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)))
Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology RingTopology.toAddGroupTopologyₓ'. -/
@@ -551,7 +551,7 @@ def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
/- warning: ring_topology.to_add_group_topology.order_embedding -> RingTopology.toAddGroupTopology.orderEmbedding is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.partialOrder.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))) (AddGroupTopology.partialOrder.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))))
+ forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.partialOrder.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))) (AddGroupTopology.partialOrder.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.instPartialOrderRingTopology.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (AddGroupTopology.instPartialOrderAddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)))))
Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbeddingₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b19481deb571022990f1baa9cbf9172e6757a479
@@ -76,7 +76,7 @@ variable {α}
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))))], ContinuousNeg.{u1} α _inst_1 (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α _inst_2))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))], ContinuousNeg.{u1} α _inst_1 (AddGroupWithOne.toNeg.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α _inst_2))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))], ContinuousNeg.{u1} α _inst_1 (AddGroupWithOne.toNeg.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (NonAssocRing.toAddCommGroupWithOne.{u1} α _inst_2)))
Case conversion may be inaccurate. Consider using '#align topological_semiring.has_continuous_neg_of_mul TopologicalSemiring.continuousNeg_of_mulₓ'. -/
/-- If `R` is a ring with a continuous multiplication, then negation is continuous as well since it
is just multiplication with `-1`. -/
@@ -535,7 +535,12 @@ theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β
exact ht'
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
-#print RingTopology.toAddGroupTopology /-
+/- warning: ring_topology.to_add_group_topology -> RingTopology.toAddGroupTopology is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], (RingTopology.{u1} α _inst_1) -> (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], (RingTopology.{u1} α _inst_1) -> (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)))
+Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology RingTopology.toAddGroupTopologyₓ'. -/
/-- The forgetful functor from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
where
@@ -543,7 +548,6 @@ def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
to_topologicalAddGroup :=
@TopologicalRing.to_topologicalAddGroup _ _ t.toTopologicalSpace t.toTopologicalRing
#align ring_topology.to_add_group_topology RingTopology.toAddGroupTopology
--/
/- warning: ring_topology.to_add_group_topology.order_embedding -> RingTopology.toAddGroupTopology.orderEmbedding is a dubious translation:
lean 3 declaration is
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -251,8 +251,7 @@ open AddOpposite
instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [ContinuousMul α] : ContinuousMul αᵃᵒᵖ
where continuous_mul := by
- convert
- continuous_op.comp <|
+ convert continuous_op.comp <|
(@continuous_mul α _ _ _).comp <| continuous_unop.prod_map continuous_unop
instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [TopologicalSemiring α] :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -333,7 +333,7 @@ variable [NonUnitalNonAssocRing α] [TopologicalRing α]
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
Case conversion may be inaccurate. Consider using '#align mul_left_continuous mulLeft_continuousₓ'. -/
/-- In a topological semiring, the left-multiplication `add_monoid_hom` is continuous. -/
theorem mulLeft_continuous (x : α) : Continuous (AddMonoidHom.mulLeft x) :=
@@ -344,7 +344,7 @@ theorem mulLeft_continuous (x : α) : Continuous (AddMonoidHom.mulLeft x) :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
Case conversion may be inaccurate. Consider using '#align mul_right_continuous mulRight_continuousₓ'. -/
/-- In a topological semiring, the right-multiplication `add_monoid_hom` is continuous. -/
theorem mulRight_continuous (x : α) : Continuous (AddMonoidHom.mulRight x) :=
@@ -565,7 +565,7 @@ section AbsoluteValue
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (fun (_x : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) => T -> R) (RingHom.hasCoeToFun.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
Case conversion may be inaccurate. Consider using '#align absolute_value.comp AbsoluteValue.compₓ'. -/
/-- Construct an absolute value on a semiring `T` from an absolute value on a semiring `R`
and an injective ring homomorphism `f : T →+* R` -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -267,13 +267,13 @@ section
variable {R : Type _} [NonUnitalNonAssocRing R] [TopologicalSpace R]
-/- warning: topological_ring.of_add_group_of_nhds_zero -> TopologicalRing.of_add_group_of_nhds_zero is a dubious translation:
+/- warning: topological_ring.of_add_group_of_nhds_zero -> TopologicalRing.of_addGroup_of_nhds_zero is a dubious translation:
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalAddGroup.{u1} R _inst_2 (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
but is expected to have type
forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalAddGroup.{u1} R _inst_2 (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (fun (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.806 : R) (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.808 : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.806 x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.808)) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
-Case conversion may be inaccurate. Consider using '#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_add_group_of_nhds_zeroₓ'. -/
-theorem TopologicalRing.of_add_group_of_nhds_zero [TopologicalAddGroup R]
+Case conversion may be inaccurate. Consider using '#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_addGroup_of_nhds_zeroₓ'. -/
+theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
(hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hmul_left : ∀ x₀ : R, Tendsto (fun x : R => x₀ * x) (𝓝 0) <| 𝓝 0)
(hmul_right : ∀ x₀ : R, Tendsto (fun x : R => x * x₀) (𝓝 0) <| 𝓝 0) : TopologicalRing R :=
@@ -302,7 +302,7 @@ theorem TopologicalRing.of_add_group_of_nhds_zero [TopologicalAddGroup R]
· simp only [add_comm]
refine' tendsto_map.comp (hadd.comp (tendsto.prod_mk _ hmul))
exact hadd.comp (((hmul_right y₀).comp tendsto_fst).prod_mk ((hmul_left x₀).comp tendsto_snd))
-#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_add_group_of_nhds_zero
+#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_addGroup_of_nhds_zero
/- warning: topological_ring.of_nhds_zero -> TopologicalRing.of_nhds_zero is a dubious translation:
lean 3 declaration is
@@ -318,7 +318,7 @@ theorem TopologicalRing.of_nhds_zero
(hmul_right : ∀ x₀ : R, Tendsto (fun x : R => x * x₀) (𝓝 0) <| 𝓝 0)
(hleft : ∀ x₀ : R, 𝓝 x₀ = map (fun x => x₀ + x) (𝓝 0)) : TopologicalRing R :=
haveI := TopologicalAddGroup.of_comm_of_nhds_zero hadd hneg hleft
- TopologicalRing.of_add_group_of_nhds_zero hmul hmul_left hmul_right
+ TopologicalRing.of_addGroup_of_nhds_zero hmul hmul_left hmul_right
#align topological_ring.of_nhds_zero TopologicalRing.of_nhds_zero
end
@@ -554,7 +554,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbeddingₓ'. -/
/-- The order embedding from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology.orderEmbedding : OrderEmbedding (RingTopology α) (AddGroupTopology α) :=
- OrderEmbedding.ofMapLeIff toAddGroupTopology fun _ _ => Iff.rfl
+ OrderEmbedding.ofMapLEIff toAddGroupTopology fun _ _ => Iff.rfl
#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbedding
end RingTopology
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
! This file was ported from Lean 3 source module topology.algebra.ring.basic
-! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.Topology.Algebra.Group.Basic
# Topological (semi)rings
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
A topological (semi)ring is a (semi)ring equipped with a topology such that all operations are
continuous. Besides this definition, this file proves that the topological closure of a subring
(resp. an ideal) is a subring (resp. an ideal) and defines products and quotients
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -562,7 +562,7 @@ section AbsoluteValue
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (fun (_x : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) => T -> R) (RingHom.hasCoeToFun.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
Case conversion may be inaccurate. Consider using '#align absolute_value.comp AbsoluteValue.compₓ'. -/
/-- Construct an absolute value on a semiring `T` from an absolute value on a semiring `R`
and an injective ring homomorphism `f : T →+* R` -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -41,6 +41,7 @@ section TopologicalSemiring
variable (α : Type _)
+#print TopologicalSemiring /-
/-- a topological semiring is a semiring `R` where addition and multiplication are continuous.
We allow for non-unital and non-associative semirings as well.
@@ -52,7 +53,9 @@ mathematically equivalent (see `topological_semiring.has_continuous_neg_of_mul`
class TopologicalSemiring [TopologicalSpace α] [NonUnitalNonAssocSemiring α] extends
ContinuousAdd α, ContinuousMul α : Prop
#align topological_semiring TopologicalSemiring
+-/
+#print TopologicalRing /-
/-- A topological ring is a ring `R` where addition, multiplication and negation are continuous.
If `R` is a (unital) ring, then continuity of negation can be derived from continuity of
@@ -62,9 +65,16 @@ multiplication as it is multiplication with `-1`. (See
class TopologicalRing [TopologicalSpace α] [NonUnitalNonAssocRing α] extends TopologicalSemiring α,
ContinuousNeg α : Prop
#align topological_ring TopologicalRing
+-/
variable {α}
+/- warning: topological_semiring.has_continuous_neg_of_mul -> TopologicalSemiring.continuousNeg_of_mul is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))))], ContinuousNeg.{u1} α _inst_1 (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α _inst_2))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonAssocRing.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α _inst_2))], ContinuousNeg.{u1} α _inst_1 (AddGroupWithOne.toNeg.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α _inst_2))
+Case conversion may be inaccurate. Consider using '#align topological_semiring.has_continuous_neg_of_mul TopologicalSemiring.continuousNeg_of_mulₓ'. -/
/-- If `R` is a ring with a continuous multiplication, then negation is continuous as well since it
is just multiplication with `-1`. -/
theorem TopologicalSemiring.continuousNeg_of_mul [TopologicalSpace α] [NonAssocRing α]
@@ -74,32 +84,40 @@ theorem TopologicalSemiring.continuousNeg_of_mul [TopologicalSpace α] [NonAssoc
simpa using (continuous_const.mul continuous_id : Continuous fun x : α => -1 * x) }
#align topological_semiring.has_continuous_neg_of_mul TopologicalSemiring.continuousNeg_of_mul
+#print TopologicalSemiring.toTopologicalRing /-
/-- If `R` is a ring which is a topological semiring, then it is automatically a topological
ring. This exists so that one can place a topological ring structure on `R` without explicitly
proving `continuous_neg`. -/
-theorem TopologicalSemiring.to_topologicalRing [TopologicalSpace α] [NonAssocRing α]
+theorem TopologicalSemiring.toTopologicalRing [TopologicalSpace α] [NonAssocRing α]
(h : TopologicalSemiring α) : TopologicalRing α :=
{ h,
(haveI := h.to_has_continuous_mul
TopologicalSemiring.continuousNeg_of_mul :
ContinuousNeg α) with }
-#align topological_semiring.to_topological_ring TopologicalSemiring.to_topologicalRing
+#align topological_semiring.to_topological_ring TopologicalSemiring.toTopologicalRing
+-/
+#print TopologicalRing.to_topologicalAddGroup /-
-- See note [lower instance priority]
instance (priority := 100) TopologicalRing.to_topologicalAddGroup [NonUnitalNonAssocRing α]
[TopologicalSpace α] [TopologicalRing α] : TopologicalAddGroup α :=
{ TopologicalRing.to_topologicalSemiring.to_continuousAdd, TopologicalRing.to_continuousNeg with }
#align topological_ring.to_topological_add_group TopologicalRing.to_topologicalAddGroup
+-/
+#print DiscreteTopology.topologicalSemiring /-
instance (priority := 50) DiscreteTopology.topologicalSemiring [TopologicalSpace α]
[NonUnitalNonAssocSemiring α] [DiscreteTopology α] : TopologicalSemiring α :=
⟨⟩
#align discrete_topology.topological_semiring DiscreteTopology.topologicalSemiring
+-/
+#print DiscreteTopology.topologicalRing /-
instance (priority := 50) DiscreteTopology.topologicalRing [TopologicalSpace α]
[NonUnitalNonAssocRing α] [DiscreteTopology α] : TopologicalRing α :=
⟨⟩
#align discrete_topology.topological_ring DiscreteTopology.topologicalRing
+-/
section
@@ -112,32 +130,64 @@ instance (S : Subsemiring α) : TopologicalSemiring S :=
end Subsemiring
+#print Subsemiring.topologicalClosure /-
/-- The (topological-space) closure of a subsemiring of a topological semiring is
itself a subsemiring. -/
def Subsemiring.topologicalClosure (s : Subsemiring α) : Subsemiring α :=
{ s.toSubmonoid.topologicalClosure, s.toAddSubmonoid.topologicalClosure with
carrier := closure (s : Set α) }
#align subsemiring.topological_closure Subsemiring.topologicalClosure
+-/
+/- warning: subsemiring.topological_closure_coe -> Subsemiring.topologicalClosure_coe is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), Eq.{succ u1} (Set.{u1} α) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)) (closure.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), Eq.{succ u1} (Set.{u1} α) (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)) (closure.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) s))
+Case conversion may be inaccurate. Consider using '#align subsemiring.topological_closure_coe Subsemiring.topologicalClosure_coeₓ'. -/
@[simp]
theorem Subsemiring.topologicalClosure_coe (s : Subsemiring α) :
(s.topologicalClosure : Set α) = closure (s : Set α) :=
rfl
#align subsemiring.topological_closure_coe Subsemiring.topologicalClosure_coe
+/- warning: subsemiring.le_topological_closure -> Subsemiring.le_topologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) s (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
+Case conversion may be inaccurate. Consider using '#align subsemiring.le_topological_closure Subsemiring.le_topologicalClosureₓ'. -/
theorem Subsemiring.le_topologicalClosure (s : Subsemiring α) : s ≤ s.topologicalClosure :=
subset_closure
#align subsemiring.le_topological_closure Subsemiring.le_topologicalClosure
+/- warning: subsemiring.is_closed_topological_closure -> Subsemiring.isClosed_topologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
+Case conversion may be inaccurate. Consider using '#align subsemiring.is_closed_topological_closure Subsemiring.isClosed_topologicalClosureₓ'. -/
theorem Subsemiring.isClosed_topologicalClosure (s : Subsemiring α) :
IsClosed (s.topologicalClosure : Set α) := by convert isClosed_closure
#align subsemiring.is_closed_topological_closure Subsemiring.isClosed_topologicalClosure
+/- warning: subsemiring.topological_closure_minimal -> Subsemiring.topologicalClosure_minimal is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) {t : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)}, (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) t)) -> (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.partialOrder.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) {t : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)}, (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) s t) -> (IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) t)) -> (LE.le.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Preorder.toLE.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (PartialOrder.toPreorder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.instCompleteLatticeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
+Case conversion may be inaccurate. Consider using '#align subsemiring.topological_closure_minimal Subsemiring.topologicalClosure_minimalₓ'. -/
theorem Subsemiring.topologicalClosure_minimal (s : Subsemiring α) {t : Subsemiring α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
#align subsemiring.topological_closure_minimal Subsemiring.topologicalClosure_minimal
+/- warning: subsemiring.comm_semiring_topological_closure -> Subsemiring.commSemiringTopologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), (forall (x : coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (y : coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (MulMemClass.mul.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))) (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.commSemiringTopologicalClosure._proof_1.{u1} α _inst_2) s)) x y) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) s) (MulMemClass.mul.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)))) (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (Subsemiring.commSemiringTopologicalClosure._proof_1.{u1} α _inst_2) s)) y x)) -> (CommSemiring.{u1} (coeSort.{succ u1, succ (succ u1)} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.setLike.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Semiring.{u1} α] [_inst_3 : TopologicalSemiring.{u1} α _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)), (forall (x : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (y : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)), Eq.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2) s))) x y) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) (Subsemiring.toSubmonoid.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2) s))) y x)) -> (CommSemiring.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) (SetLike.instMembership.{u1, u1} (Subsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2)) α (Subsemiring.instSetLikeSubsemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_2))) x (Subsemiring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))))
+Case conversion may be inaccurate. Consider using '#align subsemiring.comm_semiring_topological_closure Subsemiring.commSemiringTopologicalClosureₓ'. -/
/-- If a subsemiring of a topological semiring is commutative, then so is its
topological closure. -/
def Subsemiring.commSemiringTopologicalClosure [T2Space α] (s : Subsemiring α)
@@ -214,6 +264,12 @@ section
variable {R : Type _} [NonUnitalNonAssocRing R] [TopologicalSpace R]
+/- warning: topological_ring.of_add_group_of_nhds_zero -> TopologicalRing.of_add_group_of_nhds_zero is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalAddGroup.{u1} R _inst_2 (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R] [_inst_3 : TopologicalAddGroup.{u1} R _inst_2 (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (fun (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.806 : R) (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.808 : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.806 x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.808)) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
+Case conversion may be inaccurate. Consider using '#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_add_group_of_nhds_zeroₓ'. -/
theorem TopologicalRing.of_add_group_of_nhds_zero [TopologicalAddGroup R]
(hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hmul_left : ∀ x₀ : R, Tendsto (fun x : R => x₀ * x) (𝓝 0) <| 𝓝 0)
@@ -245,6 +301,12 @@ theorem TopologicalRing.of_add_group_of_nhds_zero [TopologicalAddGroup R]
exact hadd.comp (((hmul_right y₀).comp tendsto_fst).prod_mk ((hmul_left x₀).comp tendsto_snd))
#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_add_group_of_nhds_zero
+/- warning: topological_ring.of_nhds_zero -> TopologicalRing.of_nhds_zero is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} R R (fun (x : R) => Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1)))) x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (forall (x₀ : R), Eq.{succ u1} (Filter.{u1} R) (nhds.{u1} R _inst_2 x₀) (Filter.map.{u1, u1} R R (fun (x : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : TopologicalSpace.{u1} R], (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (fun (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.975 : R) (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.977 : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.975 x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.977)) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (Filter.Tendsto.{u1, u1} R R (fun (x : R) => Neg.neg.{u1} R (NegZeroClass.toNeg.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R (SubtractionMonoid.toSubNegZeroMonoid.{u1} R (SubtractionCommMonoid.toSubtractionMonoid.{u1} R (AddCommGroup.toDivisionAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1)))))) x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (Filter.Tendsto.{u1, u1} (Prod.{u1, u1} R R) R (Function.uncurry.{u1, u1, u1} R R R (fun (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1059 : R) (x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1061 : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1059 x._@.Mathlib.Topology.Algebra.Ring.Basic._hyg.1061)) (Filter.prod.{u1, u1} R R (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Filter.Tendsto.{u1, u1} R R (fun (x : R) => HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R _inst_1)) x x₀) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))) -> (forall (x₀ : R), Eq.{succ u1} (Filter.{u1} R) (nhds.{u1} R _inst_2 x₀) (Filter.map.{u1, u1} R R (fun (x : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) x₀ x) (nhds.{u1} R _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) -> (TopologicalRing.{u1} R _inst_2 _inst_1)
+Case conversion may be inaccurate. Consider using '#align topological_ring.of_nhds_zero TopologicalRing.of_nhds_zeroₓ'. -/
theorem TopologicalRing.of_nhds_zero
(hadd : Tendsto (uncurry ((· + ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hneg : Tendsto (fun x => -x : R → R) (𝓝 0) (𝓝 0))
@@ -264,11 +326,23 @@ section
variable [NonUnitalNonAssocRing α] [TopologicalRing α]
+/- warning: mul_left_continuous -> mulLeft_continuous is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
+Case conversion may be inaccurate. Consider using '#align mul_left_continuous mulLeft_continuousₓ'. -/
/-- In a topological semiring, the left-multiplication `add_monoid_hom` is continuous. -/
theorem mulLeft_continuous (x : α) : Continuous (AddMonoidHom.mulLeft x) :=
continuous_const.mul continuous_id
#align mul_left_continuous mulLeft_continuous
+/- warning: mul_right_continuous -> mulRight_continuous is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : NonUnitalNonAssocRing.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 _inst_2] (x : α), Continuous.{u1, u1} α α _inst_1 _inst_1 (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2)))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α _inst_2) x))
+Case conversion may be inaccurate. Consider using '#align mul_right_continuous mulRight_continuousₓ'. -/
/-- In a topological semiring, the right-multiplication `add_monoid_hom` is continuous. -/
theorem mulRight_continuous (x : α) : Continuous (AddMonoidHom.mulRight x) :=
continuous_id.mul continuous_const
@@ -281,30 +355,56 @@ variable [Ring α] [TopologicalRing α]
namespace Subring
instance (S : Subring α) : TopologicalRing S :=
- TopologicalSemiring.to_topologicalRing S.toSubsemiring.TopologicalSemiring
+ TopologicalSemiring.toTopologicalRing S.toSubsemiring.TopologicalSemiring
end Subring
+#print Subring.topologicalClosure /-
/-- The (topological-space) closure of a subring of a topological ring is
itself a subring. -/
def Subring.topologicalClosure (S : Subring α) : Subring α :=
{ S.toSubmonoid.topologicalClosure, S.toAddSubgroup.topologicalClosure with
carrier := closure (S : Set α) }
#align subring.topological_closure Subring.topologicalClosure
+-/
+/- warning: subring.le_topological_closure -> Subring.le_topologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) s (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)
+Case conversion may be inaccurate. Consider using '#align subring.le_topological_closure Subring.le_topologicalClosureₓ'. -/
theorem Subring.le_topologicalClosure (s : Subring α) : s ≤ s.topologicalClosure :=
subset_closure
#align subring.le_topological_closure Subring.le_topologicalClosure
+/- warning: subring.is_closed_topological_closure -> Subring.isClosed_topologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subring.{u1} α _inst_2) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2), IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))
+Case conversion may be inaccurate. Consider using '#align subring.is_closed_topological_closure Subring.isClosed_topologicalClosureₓ'. -/
theorem Subring.isClosed_topologicalClosure (s : Subring α) :
IsClosed (s.topologicalClosure : Set α) := by convert isClosed_closure
#align subring.is_closed_topological_closure Subring.isClosed_topologicalClosure
+/- warning: subring.topological_closure_minimal -> Subring.topologicalClosure_minimal is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2) {t : Subring.{u1} α _inst_2}, (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) s t) -> (IsClosed.{u1} α _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subring.{u1} α _inst_2) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subring.{u1} α _inst_2) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) t)) -> (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (SetLike.partialOrder.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] (s : Subring.{u1} α _inst_2) {t : Subring.{u1} α _inst_2}, (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) s t) -> (IsClosed.{u1} α _inst_1 (SetLike.coe.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2) t)) -> (LE.le.{u1} (Subring.{u1} α _inst_2) (Preorder.toLE.{u1} (Subring.{u1} α _inst_2) (PartialOrder.toPreorder.{u1} (Subring.{u1} α _inst_2) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subring.{u1} α _inst_2) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subring.{u1} α _inst_2) (Subring.instCompleteLatticeSubring.{u1} α _inst_2))))) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s) t)
+Case conversion may be inaccurate. Consider using '#align subring.topological_closure_minimal Subring.topologicalClosure_minimalₓ'. -/
theorem Subring.topologicalClosure_minimal (s : Subring α) {t : Subring α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
#align subring.topological_closure_minimal Subring.topologicalClosure_minimal
+/- warning: subring.comm_ring_topological_closure -> Subring.commRingTopologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subring.{u1} α _inst_2), (forall (x : coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (y : coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (MulMemClass.mul.{u1, u1} α (Subring.{u1} α _inst_2) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))))) (Subring.setLike.{u1} α _inst_2) (Subring.commRingTopologicalClosure._proof_1.{u1} α _inst_2) s)) x y) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) s) (MulMemClass.mul.{u1, u1} α (Subring.{u1} α _inst_2) (MulOneClass.toHasMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))))) (Subring.setLike.{u1} α _inst_2) (Subring.commRingTopologicalClosure._proof_1.{u1} α _inst_2) s)) y x)) -> (CommRing.{u1} (coeSort.{succ u1, succ (succ u1)} (Subring.{u1} α _inst_2) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.setLike.{u1} α _inst_2)) (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u1} α] [_inst_3 : TopologicalRing.{u1} α _inst_1 (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2))] [_inst_4 : T2Space.{u1} α _inst_1] (s : Subring.{u1} α _inst_2), (forall (x : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (y : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)), Eq.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) x y) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (instHMul.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x s)) (Submonoid.mul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)))) (Subsemiring.toSubmonoid.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_2)) (Subring.toSubsemiring.{u1} α _inst_2 s)))) y x)) -> (CommRing.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subring.{u1} α _inst_2) (SetLike.instMembership.{u1, u1} (Subring.{u1} α _inst_2) α (Subring.instSetLikeSubring.{u1} α _inst_2)) x (Subring.topologicalClosure.{u1} α _inst_1 _inst_2 _inst_3 s))))
+Case conversion may be inaccurate. Consider using '#align subring.comm_ring_topological_closure Subring.commRingTopologicalClosureₓ'. -/
/-- If a subring of a topological ring is commutative, then so is its topological closure. -/
def Subring.commRingTopologicalClosure [T2Space α] (s : Subring α) (hs : ∀ x y : s, x * y = y * x) :
CommRing s.topologicalClosure :=
@@ -326,29 +426,35 @@ Any function `f : α → β` induces `coinduced f : topological_space α → rin
universe u v
+#print RingTopology /-
/-- A ring topology on a ring `α` is a topology for which addition, negation and multiplication
are continuous. -/
@[ext]
structure RingTopology (α : Type u) [Ring α] extends TopologicalSpace α, TopologicalRing α : Type u
#align ring_topology RingTopology
+-/
namespace RingTopology
variable {α : Type _} [Ring α]
+#print RingTopology.inhabited /-
instance inhabited {α : Type u} [Ring α] : Inhabited (RingTopology α) :=
⟨{ toTopologicalSpace := ⊤
continuous_add := continuous_top
continuous_mul := continuous_top
continuous_neg := continuous_top }⟩
#align ring_topology.inhabited RingTopology.inhabited
+-/
+#print RingTopology.ext /-
@[ext]
-theorem ext' {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g :=
+theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g :=
by
ext : 2
exact h
-#align ring_topology.ext' RingTopology.ext'
+#align ring_topology.ext' RingTopology.ext
+-/
/-- The ordering on ring topologies on the ring `α`.
`t ≤ s` if every set open in `s` is also open in `t` (`t` is finer than `s`). -/
@@ -404,12 +510,20 @@ instance : CompleteSemilatticeInf (RingTopology α) :=
instance : CompleteLattice (RingTopology α) :=
completeLatticeOfCompleteSemilatticeInf _
+#print RingTopology.coinduced /-
/-- Given `f : α → β` and a topology on `α`, the coinduced ring topology on `β` is the finest
topology such that `f` is continuous and `β` is a topological ring. -/
def coinduced {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) : RingTopology β :=
infₛ { b : RingTopology β | TopologicalSpace.coinduced f t ≤ b.toTopologicalSpace }
#align ring_topology.coinduced RingTopology.coinduced
+-/
+/- warning: ring_topology.coinduced_continuous -> RingTopology.coinduced_continuous is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [t : TopologicalSpace.{u1} α] [_inst_2 : Ring.{u2} β] (f : α -> β), Continuous.{u1, u2} α β t (RingTopology.toTopologicalSpace.{u2} β _inst_2 (RingTopology.coinduced.{u1, u2} α β t _inst_2 f)) f
+but is expected to have type
+ forall {α : Type.{u2}} {β : Type.{u1}} [t : TopologicalSpace.{u2} α] [_inst_2 : Ring.{u1} β] (f : α -> β), Continuous.{u2, u1} α β t (RingTopology.toTopologicalSpace.{u1} β _inst_2 (RingTopology.coinduced.{u2, u1} α β t _inst_2 f)) f
+Case conversion may be inaccurate. Consider using '#align ring_topology.coinduced_continuous RingTopology.coinduced_continuousₓ'. -/
theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) :
cont t (coinduced f).toTopologicalSpace f :=
by
@@ -419,14 +533,22 @@ theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β
exact ht'
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
+#print RingTopology.toAddGroupTopology /-
/-- The forgetful functor from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α
where
toTopologicalSpace := t.toTopologicalSpace
to_topologicalAddGroup :=
- @TopologicalRing.to_topologicalAddGroup _ _ t.toTopologicalSpace t.to_topologicalRing
+ @TopologicalRing.to_topologicalAddGroup _ _ t.toTopologicalSpace t.toTopologicalRing
#align ring_topology.to_add_group_topology RingTopology.toAddGroupTopology
+-/
+/- warning: ring_topology.to_add_group_topology.order_embedding -> RingTopology.toAddGroupTopology.orderEmbedding is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.partialOrder.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))) (AddGroupTopology.partialOrder.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : Ring.{u1} α], OrderEmbedding.{u1, u1} (RingTopology.{u1} α _inst_1) (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (Preorder.toLE.{u1} (RingTopology.{u1} α _inst_1) (PartialOrder.toPreorder.{u1} (RingTopology.{u1} α _inst_1) (RingTopology.instPartialOrderRingTopology.{u1} α _inst_1))) (Preorder.toLE.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (PartialOrder.toPreorder.{u1} (AddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1))) (AddGroupTopology.instPartialOrderAddGroupTopology.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbeddingₓ'. -/
/-- The order embedding from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology.orderEmbedding : OrderEmbedding (RingTopology α) (AddGroupTopology α) :=
OrderEmbedding.ofMapLeIff toAddGroupTopology fun _ _ => Iff.rfl
@@ -436,6 +558,12 @@ end RingTopology
section AbsoluteValue
+/- warning: absolute_value.comp -> AbsoluteValue.comp is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (fun (_x : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) => T -> R) (RingHom.hasCoeToFun.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : Semiring.{u3} T] [_inst_2 : Semiring.{u1} R] [_inst_3 : OrderedSemiring.{u2} S], (AbsoluteValue.{u1, u2} R S _inst_2 _inst_3) -> (forall {f : RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)}, (Function.Injective.{succ u3, succ u1} T R (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T (fun (_x : T) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : T) => R) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonUnitalNonAssocSemiring.toMul.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u3, u1} (RingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2) (RingHom.instRingHomClassRingHom.{u3, u1} T R (Semiring.toNonAssocSemiring.{u3} T _inst_1) (Semiring.toNonAssocSemiring.{u1} R _inst_2))))) f)) -> (AbsoluteValue.{u3, u2} T S _inst_1 _inst_3))
+Case conversion may be inaccurate. Consider using '#align absolute_value.comp AbsoluteValue.compₓ'. -/
/-- Construct an absolute value on a semiring `T` from an absolute value on a semiring `R`
and an injective ring homomorphism `f : T →+* R` -/
def AbsoluteValue.comp {R S T : Type _} [Semiring T] [Semiring R] [OrderedSemiring S]
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -3,13 +3,12 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-! This file was ported from Lean 3 source module topology.algebra.ring
-! leanprover-community/mathlib commit bcfa726826abd57587355b4b5b7e78ad6527b7e4
+! This file was ported from Lean 3 source module topology.algebra.ring.basic
+! 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.Algebra.Ring.Prod
-import Mathbin.RingTheory.Ideal.Quotient
import Mathbin.RingTheory.Subring.Basic
import Mathbin.Topology.Algebra.Group.Basic
@@ -30,9 +29,6 @@ of topological (semi)rings.
(semi)rings.
- `pi.topological_semiring`/`pi.topological_ring`: The arbitrary product of topological
(semi)rings.
-- `ideal.closure`: The closure of an ideal is an ideal.
-- `topological_ring_quotient`: The quotient of a topological semiring by an ideal is a
- topological ring.
-/
@@ -317,72 +313,6 @@ def Subring.commRingTopologicalClosure [T2Space α] (s : Subring α) (hs : ∀ x
end TopologicalSemiring
-section TopologicalRing
-
-variable {α : Type _} [TopologicalSpace α] [Ring α] [TopologicalRing α]
-
-/-- The closure of an ideal in a topological ring as an ideal. -/
-def Ideal.closure (S : Ideal α) : Ideal α :=
- {
- AddSubmonoid.topologicalClosure
- S.toAddSubmonoid with
- carrier := closure S
- smul_mem' := fun c x hx => map_mem_closure (mulLeft_continuous _) hx fun a => S.mul_mem_left c }
-#align ideal.closure Ideal.closure
-
-@[simp]
-theorem Ideal.coe_closure (S : Ideal α) : (S.closure : Set α) = closure S :=
- rfl
-#align ideal.coe_closure Ideal.coe_closure
-
-@[simp]
-theorem Ideal.closure_eq_of_isClosed (S : Ideal α) [hS : IsClosed (S : Set α)] : S.closure = S :=
- Ideal.ext <| Set.ext_iff.mp hS.closure_eq
-#align ideal.closure_eq_of_is_closed Ideal.closure_eq_of_isClosed
-
-end TopologicalRing
-
-section TopologicalRing
-
-variable {α : Type _} [TopologicalSpace α] [CommRing α] (N : Ideal α)
-
-open Ideal.Quotient
-
-instance topologicalRingQuotientTopology : TopologicalSpace (α ⧸ N) :=
- show TopologicalSpace (Quotient _) by infer_instance
-#align topological_ring_quotient_topology topologicalRingQuotientTopology
-
--- note for the reader: in the following, `mk` is `ideal.quotient.mk`, the canonical map `R → R/I`.
-variable [TopologicalRing α]
-
-theorem QuotientRing.isOpenMap_coe : IsOpenMap (mk N) :=
- by
- intro s s_op
- change IsOpen (mk N ⁻¹' (mk N '' s))
- rw [quotient_ring_saturate]
- exact isOpen_unionᵢ fun ⟨n, _⟩ => isOpenMap_add_left n s s_op
-#align quotient_ring.is_open_map_coe QuotientRing.isOpenMap_coe
-
-theorem QuotientRing.quotientMap_coe_coe : QuotientMap fun p : α × α => (mk N p.1, mk N p.2) :=
- IsOpenMap.to_quotientMap ((QuotientRing.isOpenMap_coe N).Prod (QuotientRing.isOpenMap_coe N))
- ((continuous_quot_mk.comp continuous_fst).prod_mk (continuous_quot_mk.comp continuous_snd))
- (by rintro ⟨⟨x⟩, ⟨y⟩⟩ <;> exact ⟨(x, y), rfl⟩)
-#align quotient_ring.quotient_map_coe_coe QuotientRing.quotientMap_coe_coe
-
-instance topologicalRing_quotient : TopologicalRing (α ⧸ N) :=
- TopologicalSemiring.to_topologicalRing
- { continuous_add :=
- have cont : Continuous (mk N ∘ fun p : α × α => p.fst + p.snd) :=
- continuous_quot_mk.comp continuous_add
- (QuotientMap.continuous_iff (QuotientRing.quotientMap_coe_coe N)).mpr cont
- continuous_mul :=
- have cont : Continuous (mk N ∘ fun p : α × α => p.fst * p.snd) :=
- continuous_quot_mk.comp continuous_mul
- (QuotientMap.continuous_iff (QuotientRing.quotientMap_coe_coe N)).mpr cont }
-#align topological_ring_quotient topologicalRing_quotient
-
-end TopologicalRing
-
/-!
### Lattice of ring topologies
We define a type class `ring_topology α` which endows a ring `α` with a topology such that all ring
Take the content of
Algebra.BigOperators.List.Basic
Algebra.BigOperators.List.Lemmas
Algebra.BigOperators.Multiset.Basic
Algebra.BigOperators.Multiset.Lemmas
Algebra.BigOperators.Multiset.Order
Algebra.BigOperators.Order
and sort it into six files:
Algebra.Order.BigOperators.Group.List
. I credit Yakov for https://github.com/leanprover-community/mathlib/pull/8543.Algebra.Order.BigOperators.Group.Multiset
. Copyright inherited from Algebra.BigOperators.Multiset.Order
.Algebra.Order.BigOperators.Group.Finset
. Copyright inherited from Algebra.BigOperators.Order
.Algebra.Order.BigOperators.Ring.List
. I credit Stuart for https://github.com/leanprover-community/mathlib/pull/10184.Algebra.Order.BigOperators.Ring.Multiset
. I credit Ruben for https://github.com/leanprover-community/mathlib/pull/8787.Algebra.Order.BigOperators.Ring.Finset
. I credit Floris for https://github.com/leanprover-community/mathlib/pull/1294.Here are the design decisions at play:
Data.Nat.Order.Basic
in a few List
files.Algebra.Order.BigOperators
instead of Algebra.BigOperators.Order
because algebraic order theory is more of a theory than big operators algebra. Another reason is that algebraic order theory is the only way to mix pure order and pure algebra, while there are more ways to mix pure finiteness and pure algebra than just big operators.Algebra.Order.BigOperators.Group
should be additivisable (except a few Nat
- or Int
-specific lemmas). In contrast, things under Algebra.Order.BigOperators.Ring
are more prone to having heavy imports.List
vs Multiset
vs Finset
. This is not strictly necessary, and can be relaxed in cases where there aren't that many lemmas to be had. As an example, I could split out the AbsoluteValue
lemmas from Algebra.Order.BigOperators.Ring.Finset
to a file Algebra.Order.BigOperators.Ring.AbsoluteValue
and it could stay this way until too many lemmas are in this file (or a split is needed for import reasons), in which case we would need files Algebra.Order.BigOperators.Ring.AbsoluteValue.Finset
, Algebra.Order.BigOperators.Ring.AbsoluteValue.Multiset
, etc...Finsupp
big operator and finprod
/finsum
order lemmas also belong in Algebra.Order.BigOperators
. I haven't done so in this PR because the diff is big enough like that.@@ -3,6 +3,7 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-/
+import Mathlib.Algebra.Order.AbsoluteValue
import Mathlib.Algebra.Ring.Prod
import Mathlib.RingTheory.Subring.Basic
import Mathlib.Topology.Algebra.Group.Basic
@@ -90,6 +90,8 @@ section
variable [TopologicalSpace α] [Semiring α] [TopologicalSemiring α]
+instance : TopologicalSemiring (ULift α) where
+
namespace Subsemiring
-- Porting note: named instance because generated name was huge
@@ -226,6 +228,8 @@ section
variable [NonUnitalNonAssocRing α] [TopologicalRing α]
+instance : TopologicalRing (ULift α) where
+
/-- In a topological semiring, the left-multiplication `AddMonoidHom` is continuous. -/
theorem mulLeft_continuous (x : α) : Continuous (AddMonoidHom.mulLeft x) :=
continuous_const.mul continuous_id
ball
and bex
from lemma names (#10816)
ball
for "bounded forall" and bex
for "bounded exists" are from experience very confusing abbreviations. This PR renames them to forall_mem
and exists_mem
in the few Set
lemma names that mention them.
Also deprecate ball_image_of_ball
, mem_image_elim
, mem_image_elim_on
since those lemmas are duplicates of the renamed lemmas (apart from argument order and implicitness, which I am also fixing by making the binder in the RHS of forall_mem_image
semi-implicit), have obscure names and are completely unused.
@@ -316,11 +316,11 @@ instance : PartialOrder (RingTopology α) :=
private def def_sInf (S : Set (RingTopology α)) : RingTopology α :=
let _ := sInf (toTopologicalSpace '' S)
- { toContinuousAdd := continuousAdd_sInf <| ball_image_iff.2 fun t _ =>
+ { toContinuousAdd := continuousAdd_sInf <| forall_mem_image.2 fun t _ =>
let _ := t.1; t.toContinuousAdd
- toContinuousMul := continuousMul_sInf <| ball_image_iff.2 fun t _ =>
+ toContinuousMul := continuousMul_sInf <| forall_mem_image.2 fun t _ =>
let _ := t.1; t.toContinuousMul
- toContinuousNeg := continuousNeg_sInf <| ball_image_iff.2 fun t _ =>
+ toContinuousNeg := continuousNeg_sInf <| forall_mem_image.2 fun t _ =>
let _ := t.1; t.toContinuousNeg }
/-- Ring topologies on `α` form a complete lattice, with `⊥` the discrete topology and `⊤` the
@@ -334,7 +334,7 @@ contained in the intersection of `s` and `t`. -/
instance : CompleteSemilatticeInf (RingTopology α) where
sInf := def_sInf
sInf_le := fun _ a haS => sInf_le (α := TopologicalSpace α) ⟨a, ⟨haS, rfl⟩⟩
- le_sInf := fun _ _ h => le_sInf (α := TopologicalSpace α) <| ball_image_iff.2 h
+ le_sInf := fun _ _ h => le_sInf (α := TopologicalSpace α) <| forall_mem_image.2 h
instance : CompleteLattice (RingTopology α) :=
completeLatticeOfCompleteSemilatticeInf _
@@ -347,7 +347,7 @@ def coinduced {α β : Type*} [t : TopologicalSpace α] [Ring β] (f : α → β
theorem coinduced_continuous {α β : Type*} [t : TopologicalSpace α] [Ring β] (f : α → β) :
Continuous[t, (coinduced f).toTopologicalSpace] f :=
- continuous_sInf_rng.2 <| ball_image_iff.2 fun _ => continuous_iff_coinduced_le.2
+ continuous_sInf_rng.2 <| forall_mem_image.2 fun _ => continuous_iff_coinduced_le.2
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
/-- The forgetful functor from ring topologies on `a` to additive group topologies on `a`. -/
@@ -306,7 +306,7 @@ theorem toTopologicalSpace_injective :
@[ext]
theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g :=
- toTopologicalSpace_injective <| topologicalSpace_eq h
+ toTopologicalSpace_injective <| TopologicalSpace.ext h
#align ring_topology.ext' RingTopology.ext
/-- The ordering on ring topologies on the ring `α`.
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -31,7 +31,7 @@ open Set Filter TopologicalSpace Function Topology Filter
section TopologicalSemiring
-variable (α : Type _)
+variable (α : Type*)
/-- a topological semiring is a semiring `R` where addition and multiplication are continuous.
We allow for non-unital and non-associative semirings as well.
@@ -135,7 +135,7 @@ end
section
-variable {β : Type _} [TopologicalSpace α] [TopologicalSpace β]
+variable {β : Type*} [TopologicalSpace α] [TopologicalSpace β]
/-- The product topology on the cartesian product of two topological semirings
makes the product into a topological semiring. -/
@@ -149,12 +149,12 @@ instance [NonUnitalNonAssocRing α] [NonUnitalNonAssocRing β] [TopologicalRing
end
-instance Pi.instTopologicalSemiring {β : Type _} {C : β → Type _} [∀ b, TopologicalSpace (C b)]
+instance Pi.instTopologicalSemiring {β : Type*} {C : β → Type*} [∀ b, TopologicalSpace (C b)]
[∀ b, NonUnitalNonAssocSemiring (C b)] [∀ b, TopologicalSemiring (C b)] :
TopologicalSemiring (∀ b, C b) where
#align pi.topological_semiring Pi.instTopologicalSemiring
-instance Pi.instTopologicalRing {β : Type _} {C : β → Type _} [∀ b, TopologicalSpace (C b)]
+instance Pi.instTopologicalRing {β : Type*} {C : β → Type*} [∀ b, TopologicalSpace (C b)]
[∀ b, NonUnitalNonAssocRing (C b)] [∀ b, TopologicalRing (C b)] :
TopologicalRing (∀ b, C b) := ⟨⟩
#align pi.topological_ring Pi.instTopologicalRing
@@ -196,7 +196,7 @@ end AddOpposite
section
-variable {R : Type _} [NonUnitalNonAssocRing R] [TopologicalSpace R]
+variable {R : Type*} [NonUnitalNonAssocRing R] [TopologicalSpace R]
theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
(hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ˢ 𝓝 0) <| 𝓝 0)
@@ -291,7 +291,7 @@ structure RingTopology (α : Type u) [Ring α] extends TopologicalSpace α, Topo
namespace RingTopology
-variable {α : Type _} [Ring α]
+variable {α : Type*} [Ring α]
instance inhabited {α : Type u} [Ring α] : Inhabited (RingTopology α) :=
⟨let _ : TopologicalSpace α := ⊤;
@@ -341,11 +341,11 @@ instance : CompleteLattice (RingTopology α) :=
/-- Given `f : α → β` and a topology on `α`, the coinduced ring topology on `β` is the finest
topology such that `f` is continuous and `β` is a topological ring. -/
-def coinduced {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) : RingTopology β :=
+def coinduced {α β : Type*} [t : TopologicalSpace α] [Ring β] (f : α → β) : RingTopology β :=
sInf { b : RingTopology β | t.coinduced f ≤ b.toTopologicalSpace }
#align ring_topology.coinduced RingTopology.coinduced
-theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) :
+theorem coinduced_continuous {α β : Type*} [t : TopologicalSpace α] [Ring β] (f : α → β) :
Continuous[t, (coinduced f).toTopologicalSpace] f :=
continuous_sInf_rng.2 <| ball_image_iff.2 fun _ => continuous_iff_coinduced_le.2
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
@@ -368,7 +368,7 @@ section AbsoluteValue
/-- Construct an absolute value on a semiring `T` from an absolute value on a semiring `R`
and an injective ring homomorphism `f : T →+* R` -/
-def AbsoluteValue.comp {R S T : Type _} [Semiring T] [Semiring R] [OrderedSemiring S]
+def AbsoluteValue.comp {R S T : Type*} [Semiring T] [Semiring R] [OrderedSemiring S]
(v : AbsoluteValue R S) {f : T →+* R} (hf : Function.Injective f) : AbsoluteValue T S where
toMulHom := v.1.comp f
nonneg' _ := v.nonneg _
@@ -2,16 +2,13 @@
Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-
-! This file was ported from Lean 3 source module topology.algebra.ring.basic
-! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Ring.Prod
import Mathlib.RingTheory.Subring.Basic
import Mathlib.Topology.Algebra.Group.Basic
+#align_import topology.algebra.ring.basic from "leanprover-community/mathlib"@"9a59dcb7a2d06bf55da57b9030169219980660cd"
+
/-!
# Topological (semi)rings
@@ -152,13 +152,15 @@ instance [NonUnitalNonAssocRing α] [NonUnitalNonAssocRing β] [TopologicalRing
end
-instance {β : Type _} {C : β → Type _} [∀ b, TopologicalSpace (C b)]
+instance Pi.instTopologicalSemiring {β : Type _} {C : β → Type _} [∀ b, TopologicalSpace (C b)]
[∀ b, NonUnitalNonAssocSemiring (C b)] [∀ b, TopologicalSemiring (C b)] :
TopologicalSemiring (∀ b, C b) where
+#align pi.topological_semiring Pi.instTopologicalSemiring
-instance {β : Type _} {C : β → Type _} [∀ b, TopologicalSpace (C b)]
+instance Pi.instTopologicalRing {β : Type _} {C : β → Type _} [∀ b, TopologicalSpace (C b)]
[∀ b, NonUnitalNonAssocRing (C b)] [∀ b, TopologicalRing (C b)] :
TopologicalRing (∀ b, C b) := ⟨⟩
+#align pi.topological_ring Pi.instTopologicalRing
section MulOpposite
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>
@@ -200,7 +200,7 @@ section
variable {R : Type _} [NonUnitalNonAssocRing R] [TopologicalSpace R]
theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
- (hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
+ (hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ˢ 𝓝 0) <| 𝓝 0)
(hmul_left : ∀ x₀ : R, Tendsto (fun x : R => x₀ * x) (𝓝 0) <| 𝓝 0)
(hmul_right : ∀ x₀ : R, Tendsto (fun x : R => x * x₀) (𝓝 0) <| 𝓝 0) : TopologicalRing R where
continuous_mul := by
@@ -209,9 +209,9 @@ theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_addGroup_of_nhds_zero
theorem TopologicalRing.of_nhds_zero
- (hadd : Tendsto (uncurry ((· + ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
+ (hadd : Tendsto (uncurry ((· + ·) : R → R → R)) (𝓝 0 ×ˢ 𝓝 0) <| 𝓝 0)
(hneg : Tendsto (fun x => -x : R → R) (𝓝 0) (𝓝 0))
- (hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
+ (hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ˢ 𝓝 0) <| 𝓝 0)
(hmul_left : ∀ x₀ : R, Tendsto (fun x : R => x₀ * x) (𝓝 0) <| 𝓝 0)
(hmul_right : ∀ x₀ : R, Tendsto (fun x : R => x * x₀) (𝓝 0) <| 𝓝 0)
(hleft : ∀ x₀ : R, 𝓝 x₀ = map (fun x => x₀ + x) (𝓝 0)) : TopologicalRing R :=
@@ -241,7 +241,7 @@ end
variable [Ring α] [TopologicalRing α]
-instance (S : Subring α) : TopologicalRing S :=
+instance Subring.instTopologicalRing (S : Subring α) : TopologicalRing S :=
{ S.toSubmonoid.continuousMul, inferInstanceAs (TopologicalAddGroup S.toAddSubgroup) with }
/-- The (topological-space) closure of a subring of a topological ring is
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -315,13 +315,13 @@ theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g :=
instance : PartialOrder (RingTopology α) :=
PartialOrder.lift RingTopology.toTopologicalSpace toTopologicalSpace_injective
-private def def_infₛ (S : Set (RingTopology α)) : RingTopology α :=
- let _ := infₛ (toTopologicalSpace '' S)
- { toContinuousAdd := continuousAdd_infₛ <| ball_image_iff.2 fun t _ =>
+private def def_sInf (S : Set (RingTopology α)) : RingTopology α :=
+ let _ := sInf (toTopologicalSpace '' S)
+ { toContinuousAdd := continuousAdd_sInf <| ball_image_iff.2 fun t _ =>
let _ := t.1; t.toContinuousAdd
- toContinuousMul := continuousMul_infₛ <| ball_image_iff.2 fun t _ =>
+ toContinuousMul := continuousMul_sInf <| ball_image_iff.2 fun t _ =>
let _ := t.1; t.toContinuousMul
- toContinuousNeg := continuousNeg_infₛ <| ball_image_iff.2 fun t _ =>
+ toContinuousNeg := continuousNeg_sInf <| ball_image_iff.2 fun t _ =>
let _ := t.1; t.toContinuousNeg }
/-- Ring topologies on `α` form a complete lattice, with `⊥` the discrete topology and `⊤` the
@@ -333,9 +333,9 @@ The infimum of a collection of ring topologies is the topology generated by all
The supremum of two ring topologies `s` and `t` is the infimum of the family of all ring topologies
contained in the intersection of `s` and `t`. -/
instance : CompleteSemilatticeInf (RingTopology α) where
- infₛ := def_infₛ
- infₛ_le := fun _ a haS => infₛ_le (α := TopologicalSpace α) ⟨a, ⟨haS, rfl⟩⟩
- le_infₛ := fun _ _ h => le_infₛ (α := TopologicalSpace α) <| ball_image_iff.2 h
+ sInf := def_sInf
+ sInf_le := fun _ a haS => sInf_le (α := TopologicalSpace α) ⟨a, ⟨haS, rfl⟩⟩
+ le_sInf := fun _ _ h => le_sInf (α := TopologicalSpace α) <| ball_image_iff.2 h
instance : CompleteLattice (RingTopology α) :=
completeLatticeOfCompleteSemilatticeInf _
@@ -343,12 +343,12 @@ instance : CompleteLattice (RingTopology α) :=
/-- Given `f : α → β` and a topology on `α`, the coinduced ring topology on `β` is the finest
topology such that `f` is continuous and `β` is a topological ring. -/
def coinduced {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) : RingTopology β :=
- infₛ { b : RingTopology β | t.coinduced f ≤ b.toTopologicalSpace }
+ sInf { b : RingTopology β | t.coinduced f ≤ b.toTopologicalSpace }
#align ring_topology.coinduced RingTopology.coinduced
theorem coinduced_continuous {α β : Type _} [t : TopologicalSpace α] [Ring β] (f : α → β) :
Continuous[t, (coinduced f).toTopologicalSpace] f :=
- continuous_infₛ_rng.2 <| ball_image_iff.2 fun _ => continuous_iff_coinduced_le.2
+ continuous_sInf_rng.2 <| ball_image_iff.2 fun _ => continuous_iff_coinduced_le.2
#align ring_topology.coinduced_continuous RingTopology.coinduced_continuous
/-- The forgetful functor from ring topologies on `a` to additive group topologies on `a`. -/
@@ -95,7 +95,8 @@ variable [TopologicalSpace α] [Semiring α] [TopologicalSemiring α]
namespace Subsemiring
-instance (S : Subsemiring α) : TopologicalSemiring S :=
+-- Porting note: named instance because generated name was huge
+instance topologicalSemiring (S : Subsemiring α) : TopologicalSemiring S :=
{ S.toSubmonoid.continuousMul, S.toAddSubmonoid.continuousAdd with }
end Subsemiring
@@ -24,7 +24,7 @@ of topological (semi)rings.
## Main Results
- `Subring.topologicalClosure`/`Subsemiring.topologicalClosure`: the topological closure of a
- `Subring`/`Subsemiring` is itself a `sub(semi)Ring`.
+ `Subring`/`Subsemiring` is itself a `sub(semi)ring`.
- The product of two topological (semi)rings is a topological (semi)ring.
- The indexed product of topological (semi)rings is a topological (semi)ring.
-/
@@ -198,14 +198,14 @@ section
variable {R : Type _} [NonUnitalNonAssocRing R] [TopologicalSpace R]
-theorem TopologicalRing.of_add_group_of_nhds_zero [TopologicalAddGroup R]
+theorem TopologicalRing.of_addGroup_of_nhds_zero [TopologicalAddGroup R]
(hmul : Tendsto (uncurry ((· * ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
(hmul_left : ∀ x₀ : R, Tendsto (fun x : R => x₀ * x) (𝓝 0) <| 𝓝 0)
(hmul_right : ∀ x₀ : R, Tendsto (fun x : R => x * x₀) (𝓝 0) <| 𝓝 0) : TopologicalRing R where
continuous_mul := by
refine continuous_of_continuousAt_zero₂ (AddMonoidHom.mul (R := R)) ?_ ?_ ?_ <;>
simpa only [ContinuousAt, mul_zero, zero_mul, nhds_prod_eq, AddMonoidHom.mul_apply]
-#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_add_group_of_nhds_zero
+#align topological_ring.of_add_group_of_nhds_zero TopologicalRing.of_addGroup_of_nhds_zero
theorem TopologicalRing.of_nhds_zero
(hadd : Tendsto (uncurry ((· + ·) : R → R → R)) (𝓝 0 ×ᶠ 𝓝 0) <| 𝓝 0)
@@ -215,7 +215,7 @@ theorem TopologicalRing.of_nhds_zero
(hmul_right : ∀ x₀ : R, Tendsto (fun x : R => x * x₀) (𝓝 0) <| 𝓝 0)
(hleft : ∀ x₀ : R, 𝓝 x₀ = map (fun x => x₀ + x) (𝓝 0)) : TopologicalRing R :=
have := TopologicalAddGroup.of_comm_of_nhds_zero hadd hneg hleft
- TopologicalRing.of_add_group_of_nhds_zero hmul hmul_left hmul_right
+ TopologicalRing.of_addGroup_of_nhds_zero hmul hmul_left hmul_right
#align topological_ring.of_nhds_zero TopologicalRing.of_nhds_zero
end
@@ -314,7 +314,7 @@ theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g :=
instance : PartialOrder (RingTopology α) :=
PartialOrder.lift RingTopology.toTopologicalSpace toTopologicalSpace_injective
-private def def_Inf (S : Set (RingTopology α)) : RingTopology α :=
+private def def_infₛ (S : Set (RingTopology α)) : RingTopology α :=
let _ := infₛ (toTopologicalSpace '' S)
{ toContinuousAdd := continuousAdd_infₛ <| ball_image_iff.2 fun t _ =>
let _ := t.1; t.toContinuousAdd
@@ -332,7 +332,7 @@ The infimum of a collection of ring topologies is the topology generated by all
The supremum of two ring topologies `s` and `t` is the infimum of the family of all ring topologies
contained in the intersection of `s` and `t`. -/
instance : CompleteSemilatticeInf (RingTopology α) where
- infₛ := def_Inf
+ infₛ := def_infₛ
infₛ_le := fun _ a haS => infₛ_le (α := TopologicalSpace α) ⟨a, ⟨haS, rfl⟩⟩
le_infₛ := fun _ _ h => le_infₛ (α := TopologicalSpace α) <| ball_image_iff.2 h
@@ -359,7 +359,7 @@ def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α where
/-- The order embedding from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology.orderEmbedding : OrderEmbedding (RingTopology α) (AddGroupTopology α) :=
- OrderEmbedding.ofMapLeIff toAddGroupTopology fun _ _ => Iff.rfl
+ OrderEmbedding.ofMapLEIff toAddGroupTopology fun _ _ => Iff.rfl
#align ring_topology.to_add_group_topology.order_embedding RingTopology.toAddGroupTopology.orderEmbedding
end RingTopology
The unported dependencies are