File: Mathlib/Topology/Algebra/Ring/Basic.lean

full_name: TopologicalSemiring
code: /-- a topological semiring is a semiring `R` where addition and multiplication are continuous.
We allow for non-unital and non-associative semirings as well.

The `TopologicalSemiring` class should *only* be instantiated in the presence of a
`NonUnitalNonAssocSemiring` instance; if there is an instance of `NonUnitalNonAssocRing`,
then `TopologicalRing` should be used. Note: in the presence of `NonAssocRing`, these classes are
mathematically equivalent (see `TopologicalSemiring.continuousNeg_of_mul` or
`TopologicalSemiring.toTopologicalRing`).  -/
class TopologicalSemiring [TopologicalSpace α] [NonUnitalNonAssocSemiring α] extends
  ContinuousAdd α, ContinuousMul α : Prop
goal: Prop

full_name: TopologicalRing
code: /-- 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
multiplication as it is multiplication with `-1`. (See
`TopologicalSemiring.continuousNeg_of_mul` and
`topological_semiring.to_topological_add_group`) -/
class TopologicalRing [TopologicalSpace α] [NonUnitalNonAssocRing α] extends TopologicalSemiring α,
  ContinuousNeg α : Prop
goal: Prop

full_name: TopologicalSemiring.continuousNeg_of_mul
code: /-- 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 α]
    [ContinuousMul α] : ContinuousNeg α 
goal: ContinuousNeg α

full_name: TopologicalSemiring.toTopologicalRing
code: /-- 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.toTopologicalRing [TopologicalSpace α] [NonAssocRing α]
    (_ : TopologicalSemiring α) : TopologicalRing α 
goal: TopologicalSemiring α → TopologicalRing α

full_name: TopologicalRing.to_topologicalAddGroup
code: instance (priority := 100) TopologicalRing.to_topologicalAddGroup [NonUnitalNonAssocRing α]
    [TopologicalSpace α] [TopologicalRing α] : TopologicalAddGroup α 
goal: TopologicalAddGroup α

full_name: DiscreteTopology.topologicalSemiring
code: instance (priority := 50) DiscreteTopology.topologicalSemiring [TopologicalSpace α]
    [NonUnitalNonAssocSemiring α] [DiscreteTopology α] : TopologicalSemiring α 
goal: TopologicalSemiring α

full_name: DiscreteTopology.topologicalRing
code: instance (priority := 50) DiscreteTopology.topologicalRing [TopologicalSpace α]
    [NonUnitalNonAssocRing α] [DiscreteTopology α] : TopologicalRing α 
goal: TopologicalRing α

full_name: instTopologicalSemiringULift
code: instance : TopologicalSemiring (ULift α) 
goal: TopologicalSemiring (ULift.{u_2, u_1} α)

full_name: Subsemiring.topologicalSemiring
code: instance topologicalSemiring (S : Subsemiring α) : TopologicalSemiring S 
goal: TopologicalSemiring ↥S

full_name: Subsemiring.topologicalClosure
code: /-- The (topological-space) closure of a subsemiring of a topological semiring is
itself a subsemiring. -/
def Subsemiring.topologicalClosure (s : Subsemiring α) : Subsemiring α 
goal: Subsemiring α

full_name: Subsemiring.topologicalClosure_coe
code: @[simp]
theorem Subsemiring.topologicalClosure_coe (s : Subsemiring α) :
    (s.topologicalClosure : Set α) = _root_.closure (s : Set α) 
goal: ↑s.topologicalClosure = closure ↑s

full_name: Subsemiring.le_topologicalClosure
code: theorem Subsemiring.le_topologicalClosure (s : Subsemiring α) : s ≤ s.topologicalClosure 
goal: s ≤ s.topologicalClosure

full_name: Subsemiring.isClosed_topologicalClosure
code: theorem Subsemiring.isClosed_topologicalClosure (s : Subsemiring α) :
    IsClosed (s.topologicalClosure : Set α) 
goal: IsClosed ↑s.topologicalClosure

full_name: Subsemiring.topologicalClosure_minimal
code: theorem Subsemiring.topologicalClosure_minimal (s : Subsemiring α) {t : Subsemiring α} (h : s ≤ t)
    (ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t 
goal: s.topologicalClosure ≤ t

full_name: Subsemiring.commSemiringTopologicalClosure
code: /-- 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 
goal: CommSemiring ↥s.topologicalClosure

full_name: instTopologicalSemiringProd
code: /-- The product topology on the cartesian product of two topological semirings
  makes the product into a topological semiring. -/
instance [NonUnitalNonAssocSemiring α] [NonUnitalNonAssocSemiring β] [TopologicalSemiring α]
    [TopologicalSemiring β] : TopologicalSemiring (α × β) 
goal: TopologicalSemiring (α × β)

full_name: instTopologicalRingProd
code: /-- The product topology on the cartesian product of two topological rings
  makes the product into a topological ring. -/
instance [NonUnitalNonAssocRing α] [NonUnitalNonAssocRing β] [TopologicalRing α]
    [TopologicalRing β] : TopologicalRing (α × β) 
goal: TopologicalRing (α × β)

full_name: instContinuousAddForallOfTopologicalSemiring
code: instance {β : Type*} {C : β → Type*} [∀ b, TopologicalSpace (C b)]
    [∀ b, NonUnitalNonAssocSemiring (C b)] [∀ b, TopologicalSemiring (C b)] :
    ContinuousAdd ((b : β) → C b) 
goal: ContinuousAdd ((b : β) → C b)

full_name: Pi.instTopologicalSemiring
code: instance Pi.instTopologicalSemiring {β : Type*} {C : β → Type*} [∀ b, TopologicalSpace (C b)]
    [∀ b, NonUnitalNonAssocSemiring (C b)] [∀ b, TopologicalSemiring (C b)] :
    TopologicalSemiring (∀ b, C b) 
goal: TopologicalSemiring ((b : β) → C b)

full_name: Pi.instTopologicalRing
code: instance Pi.instTopologicalRing {β : Type*} {C : β → Type*} [∀ b, TopologicalSpace (C b)]
    [∀ b, NonUnitalNonAssocRing (C b)] [∀ b, TopologicalRing (C b)] :
    TopologicalRing (∀ b, C b) 
goal: TopologicalRing ((b : β) → C b)

full_name: instContinuousAddMulOpposite
code: instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [ContinuousAdd α] :
    ContinuousAdd αᵐᵒᵖ 
goal: ContinuousAdd αᵐᵒᵖ

full_name: instTopologicalSemiringMulOpposite
code: instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [TopologicalSemiring α] :
    TopologicalSemiring αᵐᵒᵖ 
goal: TopologicalSemiring αᵐᵒᵖ

full_name: instContinuousNegMulOpposite
code: instance [NonUnitalNonAssocRing α] [TopologicalSpace α] [ContinuousNeg α] : ContinuousNeg αᵐᵒᵖ 
goal: ContinuousNeg αᵐᵒᵖ

full_name: instTopologicalRingMulOpposite
code: instance [NonUnitalNonAssocRing α] [TopologicalSpace α] [TopologicalRing α] :
    TopologicalRing αᵐᵒᵖ 
goal: TopologicalRing αᵐᵒᵖ

full_name: instContinuousMulAddOpposite
code: instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [ContinuousMul α] :
    ContinuousMul αᵃᵒᵖ 
goal: ContinuousMul αᵃᵒᵖ

full_name: instTopologicalSemiringAddOpposite
code: instance [NonUnitalNonAssocSemiring α] [TopologicalSpace α] [TopologicalSemiring α] :
    TopologicalSemiring αᵃᵒᵖ 
goal: TopologicalSemiring αᵃᵒᵖ

full_name: instTopologicalRingAddOpposite
code: instance [NonUnitalNonAssocRing α] [TopologicalSpace α] [TopologicalRing α] :
    TopologicalRing αᵃᵒᵖ 
goal: TopologicalRing αᵃᵒᵖ

full_name: TopologicalRing.of_addGroup_of_nhds_zero
code: 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 
goal: TopologicalRing R

full_name: TopologicalRing.of_nhds_zero
code: theorem TopologicalRing.of_nhds_zero
    (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_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 
goal: TopologicalRing R

full_name: instTopologicalRingULift
code: instance : TopologicalRing (ULift α) 
goal: TopologicalRing (ULift.{u_2, u_1} α)

full_name: mulLeft_continuous
code: /-- In a topological semiring, the left-multiplication `AddMonoidHom` is continuous. -/
theorem mulLeft_continuous (x : α) : Continuous (AddMonoidHom.mulLeft x) 
goal: Continuous ⇑(AddMonoidHom.mulLeft x)

full_name: mulRight_continuous
code: /-- In a topological semiring, the right-multiplication `AddMonoidHom` is continuous. -/
theorem mulRight_continuous (x : α) : Continuous (AddMonoidHom.mulRight x) 
goal: Continuous ⇑(AddMonoidHom.mulRight x)

full_name: Subring.instTopologicalRing
code: instance Subring.instTopologicalRing (S : Subring α) : TopologicalRing S 
goal: TopologicalRing ↥S

full_name: Subring.topologicalClosure
code: /-- The (topological-space) closure of a subring of a topological ring is
itself a subring. -/
def Subring.topologicalClosure (S : Subring α) : Subring α 
goal: Subring α

full_name: Subring.le_topologicalClosure
code: theorem Subring.le_topologicalClosure (s : Subring α) : s ≤ s.topologicalClosure 
goal: s ≤ s.topologicalClosure

full_name: Subring.isClosed_topologicalClosure
code: theorem Subring.isClosed_topologicalClosure (s : Subring α) :
    IsClosed (s.topologicalClosure : Set α) 
goal: IsClosed ↑s.topologicalClosure

full_name: Subring.topologicalClosure_minimal
code: theorem Subring.topologicalClosure_minimal (s : Subring α) {t : Subring α} (h : s ≤ t)
    (ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t 
goal: s.topologicalClosure ≤ t

full_name: Subring.commRingTopologicalClosure
code: /-- 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 
goal: CommRing ↥s.topologicalClosure

full_name: RingTopology
code: /-- A ring topology on a ring `α` is a topology for which addition, negation and multiplication
are continuous. -/
structure RingTopology (α : Type u) [Ring α] extends TopologicalSpace α, TopologicalRing α : Type u
goal: Type u

full_name: RingTopology.inhabited
code: instance inhabited {α : Type u} [Ring α] : Inhabited (RingTopology α) 
goal: Inhabited (RingTopology α)

full_name: RingTopology.toTopologicalSpace_injective
code: theorem toTopologicalSpace_injective :
    Injective (toTopologicalSpace : RingTopology α → TopologicalSpace α) 
goal: Function.Injective RingTopology.toTopologicalSpace

full_name: RingTopology.ext
code: @[ext]
theorem ext {f g : RingTopology α} (h : f.IsOpen = g.IsOpen) : f = g 
goal: f = g

full_name: RingTopology.instPartialOrder
code: /-- 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`). -/
instance : PartialOrder (RingTopology α) 
goal: PartialOrder (RingTopology α)

full_name: _private.Mathlib.Topology.Algebra.Ring.Basic.0.RingTopology.def_sInf
code: private def def_sInf (S : Set (RingTopology α)) : RingTopology α 
goal: RingTopology α

full_name: RingTopology.instCompleteSemilatticeInf
code: /-- Ring topologies on `α` form a complete lattice, with `⊥` the discrete topology and `⊤` the
indiscrete topology.

The infimum of a collection of ring topologies is the topology generated by all their open sets
(which is a ring topology).

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 α) 
goal: CompleteSemilatticeInf (RingTopology α)

full_name: RingTopology.instCompleteLattice
code: instance : CompleteLattice (RingTopology α) 
goal: CompleteLattice (RingTopology α)

full_name: RingTopology.coinduced
code: /-- 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 β 
goal: RingTopology β

full_name: RingTopology.coinduced_continuous
code: theorem coinduced_continuous {α β : Type*} [t : TopologicalSpace α] [Ring β] (f : α → β) :
    Continuous[t, (coinduced f).toTopologicalSpace] f 
goal: Continuous f

full_name: RingTopology.toAddGroupTopology
code: /-- The forgetful functor from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology (t : RingTopology α) : AddGroupTopology α 
goal: AddGroupTopology α

full_name: RingTopology.toAddGroupTopology.orderEmbedding
code: /-- The order embedding from ring topologies on `a` to additive group topologies on `a`. -/
def toAddGroupTopology.orderEmbedding : OrderEmbedding (RingTopology α) (AddGroupTopology α) 
goal: RingTopology α ↪o AddGroupTopology α

full_name: AbsoluteValue.comp
code: /-- 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]
    (v : AbsoluteValue R S) {f : T →+* R} (hf : Function.Injective f) : AbsoluteValue T S 
goal: AbsoluteValue T S