# mathlibdocumentation

topology.algebra.group_with_zero

# Topological group with zero #

In this file we define has_continuous_inv' to be a mixin typeclass a type with has_inv and has_zero (e.g., a group_with_zero) such that λ x, x⁻¹ is continuous at all nonzero points. Any normed (semi)field has this property. Currently the only example of has_continuous_inv' in mathlib which is not a normed field is the type nnnreal (a.k.a. ℝ≥0) of nonnegative real numbers.

Then we prove lemmas about continuity of x ↦ x⁻¹ and f / g providing dot-style *.inv' and *.div operations on filter.tendsto, continuous_at, continuous_within_at, continuous_on, and continuous. As a special case, we provide *.div_const operations that require only group_with_zero and has_continuous_mul instances.

All lemmas about (⁻¹) use inv' in their names because lemmas without ' are used for topological_groups. We also use ' in the typeclass name has_continuous_inv' for the sake of consistency of notation.

On a group_with_zero with continuous multiplication, we also define left and right multiplication as homeomorphisms.

### A group with zero with continuous multiplication #

If G₀ is a group with zero with continuous (*), then (/y) is continuous for any y. In this section we prove lemmas that immediately follow from this fact providing *.div_const dot-style operations on filter.tendsto, continuous_at, continuous_within_at, continuous_on, and continuous.

theorem filter.tendsto.div_const {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f : α → G₀} {l : filter α} {x y : G₀} (hf : (𝓝 x)) :
filter.tendsto (λ (a : α), f a / y) l (𝓝 (x / y))
theorem continuous_at.div_const {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f : α → G₀} {a : α} (hf : a) {y : G₀} :
continuous_at (λ (x : α), f x / y) a
theorem continuous_within_at.div_const {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f : α → G₀} {s : set α} {a : α} (hf : a) {y : G₀} :
continuous_within_at (λ (x : α), f x / y) s a
theorem continuous_on.div_const {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f : α → G₀} {s : set α} (hf : s) {y : G₀} :
continuous_on (λ (x : α), f x / y) s
theorem continuous.div_const {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f : α → G₀} (hf : continuous f) {y : G₀} :
continuous (λ (x : α), f x / y)
@[class]
structure has_continuous_inv₀ (G₀ : Type u_3) [has_zero G₀] [has_inv G₀]  :
Type
• continuous_at_inv₀ : ∀ ⦃x : G₀⦄, x 0

A type with 0 and has_inv such that λ x, x⁻¹ is continuous at all nonzero points. Any normed (semi)field has this property.

Instances

### Continuity of λ x, x⁻¹ at a non-zero point #

We define topological_group_with_zero to be a group_with_zero such that the operation x ↦ x⁻¹ is continuous at all nonzero points. In this section we prove dot-style *.inv' lemmas for filter.tendsto, continuous_at, continuous_within_at, continuous_on, and continuous.

theorem tendsto_inv₀ {G₀ : Type u_2} [has_zero G₀] [has_inv G₀] {x : G₀} (hx : x 0) :
theorem continuous_on_inv₀ {G₀ : Type u_2} [has_zero G₀] [has_inv G₀]  :
theorem filter.tendsto.inv₀ {α : Type u_1} {G₀ : Type u_2} [has_zero G₀] [has_inv G₀] {l : filter α} {f : α → G₀} {a : G₀} (hf : (𝓝 a)) (ha : a 0) :
filter.tendsto (λ (x : α), (f x)⁻¹) l (𝓝 a⁻¹)

If a function converges to a nonzero value, its inverse converges to the inverse of this value. We use the name tendsto.inv₀ as tendsto.inv is already used in multiplicative topological groups.

theorem continuous_within_at.inv₀ {α : Type u_1} {G₀ : Type u_2} [has_zero G₀] [has_inv G₀] {f : α → G₀} {s : set α} {a : α} (hf : a) (ha : f a 0) :
continuous_within_at (λ (x : α), (f x)⁻¹) s a
theorem continuous_at.inv₀ {α : Type u_1} {G₀ : Type u_2} [has_zero G₀] [has_inv G₀] {f : α → G₀} {a : α} (hf : a) (ha : f a 0) :
continuous_at (λ (x : α), (f x)⁻¹) a
theorem continuous.inv₀ {α : Type u_1} {G₀ : Type u_2} [has_zero G₀] [has_inv G₀] {f : α → G₀} (hf : continuous f) (h0 : ∀ (x : α), f x 0) :
continuous (λ (x : α), (f x)⁻¹)
theorem continuous_on.inv₀ {α : Type u_1} {G₀ : Type u_2} [has_zero G₀] [has_inv G₀] {f : α → G₀} {s : set α} (hf : s) (h0 : ∀ (x : α), x sf x 0) :
continuous_on (λ (x : α), (f x)⁻¹) s

### Continuity of division #

If G₀ is a group_with_zero with x ↦ x⁻¹ continuous at all nonzero points and (*), then division (/) is continuous at any point where the denominator is continuous.

theorem filter.tendsto.div {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f g : α → G₀} {l : filter α} {a b : G₀} (hf : (𝓝 a)) (hg : (𝓝 b)) (hy : b 0) :
filter.tendsto (f / g) l (𝓝 (a / b))
theorem continuous_within_at.div {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f g : α → G₀} {s : set α} {a : α} (hf : a) (hg : a) (h₀ : g a 0) :
theorem continuous_on.div {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f g : α → G₀} {s : set α} (hf : s) (hg : s) (h₀ : ∀ (x : α), x sg x 0) :
theorem continuous_at.div {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f g : α → G₀} {a : α} (hf : a) (hg : a) (h₀ : g a 0) :

Continuity at a point of the result of dividing two functions continuous at that point, where the denominator is nonzero.

theorem continuous.div {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f g : α → G₀} (hf : continuous f) (hg : continuous g) (h₀ : ∀ (x : α), g x 0) :
theorem continuous_on_div {G₀ : Type u_2} [group_with_zero G₀]  :
continuous_on (λ (p : G₀ × G₀), p.fst / p.snd) {p : G₀ × G₀ | p.snd 0}

### Left and right multiplication as homeomorphisms #

def homeomorph.mul_left₀ {α : Type u_1} (c : α) (hc : c 0) :
α ≃ₜ α

Left multiplication by a nonzero element in a group_with_zero with continuous multiplication is a homeomorphism of the underlying type.

Equations
def homeomorph.mul_right₀ {α : Type u_1} (c : α) (hc : c 0) :
α ≃ₜ α

Right multiplication by a nonzero element in a group_with_zero with continuous multiplication is a homeomorphism of the underlying type.

Equations
@[simp]
theorem homeomorph.coe_mul_left₀ {α : Type u_1} (c : α) (hc : c 0) :
hc) =
@[simp]
theorem homeomorph.mul_left₀_symm_apply {α : Type u_1} (c : α) (hc : c 0) :
hc).symm) =
@[simp]
theorem homeomorph.coe_mul_right₀ {α : Type u_1} (c : α) (hc : c 0) :
hc) = λ (x : α), x * c
@[simp]
theorem homeomorph.mul_right₀_symm_apply {α : Type u_1} (c : α) (hc : c 0) :
hc).symm) = λ (x : α), x * c⁻¹
theorem continuous_at_fpow {G₀ : Type u_2} [group_with_zero G₀] (x : G₀) (m : ) (h : x 0 0 m) :
continuous_at (λ (x : G₀), x ^ m) x
theorem continuous_on_fpow {G₀ : Type u_2} [group_with_zero G₀] (m : ) :
continuous_on (λ (x : G₀), x ^ m) {0}
theorem filter.tendsto.fpow {α : Type u_1} {G₀ : Type u_2} [group_with_zero G₀] {f : α → G₀} {l : filter α} {a : G₀} (hf : (𝓝 a)) (m : ) (h : a 0 0 m) :
filter.tendsto (λ (x : α), f x ^ m) l (𝓝 (a ^ m))
theorem continuous_at.fpow {G₀ : Type u_2} [group_with_zero G₀] {X : Type u_3} {a : X} {f : X → G₀} (hf : a) (m : ) (h : f a 0 0 m) :
continuous_at (λ (x : X), f x ^ m) a
theorem continuous_within_at.fpow {G₀ : Type u_2} [group_with_zero G₀] {X : Type u_3} {a : X} {s : set X} {f : X → G₀} (hf : a) (m : ) (h : f a 0 0 m) :
continuous_within_at (λ (x : X), f x ^ m) s a
theorem continuous_on.fpow {G₀ : Type u_2} [group_with_zero G₀] {X : Type u_3} {s : set X} {f : X → G₀} (hf : s) (m : ) (h : ∀ (a : X), a sf a 0 0 m) :
continuous_on (λ (x : X), f x ^ m) s
theorem continuous.fpow {G₀ : Type u_2} [group_with_zero G₀] {X : Type u_3} {f : X → G₀} (hf : continuous f) (m : ) (h0 : ∀ (a : X), f a 0 0 m) :
continuous (λ (x : X), f x ^ m)