topology.algebra.group_with_zero
⟷
Mathlib.Topology.Algebra.GroupWithZero
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)
(last sync)
topological_space_units
(#18536)
See Zulip chat
Also generalize TC assumptions in inv_mem_iff
.
@@ -128,6 +128,12 @@ lemma continuous_on.inv₀ (hf : continuous_on f s) (h0 : ∀ x ∈ s, f x ≠ 0
end inv₀
+/-- If `G₀` is a group with zero with topology such that `x ↦ x⁻¹` is continuous at all nonzero
+points. Then the coercion `Mˣ → M` is a topological embedding. -/
+theorem units.embedding_coe₀ [group_with_zero G₀] [topological_space G₀] [has_continuous_inv₀ G₀] :
+ embedding (coe : G₀ˣ → G₀) :=
+units.embedding_coe_mk $ continuous_on_inv₀.mono $ λ x, is_unit.ne_zero
+
/-!
### Continuity of division
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-/
import Topology.Algebra.Monoid
-import Algebra.Group.Pi
+import Algebra.Group.Pi.Lemmas
import Topology.Homeomorph
#align_import topology.algebra.group_with_zero from "leanprover-community/mathlib"@"c10e724be91096453ee3db13862b9fb9a992fef2"
@@ -207,9 +207,11 @@ theorem Filter.tendsto_mul_iff_of_ne_zero [T1Space G₀] {f g : α → G₀} {l
Tendsto (fun n => f n * g n) l (𝓝 <| x * y) ↔ Tendsto f l (𝓝 x) :=
by
refine' ⟨fun hfg => _, fun hf => hf.mul hg⟩
- rw [← mul_div_cancel x hy]
+ rw [← mul_div_cancel_right₀ x hy]
refine' tendsto.congr' _ (hfg.div hg hy)
- refine' eventually.mp (hg.eventually_ne hy) (eventually_of_forall fun n hn => mul_div_cancel _ hn)
+ refine'
+ eventually.mp (hg.eventually_ne hy)
+ (eventually_of_forall fun n hn => mul_div_cancel_right₀ _ hn)
#align filter.tendsto_mul_iff_of_ne_zero Filter.tendsto_mul_iff_of_ne_zero
-/
@@ -351,7 +353,7 @@ variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀]
theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) : ContinuousAt (fun x => x ^ m) x :=
by
cases m
- · simpa only [zpow_coe_nat] using continuousAt_pow x m
+ · simpa only [zpow_natCast] using continuousAt_pow x m
· simp only [zpow_negSucc]
have hx : x ≠ 0 := h.resolve_right (Int.negSucc_lt_zero m).not_le
exact (continuousAt_pow x (m + 1)).inv₀ (pow_ne_zero _ hx)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -351,7 +351,7 @@ variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀]
theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) : ContinuousAt (fun x => x ^ m) x :=
by
cases m
- · simpa only [zpow_ofNat] using continuousAt_pow x m
+ · simpa only [zpow_coe_nat] using continuousAt_pow x m
· simp only [zpow_negSucc]
have hx : x ≠ 0 := h.resolve_right (Int.negSucc_lt_zero m).not_le
exact (continuousAt_pow x (m + 1)).inv₀ (pow_ne_zero _ hx)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2020 Yury G. Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-/
-import Mathbin.Topology.Algebra.Monoid
-import Mathbin.Algebra.Group.Pi
-import Mathbin.Topology.Homeomorph
+import Topology.Algebra.Monoid
+import Algebra.Group.Pi
+import Topology.Homeomorph
#align_import topology.algebra.group_with_zero from "leanprover-community/mathlib"@"c10e724be91096453ee3db13862b9fb9a992fef2"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2020 Yury G. Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module topology.algebra.group_with_zero
-! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Algebra.Monoid
import Mathbin.Algebra.Group.Pi
import Mathbin.Topology.Homeomorph
+#align_import topology.algebra.group_with_zero from "leanprover-community/mathlib"@"c10e724be91096453ee3db13862b9fb9a992fef2"
+
/-!
# Topological group with zero
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -59,32 +59,42 @@ section DivConst
variable [GroupWithZero G₀] [TopologicalSpace G₀] [ContinuousMul G₀] {f : α → G₀} {s : Set α}
{l : Filter α}
+#print Filter.Tendsto.div_const /-
theorem Filter.Tendsto.div_const {x : G₀} (hf : Tendsto f l (𝓝 x)) (y : G₀) :
Tendsto (fun a => f a / y) l (𝓝 (x / y)) := by
simpa only [div_eq_mul_inv] using hf.mul tendsto_const_nhds
#align filter.tendsto.div_const Filter.Tendsto.div_const
+-/
variable [TopologicalSpace α]
+#print ContinuousAt.div_const /-
theorem ContinuousAt.div_const {a : α} (hf : ContinuousAt f a) (y : G₀) :
ContinuousAt (fun x => f x / y) a := by
simpa only [div_eq_mul_inv] using hf.mul continuousAt_const
#align continuous_at.div_const ContinuousAt.div_const
+-/
+#print ContinuousWithinAt.div_const /-
theorem ContinuousWithinAt.div_const {a} (hf : ContinuousWithinAt f s a) (y : G₀) :
ContinuousWithinAt (fun x => f x / y) s a :=
hf.div_const _
#align continuous_within_at.div_const ContinuousWithinAt.div_const
+-/
+#print ContinuousOn.div_const /-
theorem ContinuousOn.div_const (hf : ContinuousOn f s) (y : G₀) :
ContinuousOn (fun x => f x / y) s := by
simpa only [div_eq_mul_inv] using hf.mul continuousOn_const
#align continuous_on.div_const ContinuousOn.div_const
+-/
+#print Continuous.div_const /-
@[continuity]
theorem Continuous.div_const (hf : Continuous f) (y : G₀) : Continuous fun x => f x / y := by
simpa only [div_eq_mul_inv] using hf.mul continuous_const
#align continuous.div_const Continuous.div_const
+-/
end DivConst
@@ -118,10 +128,13 @@ theorem tendsto_inv₀ {x : G₀} (hx : x ≠ 0) : Tendsto Inv.inv (𝓝 x) (
#align tendsto_inv₀ tendsto_inv₀
-/
+#print continuousOn_inv₀ /-
theorem continuousOn_inv₀ : ContinuousOn (Inv.inv : G₀ → G₀) ({0}ᶜ) := fun x hx =>
(continuousAt_inv₀ hx).ContinuousWithinAt
#align continuous_on_inv₀ continuousOn_inv₀
+-/
+#print Filter.Tendsto.inv₀ /-
/-- 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. -/
@@ -129,36 +142,47 @@ theorem Filter.Tendsto.inv₀ {a : G₀} (hf : Tendsto f l (𝓝 a)) (ha : a ≠
Tendsto (fun x => (f x)⁻¹) l (𝓝 a⁻¹) :=
(tendsto_inv₀ ha).comp hf
#align filter.tendsto.inv₀ Filter.Tendsto.inv₀
+-/
variable [TopologicalSpace α]
+#print ContinuousWithinAt.inv₀ /-
theorem ContinuousWithinAt.inv₀ (hf : ContinuousWithinAt f s a) (ha : f a ≠ 0) :
ContinuousWithinAt (fun x => (f x)⁻¹) s a :=
hf.inv₀ ha
#align continuous_within_at.inv₀ ContinuousWithinAt.inv₀
+-/
+#print ContinuousAt.inv₀ /-
theorem ContinuousAt.inv₀ (hf : ContinuousAt f a) (ha : f a ≠ 0) :
ContinuousAt (fun x => (f x)⁻¹) a :=
hf.inv₀ ha
#align continuous_at.inv₀ ContinuousAt.inv₀
+-/
+#print Continuous.inv₀ /-
@[continuity]
theorem Continuous.inv₀ (hf : Continuous f) (h0 : ∀ x, f x ≠ 0) : Continuous fun x => (f x)⁻¹ :=
continuous_iff_continuousAt.2 fun x => (hf.Tendsto x).inv₀ (h0 x)
#align continuous.inv₀ Continuous.inv₀
+-/
+#print ContinuousOn.inv₀ /-
theorem ContinuousOn.inv₀ (hf : ContinuousOn f s) (h0 : ∀ x ∈ s, f x ≠ 0) :
ContinuousOn (fun x => (f x)⁻¹) s := fun x hx => (hf x hx).inv₀ (h0 x hx)
#align continuous_on.inv₀ ContinuousOn.inv₀
+-/
end Inv₀
+#print Units.embedding_val₀ /-
/-- If `G₀` is a group with zero with topology such that `x ↦ x⁻¹` is continuous at all nonzero
points. Then the coercion `Mˣ → M` is a topological embedding. -/
theorem Units.embedding_val₀ [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] :
Embedding (coe : G₀ˣ → G₀) :=
Units.embedding_val_mk <| continuousOn_inv₀.mono fun x => IsUnit.ne_zero
#align units.embedding_coe₀ Units.embedding_val₀
+-/
/-!
### Continuity of division
@@ -173,11 +197,14 @@ section Div
variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] [ContinuousMul G₀]
{f g : α → G₀}
+#print Filter.Tendsto.div /-
theorem Filter.Tendsto.div {l : Filter α} {a b : G₀} (hf : Tendsto f l (𝓝 a))
(hg : Tendsto g l (𝓝 b)) (hy : b ≠ 0) : Tendsto (f / g) l (𝓝 (a / b)) := by
simpa only [div_eq_mul_inv] using hf.mul (hg.inv₀ hy)
#align filter.tendsto.div Filter.Tendsto.div
+-/
+#print Filter.tendsto_mul_iff_of_ne_zero /-
theorem Filter.tendsto_mul_iff_of_ne_zero [T1Space G₀] {f g : α → G₀} {l : Filter α} {x y : G₀}
(hg : Tendsto g l (𝓝 y)) (hy : y ≠ 0) :
Tendsto (fun n => f n * g n) l (𝓝 <| x * y) ↔ Tendsto f l (𝓝 x) :=
@@ -187,34 +214,46 @@ theorem Filter.tendsto_mul_iff_of_ne_zero [T1Space G₀] {f g : α → G₀} {l
refine' tendsto.congr' _ (hfg.div hg hy)
refine' eventually.mp (hg.eventually_ne hy) (eventually_of_forall fun n hn => mul_div_cancel _ hn)
#align filter.tendsto_mul_iff_of_ne_zero Filter.tendsto_mul_iff_of_ne_zero
+-/
variable [TopologicalSpace α] [TopologicalSpace β] {s : Set α} {a : α}
+#print ContinuousWithinAt.div /-
theorem ContinuousWithinAt.div (hf : ContinuousWithinAt f s a) (hg : ContinuousWithinAt g s a)
(h₀ : g a ≠ 0) : ContinuousWithinAt (f / g) s a :=
hf.div hg h₀
#align continuous_within_at.div ContinuousWithinAt.div
+-/
+#print ContinuousOn.div /-
theorem ContinuousOn.div (hf : ContinuousOn f s) (hg : ContinuousOn g s) (h₀ : ∀ x ∈ s, g x ≠ 0) :
ContinuousOn (f / g) s := fun x hx => (hf x hx).div (hg x hx) (h₀ x hx)
#align continuous_on.div ContinuousOn.div
+-/
+#print ContinuousAt.div /-
/-- Continuity at a point of the result of dividing two functions continuous at that point, where
the denominator is nonzero. -/
theorem ContinuousAt.div (hf : ContinuousAt f a) (hg : ContinuousAt g a) (h₀ : g a ≠ 0) :
ContinuousAt (f / g) a :=
hf.div hg h₀
#align continuous_at.div ContinuousAt.div
+-/
+#print Continuous.div /-
@[continuity]
theorem Continuous.div (hf : Continuous f) (hg : Continuous g) (h₀ : ∀ x, g x ≠ 0) :
Continuous (f / g) := by simpa only [div_eq_mul_inv] using hf.mul (hg.inv₀ h₀)
#align continuous.div Continuous.div
+-/
+#print continuousOn_div /-
theorem continuousOn_div : ContinuousOn (fun p : G₀ × G₀ => p.1 / p.2) {p | p.2 ≠ 0} :=
continuousOn_fst.div continuousOn_snd fun _ => id
#align continuous_on_div continuousOn_div
+-/
+#print ContinuousAt.comp_div_cases /-
/-- The function `f x / g x` is discontinuous when `g x = 0`.
However, under appropriate conditions, `h x (f x / g x)` is still continuous.
The condition is that if `g a = 0` then `h x y` must tend to `h a 0` when `x` tends to `a`,
@@ -232,7 +271,9 @@ theorem ContinuousAt.comp_div_cases {f g : α → G₀} (h : α → G₀ → β)
exact (h2h hga).comp (continuous_at_id.prod_mk tendsto_top)
· exact ContinuousAt.comp (hh hga) (continuous_at_id.prod (hf.div hg hga))
#align continuous_at.comp_div_cases ContinuousAt.comp_div_cases
+-/
+#print Continuous.comp_div_cases /-
/-- `h x (f x / g x)` is continuous under certain conditions, even if the denominator is sometimes
`0`. See docstring of `continuous_at.comp_div_cases`. -/
theorem Continuous.comp_div_cases {f g : α → G₀} (h : α → G₀ → β) (hf : Continuous f)
@@ -242,6 +283,7 @@ theorem Continuous.comp_div_cases {f g : α → G₀} (h : α → G₀ → β) (
continuous_iff_continuousAt.mpr fun a =>
hf.ContinuousAt.comp_div_cases _ hg.ContinuousAt (hh a) (h2h a)
#align continuous.comp_div_cases Continuous.comp_div_cases
+-/
end Div
@@ -252,6 +294,7 @@ namespace Homeomorph
variable [TopologicalSpace α] [GroupWithZero α] [ContinuousMul α]
+#print Homeomorph.mulLeft₀ /-
/-- Left multiplication by a nonzero element in a `group_with_zero` with continuous multiplication
is a homeomorphism of the underlying type. -/
protected def mulLeft₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
@@ -259,7 +302,9 @@ protected def mulLeft₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
continuous_toFun := continuous_mul_left _
continuous_invFun := continuous_mul_left _ }
#align homeomorph.mul_left₀ Homeomorph.mulLeft₀
+-/
+#print Homeomorph.mulRight₀ /-
/-- Right multiplication by a nonzero element in a `group_with_zero` with continuous multiplication
is a homeomorphism of the underlying type. -/
protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
@@ -267,28 +312,37 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
continuous_toFun := continuous_mul_right _
continuous_invFun := continuous_mul_right _ }
#align homeomorph.mul_right₀ Homeomorph.mulRight₀
+-/
+#print Homeomorph.coe_mulLeft₀ /-
@[simp]
theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
rfl
#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀
+-/
+#print Homeomorph.mulLeft₀_symm_apply /-
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
((Homeomorph.mulLeft₀ c hc).symm : α → α) = (· * ·) c⁻¹ :=
rfl
#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_apply
+-/
+#print Homeomorph.coe_mulRight₀ /-
@[simp]
theorem coe_mulRight₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulRight₀ c hc) = fun x => x * c :=
rfl
#align homeomorph.coe_mul_right₀ Homeomorph.coe_mulRight₀
+-/
+#print Homeomorph.mulRight₀_symm_apply /-
@[simp]
theorem mulRight₀_symm_apply (c : α) (hc : c ≠ 0) :
((Homeomorph.mulRight₀ c hc).symm : α → α) = fun x => x * c⁻¹ :=
rfl
#align homeomorph.mul_right₀_symm_apply Homeomorph.mulRight₀_symm_apply
+-/
end Homeomorph
@@ -296,6 +350,7 @@ section Zpow
variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] [ContinuousMul G₀]
+#print continuousAt_zpow₀ /-
theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) : ContinuousAt (fun x => x ^ m) x :=
by
cases m
@@ -304,37 +359,50 @@ theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) : Co
have hx : x ≠ 0 := h.resolve_right (Int.negSucc_lt_zero m).not_le
exact (continuousAt_pow x (m + 1)).inv₀ (pow_ne_zero _ hx)
#align continuous_at_zpow₀ continuousAt_zpow₀
+-/
+#print continuousOn_zpow₀ /-
theorem continuousOn_zpow₀ (m : ℤ) : ContinuousOn (fun x : G₀ => x ^ m) ({0}ᶜ) := fun x hx =>
(continuousAt_zpow₀ _ _ (Or.inl hx)).ContinuousWithinAt
#align continuous_on_zpow₀ continuousOn_zpow₀
+-/
+#print Filter.Tendsto.zpow₀ /-
theorem Filter.Tendsto.zpow₀ {f : α → G₀} {l : Filter α} {a : G₀} (hf : Tendsto f l (𝓝 a)) (m : ℤ)
(h : a ≠ 0 ∨ 0 ≤ m) : Tendsto (fun x => f x ^ m) l (𝓝 (a ^ m)) :=
(continuousAt_zpow₀ _ m h).Tendsto.comp hf
#align filter.tendsto.zpow₀ Filter.Tendsto.zpow₀
+-/
variable {X : Type _} [TopologicalSpace X] {a : X} {s : Set X} {f : X → G₀}
+#print ContinuousAt.zpow₀ /-
theorem ContinuousAt.zpow₀ (hf : ContinuousAt f a) (m : ℤ) (h : f a ≠ 0 ∨ 0 ≤ m) :
ContinuousAt (fun x => f x ^ m) a :=
hf.zpow₀ m h
#align continuous_at.zpow₀ ContinuousAt.zpow₀
+-/
+#print ContinuousWithinAt.zpow₀ /-
theorem ContinuousWithinAt.zpow₀ (hf : ContinuousWithinAt f s a) (m : ℤ) (h : f a ≠ 0 ∨ 0 ≤ m) :
ContinuousWithinAt (fun x => f x ^ m) s a :=
hf.zpow₀ m h
#align continuous_within_at.zpow₀ ContinuousWithinAt.zpow₀
+-/
+#print ContinuousOn.zpow₀ /-
theorem ContinuousOn.zpow₀ (hf : ContinuousOn f s) (m : ℤ) (h : ∀ a ∈ s, f a ≠ 0 ∨ 0 ≤ m) :
ContinuousOn (fun x => f x ^ m) s := fun a ha => (hf a ha).zpow₀ m (h a ha)
#align continuous_on.zpow₀ ContinuousOn.zpow₀
+-/
+#print Continuous.zpow₀ /-
@[continuity]
theorem Continuous.zpow₀ (hf : Continuous f) (m : ℤ) (h0 : ∀ a, f a ≠ 0 ∨ 0 ≤ m) :
Continuous fun x => f x ^ m :=
continuous_iff_continuousAt.2 fun x => (hf.Tendsto x).zpow₀ m (h0 x)
#align continuous.zpow₀ Continuous.zpow₀
+-/
end Zpow
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -211,7 +211,7 @@ theorem Continuous.div (hf : Continuous f) (hg : Continuous g) (h₀ : ∀ x, g
Continuous (f / g) := by simpa only [div_eq_mul_inv] using hf.mul (hg.inv₀ h₀)
#align continuous.div Continuous.div
-theorem continuousOn_div : ContinuousOn (fun p : G₀ × G₀ => p.1 / p.2) { p | p.2 ≠ 0 } :=
+theorem continuousOn_div : ContinuousOn (fun p : G₀ × G₀ => p.1 / p.2) {p | p.2 ≠ 0} :=
continuousOn_fst.div continuousOn_snd fun _ => id
#align continuous_on_div continuousOn_div
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -38,7 +38,7 @@ as homeomorphisms.
-/
-open Topology Filter
+open scoped Topology Filter
open Filter Function
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -59,12 +59,6 @@ section DivConst
variable [GroupWithZero G₀] [TopologicalSpace G₀] [ContinuousMul G₀] {f : α → G₀} {s : Set α}
{l : Filter α}
-/- warning: filter.tendsto.div_const -> Filter.Tendsto.div_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {l : Filter.{u1} α} {x : G₀}, (Filter.Tendsto.{u1, u2} α G₀ f l (nhds.{u2} G₀ _inst_2 x)) -> (forall (y : G₀), Filter.Tendsto.{u1, u2} α G₀ (fun (a : α) => HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) (f a) y) l (nhds.{u2} G₀ _inst_2 (HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) x y)))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : DivInvMonoid.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : ContinuousMul.{u1} G₀ _inst_2 (MulOneClass.toMul.{u1} G₀ (Monoid.toMulOneClass.{u1} G₀ (DivInvMonoid.toMonoid.{u1} G₀ _inst_1)))] {f : α -> G₀} {l : Filter.{u2} α} {x : G₀}, (Filter.Tendsto.{u2, u1} α G₀ f l (nhds.{u1} G₀ _inst_2 x)) -> (forall (y : G₀), Filter.Tendsto.{u2, u1} α G₀ (fun (a : α) => HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (DivInvMonoid.toDiv.{u1} G₀ _inst_1)) (f a) y) l (nhds.{u1} G₀ _inst_2 (HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (DivInvMonoid.toDiv.{u1} G₀ _inst_1)) x y)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.div_const Filter.Tendsto.div_constₓ'. -/
theorem Filter.Tendsto.div_const {x : G₀} (hf : Tendsto f l (𝓝 x)) (y : G₀) :
Tendsto (fun a => f a / y) l (𝓝 (x / y)) := by
simpa only [div_eq_mul_inv] using hf.mul tendsto_const_nhds
@@ -72,45 +66,21 @@ theorem Filter.Tendsto.div_const {x : G₀} (hf : Tendsto f l (𝓝 x)) (y : G
variable [TopologicalSpace α]
-/- warning: continuous_at.div_const -> ContinuousAt.div_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} [_inst_4 : TopologicalSpace.{u1} α] {a : α}, (ContinuousAt.{u1, u2} α G₀ _inst_4 _inst_2 f a) -> (forall (y : G₀), ContinuousAt.{u1, u2} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) (f x) y) a)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : DivInvMonoid.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : ContinuousMul.{u1} G₀ _inst_2 (MulOneClass.toMul.{u1} G₀ (Monoid.toMulOneClass.{u1} G₀ (DivInvMonoid.toMonoid.{u1} G₀ _inst_1)))] {f : α -> G₀} [_inst_4 : TopologicalSpace.{u2} α] {a : α}, (ContinuousAt.{u2, u1} α G₀ _inst_4 _inst_2 f a) -> (forall (y : G₀), ContinuousAt.{u2, u1} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (DivInvMonoid.toDiv.{u1} G₀ _inst_1)) (f x) y) a)
-Case conversion may be inaccurate. Consider using '#align continuous_at.div_const ContinuousAt.div_constₓ'. -/
theorem ContinuousAt.div_const {a : α} (hf : ContinuousAt f a) (y : G₀) :
ContinuousAt (fun x => f x / y) a := by
simpa only [div_eq_mul_inv] using hf.mul continuousAt_const
#align continuous_at.div_const ContinuousAt.div_const
-/- warning: continuous_within_at.div_const -> ContinuousWithinAt.div_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {s : Set.{u1} α} [_inst_4 : TopologicalSpace.{u1} α] {a : α}, (ContinuousWithinAt.{u1, u2} α G₀ _inst_4 _inst_2 f s a) -> (forall (y : G₀), ContinuousWithinAt.{u1, u2} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) (f x) y) s a)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : DivInvMonoid.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : ContinuousMul.{u1} G₀ _inst_2 (MulOneClass.toMul.{u1} G₀ (Monoid.toMulOneClass.{u1} G₀ (DivInvMonoid.toMonoid.{u1} G₀ _inst_1)))] {f : α -> G₀} {s : Set.{u2} α} [_inst_4 : TopologicalSpace.{u2} α] {a : α}, (ContinuousWithinAt.{u2, u1} α G₀ _inst_4 _inst_2 f s a) -> (forall (y : G₀), ContinuousWithinAt.{u2, u1} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (DivInvMonoid.toDiv.{u1} G₀ _inst_1)) (f x) y) s a)
-Case conversion may be inaccurate. Consider using '#align continuous_within_at.div_const ContinuousWithinAt.div_constₓ'. -/
theorem ContinuousWithinAt.div_const {a} (hf : ContinuousWithinAt f s a) (y : G₀) :
ContinuousWithinAt (fun x => f x / y) s a :=
hf.div_const _
#align continuous_within_at.div_const ContinuousWithinAt.div_const
-/- warning: continuous_on.div_const -> ContinuousOn.div_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {s : Set.{u1} α} [_inst_4 : TopologicalSpace.{u1} α], (ContinuousOn.{u1, u2} α G₀ _inst_4 _inst_2 f s) -> (forall (y : G₀), ContinuousOn.{u1, u2} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) (f x) y) s)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : DivInvMonoid.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : ContinuousMul.{u1} G₀ _inst_2 (MulOneClass.toMul.{u1} G₀ (Monoid.toMulOneClass.{u1} G₀ (DivInvMonoid.toMonoid.{u1} G₀ _inst_1)))] {f : α -> G₀} {s : Set.{u2} α} [_inst_4 : TopologicalSpace.{u2} α], (ContinuousOn.{u2, u1} α G₀ _inst_4 _inst_2 f s) -> (forall (y : G₀), ContinuousOn.{u2, u1} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (DivInvMonoid.toDiv.{u1} G₀ _inst_1)) (f x) y) s)
-Case conversion may be inaccurate. Consider using '#align continuous_on.div_const ContinuousOn.div_constₓ'. -/
theorem ContinuousOn.div_const (hf : ContinuousOn f s) (y : G₀) :
ContinuousOn (fun x => f x / y) s := by
simpa only [div_eq_mul_inv] using hf.mul continuousOn_const
#align continuous_on.div_const ContinuousOn.div_const
-/- warning: continuous.div_const -> Continuous.div_const is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} [_inst_4 : TopologicalSpace.{u1} α], (Continuous.{u1, u2} α G₀ _inst_4 _inst_2 f) -> (forall (y : G₀), Continuous.{u1, u2} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) (f x) y))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : DivInvMonoid.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : ContinuousMul.{u1} G₀ _inst_2 (MulOneClass.toMul.{u1} G₀ (Monoid.toMulOneClass.{u1} G₀ (DivInvMonoid.toMonoid.{u1} G₀ _inst_1)))] {f : α -> G₀} [_inst_4 : TopologicalSpace.{u2} α], (Continuous.{u2, u1} α G₀ _inst_4 _inst_2 f) -> (forall (y : G₀), Continuous.{u2, u1} α G₀ _inst_4 _inst_2 (fun (x : α) => HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (DivInvMonoid.toDiv.{u1} G₀ _inst_1)) (f x) y))
-Case conversion may be inaccurate. Consider using '#align continuous.div_const Continuous.div_constₓ'. -/
@[continuity]
theorem Continuous.div_const (hf : Continuous f) (y : G₀) : Continuous fun x => f x / y := by
simpa only [div_eq_mul_inv] using hf.mul continuous_const
@@ -148,22 +118,10 @@ theorem tendsto_inv₀ {x : G₀} (hx : x ≠ 0) : Tendsto Inv.inv (𝓝 x) (
#align tendsto_inv₀ tendsto_inv₀
-/
-/- warning: continuous_on_inv₀ -> continuousOn_inv₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : Zero.{u1} G₀] [_inst_2 : Inv.{u1} G₀] [_inst_3 : TopologicalSpace.{u1} G₀] [_inst_4 : HasContinuousInv₀.{u1} G₀ _inst_1 _inst_2 _inst_3], ContinuousOn.{u1, u1} G₀ G₀ _inst_3 _inst_3 (Inv.inv.{u1} G₀ _inst_2) (HasCompl.compl.{u1} (Set.{u1} G₀) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} G₀) (Set.booleanAlgebra.{u1} G₀)) (Singleton.singleton.{u1, u1} G₀ (Set.{u1} G₀) (Set.hasSingleton.{u1} G₀) (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ _inst_1)))))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : Zero.{u1} G₀] [_inst_2 : Inv.{u1} G₀] [_inst_3 : TopologicalSpace.{u1} G₀] [_inst_4 : HasContinuousInv₀.{u1} G₀ _inst_1 _inst_2 _inst_3], ContinuousOn.{u1, u1} G₀ G₀ _inst_3 _inst_3 (Inv.inv.{u1} G₀ _inst_2) (HasCompl.compl.{u1} (Set.{u1} G₀) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} G₀) (Set.instBooleanAlgebraSet.{u1} G₀)) (Singleton.singleton.{u1, u1} G₀ (Set.{u1} G₀) (Set.instSingletonSet.{u1} G₀) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ _inst_1))))
-Case conversion may be inaccurate. Consider using '#align continuous_on_inv₀ continuousOn_inv₀ₓ'. -/
theorem continuousOn_inv₀ : ContinuousOn (Inv.inv : G₀ → G₀) ({0}ᶜ) := fun x hx =>
(continuousAt_inv₀ hx).ContinuousWithinAt
#align continuous_on_inv₀ continuousOn_inv₀
-/- warning: filter.tendsto.inv₀ -> Filter.Tendsto.inv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : Zero.{u2} G₀] [_inst_2 : Inv.{u2} G₀] [_inst_3 : TopologicalSpace.{u2} G₀] [_inst_4 : HasContinuousInv₀.{u2} G₀ _inst_1 _inst_2 _inst_3] {l : Filter.{u1} α} {f : α -> G₀} {a : G₀}, (Filter.Tendsto.{u1, u2} α G₀ f l (nhds.{u2} G₀ _inst_3 a)) -> (Ne.{succ u2} G₀ a (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ _inst_1)))) -> (Filter.Tendsto.{u1, u2} α G₀ (fun (x : α) => Inv.inv.{u2} G₀ _inst_2 (f x)) l (nhds.{u2} G₀ _inst_3 (Inv.inv.{u2} G₀ _inst_2 a)))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : Zero.{u1} G₀] [_inst_2 : Inv.{u1} G₀] [_inst_3 : TopologicalSpace.{u1} G₀] [_inst_4 : HasContinuousInv₀.{u1} G₀ _inst_1 _inst_2 _inst_3] {l : Filter.{u2} α} {f : α -> G₀} {a : G₀}, (Filter.Tendsto.{u2, u1} α G₀ f l (nhds.{u1} G₀ _inst_3 a)) -> (Ne.{succ u1} G₀ a (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ _inst_1))) -> (Filter.Tendsto.{u2, u1} α G₀ (fun (x : α) => Inv.inv.{u1} G₀ _inst_2 (f x)) l (nhds.{u1} G₀ _inst_3 (Inv.inv.{u1} G₀ _inst_2 a)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.inv₀ Filter.Tendsto.inv₀ₓ'. -/
/-- 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. -/
@@ -174,57 +132,27 @@ theorem Filter.Tendsto.inv₀ {a : G₀} (hf : Tendsto f l (𝓝 a)) (ha : a ≠
variable [TopologicalSpace α]
-/- warning: continuous_within_at.inv₀ -> ContinuousWithinAt.inv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : Zero.{u2} G₀] [_inst_2 : Inv.{u2} G₀] [_inst_3 : TopologicalSpace.{u2} G₀] [_inst_4 : HasContinuousInv₀.{u2} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} {s : Set.{u1} α} {a : α} [_inst_5 : TopologicalSpace.{u1} α], (ContinuousWithinAt.{u1, u2} α G₀ _inst_5 _inst_3 f s a) -> (Ne.{succ u2} G₀ (f a) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ _inst_1)))) -> (ContinuousWithinAt.{u1, u2} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u2} G₀ _inst_2 (f x)) s a)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : Zero.{u1} G₀] [_inst_2 : Inv.{u1} G₀] [_inst_3 : TopologicalSpace.{u1} G₀] [_inst_4 : HasContinuousInv₀.{u1} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} {s : Set.{u2} α} {a : α} [_inst_5 : TopologicalSpace.{u2} α], (ContinuousWithinAt.{u2, u1} α G₀ _inst_5 _inst_3 f s a) -> (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ _inst_1))) -> (ContinuousWithinAt.{u2, u1} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u1} G₀ _inst_2 (f x)) s a)
-Case conversion may be inaccurate. Consider using '#align continuous_within_at.inv₀ ContinuousWithinAt.inv₀ₓ'. -/
theorem ContinuousWithinAt.inv₀ (hf : ContinuousWithinAt f s a) (ha : f a ≠ 0) :
ContinuousWithinAt (fun x => (f x)⁻¹) s a :=
hf.inv₀ ha
#align continuous_within_at.inv₀ ContinuousWithinAt.inv₀
-/- warning: continuous_at.inv₀ -> ContinuousAt.inv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : Zero.{u2} G₀] [_inst_2 : Inv.{u2} G₀] [_inst_3 : TopologicalSpace.{u2} G₀] [_inst_4 : HasContinuousInv₀.{u2} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} {a : α} [_inst_5 : TopologicalSpace.{u1} α], (ContinuousAt.{u1, u2} α G₀ _inst_5 _inst_3 f a) -> (Ne.{succ u2} G₀ (f a) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ _inst_1)))) -> (ContinuousAt.{u1, u2} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u2} G₀ _inst_2 (f x)) a)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : Zero.{u1} G₀] [_inst_2 : Inv.{u1} G₀] [_inst_3 : TopologicalSpace.{u1} G₀] [_inst_4 : HasContinuousInv₀.{u1} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} {a : α} [_inst_5 : TopologicalSpace.{u2} α], (ContinuousAt.{u2, u1} α G₀ _inst_5 _inst_3 f a) -> (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ _inst_1))) -> (ContinuousAt.{u2, u1} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u1} G₀ _inst_2 (f x)) a)
-Case conversion may be inaccurate. Consider using '#align continuous_at.inv₀ ContinuousAt.inv₀ₓ'. -/
theorem ContinuousAt.inv₀ (hf : ContinuousAt f a) (ha : f a ≠ 0) :
ContinuousAt (fun x => (f x)⁻¹) a :=
hf.inv₀ ha
#align continuous_at.inv₀ ContinuousAt.inv₀
-/- warning: continuous.inv₀ -> Continuous.inv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : Zero.{u2} G₀] [_inst_2 : Inv.{u2} G₀] [_inst_3 : TopologicalSpace.{u2} G₀] [_inst_4 : HasContinuousInv₀.{u2} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} [_inst_5 : TopologicalSpace.{u1} α], (Continuous.{u1, u2} α G₀ _inst_5 _inst_3 f) -> (forall (x : α), Ne.{succ u2} G₀ (f x) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ _inst_1)))) -> (Continuous.{u1, u2} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u2} G₀ _inst_2 (f x)))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : Zero.{u1} G₀] [_inst_2 : Inv.{u1} G₀] [_inst_3 : TopologicalSpace.{u1} G₀] [_inst_4 : HasContinuousInv₀.{u1} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} [_inst_5 : TopologicalSpace.{u2} α], (Continuous.{u2, u1} α G₀ _inst_5 _inst_3 f) -> (forall (x : α), Ne.{succ u1} G₀ (f x) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ _inst_1))) -> (Continuous.{u2, u1} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u1} G₀ _inst_2 (f x)))
-Case conversion may be inaccurate. Consider using '#align continuous.inv₀ Continuous.inv₀ₓ'. -/
@[continuity]
theorem Continuous.inv₀ (hf : Continuous f) (h0 : ∀ x, f x ≠ 0) : Continuous fun x => (f x)⁻¹ :=
continuous_iff_continuousAt.2 fun x => (hf.Tendsto x).inv₀ (h0 x)
#align continuous.inv₀ Continuous.inv₀
-/- warning: continuous_on.inv₀ -> ContinuousOn.inv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : Zero.{u2} G₀] [_inst_2 : Inv.{u2} G₀] [_inst_3 : TopologicalSpace.{u2} G₀] [_inst_4 : HasContinuousInv₀.{u2} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} {s : Set.{u1} α} [_inst_5 : TopologicalSpace.{u1} α], (ContinuousOn.{u1, u2} α G₀ _inst_5 _inst_3 f s) -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Ne.{succ u2} G₀ (f x) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ _inst_1))))) -> (ContinuousOn.{u1, u2} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u2} G₀ _inst_2 (f x)) s)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : Zero.{u1} G₀] [_inst_2 : Inv.{u1} G₀] [_inst_3 : TopologicalSpace.{u1} G₀] [_inst_4 : HasContinuousInv₀.{u1} G₀ _inst_1 _inst_2 _inst_3] {f : α -> G₀} {s : Set.{u2} α} [_inst_5 : TopologicalSpace.{u2} α], (ContinuousOn.{u2, u1} α G₀ _inst_5 _inst_3 f s) -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Ne.{succ u1} G₀ (f x) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ _inst_1)))) -> (ContinuousOn.{u2, u1} α G₀ _inst_5 _inst_3 (fun (x : α) => Inv.inv.{u1} G₀ _inst_2 (f x)) s)
-Case conversion may be inaccurate. Consider using '#align continuous_on.inv₀ ContinuousOn.inv₀ₓ'. -/
theorem ContinuousOn.inv₀ (hf : ContinuousOn f s) (h0 : ∀ x ∈ s, f x ≠ 0) :
ContinuousOn (fun x => (f x)⁻¹) s := fun x hx => (hf x hx).inv₀ (h0 x hx)
#align continuous_on.inv₀ ContinuousOn.inv₀
end Inv₀
-/- warning: units.embedding_coe₀ -> Units.embedding_val₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2], Embedding.{u1, u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (Units.topologicalSpace.{u1} G₀ _inst_2 (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (coeBase.{succ u1, succ u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (Units.hasCoe.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2], Embedding.{u1, u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (Units.instTopologicalSpaceUnits.{u1} G₀ _inst_2 (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) _inst_2 (Units.val.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))
-Case conversion may be inaccurate. Consider using '#align units.embedding_coe₀ Units.embedding_val₀ₓ'. -/
/-- If `G₀` is a group with zero with topology such that `x ↦ x⁻¹` is continuous at all nonzero
points. Then the coercion `Mˣ → M` is a topological embedding. -/
theorem Units.embedding_val₀ [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] :
@@ -245,23 +173,11 @@ section Div
variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] [ContinuousMul G₀]
{f g : α → G₀}
-/- warning: filter.tendsto.div -> Filter.Tendsto.div is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} {l : Filter.{u1} α} {a : G₀} {b : G₀}, (Filter.Tendsto.{u1, u2} α G₀ f l (nhds.{u2} G₀ _inst_2 a)) -> (Filter.Tendsto.{u1, u2} α G₀ g l (nhds.{u2} G₀ _inst_2 b)) -> (Ne.{succ u2} G₀ b (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) -> (Filter.Tendsto.{u1, u2} α G₀ (HDiv.hDiv.{max u1 u2, max u1 u2, max u1 u2} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u1 u2} (α -> G₀) (Pi.instDiv.{u1, u2} α (fun (ᾰ : α) => G₀) (fun (i : α) => DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)))) f g) l (nhds.{u2} G₀ _inst_2 (HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) a b)))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} {l : Filter.{u2} α} {a : G₀} {b : G₀}, (Filter.Tendsto.{u2, u1} α G₀ f l (nhds.{u1} G₀ _inst_2 a)) -> (Filter.Tendsto.{u2, u1} α G₀ g l (nhds.{u1} G₀ _inst_2 b)) -> (Ne.{succ u1} G₀ b (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) -> (Filter.Tendsto.{u2, u1} α G₀ (HDiv.hDiv.{max u2 u1, max u2 u1, max u2 u1} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u2 u1} (α -> G₀) (Pi.instDiv.{u2, u1} α (fun (ᾰ : α) => G₀) (fun (i : α) => GroupWithZero.toDiv.{u1} G₀ _inst_1))) f g) l (nhds.{u1} G₀ _inst_2 (HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (GroupWithZero.toDiv.{u1} G₀ _inst_1)) a b)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.div Filter.Tendsto.divₓ'. -/
theorem Filter.Tendsto.div {l : Filter α} {a b : G₀} (hf : Tendsto f l (𝓝 a))
(hg : Tendsto g l (𝓝 b)) (hy : b ≠ 0) : Tendsto (f / g) l (𝓝 (a / b)) := by
simpa only [div_eq_mul_inv] using hf.mul (hg.inv₀ hy)
#align filter.tendsto.div Filter.Tendsto.div
-/- warning: filter.tendsto_mul_iff_of_ne_zero -> Filter.tendsto_mul_iff_of_ne_zero is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] [_inst_5 : T1Space.{u2} G₀ _inst_2] {f : α -> G₀} {g : α -> G₀} {l : Filter.{u1} α} {x : G₀} {y : G₀}, (Filter.Tendsto.{u1, u2} α G₀ g l (nhds.{u2} G₀ _inst_2 y)) -> (Ne.{succ u2} G₀ y (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) -> (Iff (Filter.Tendsto.{u1, u2} α G₀ (fun (n : α) => HMul.hMul.{u2, u2, u2} G₀ G₀ G₀ (instHMul.{u2} G₀ (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) (f n) (g n)) l (nhds.{u2} G₀ _inst_2 (HMul.hMul.{u2, u2, u2} G₀ G₀ G₀ (instHMul.{u2} G₀ (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) x y))) (Filter.Tendsto.{u1, u2} α G₀ f l (nhds.{u2} G₀ _inst_2 x)))
-but is expected to have type
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)) (GroupWithZero.toInv.{u2} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] [_inst_5 : T1Space.{u2} G₀ _inst_2] {f : α -> G₀} {g : α -> G₀} {l : Filter.{u1} α} {x : G₀} {y : G₀}, (Filter.Tendsto.{u1, u2} α G₀ g l (nhds.{u2} G₀ _inst_2 y)) -> (Ne.{succ u2} G₀ y (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) -> (Iff (Filter.Tendsto.{u1, u2} α G₀ (fun (n : α) => HMul.hMul.{u2, u2, u2} G₀ G₀ G₀ (instHMul.{u2} G₀ (MulZeroClass.toMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) (f n) (g n)) l (nhds.{u2} G₀ _inst_2 (HMul.hMul.{u2, u2, u2} G₀ G₀ G₀ (instHMul.{u2} G₀ (MulZeroClass.toMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) x y))) (Filter.Tendsto.{u1, u2} α G₀ f l (nhds.{u2} G₀ _inst_2 x)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_iff_of_ne_zero Filter.tendsto_mul_iff_of_ne_zeroₓ'. -/
theorem Filter.tendsto_mul_iff_of_ne_zero [T1Space G₀] {f g : α → G₀} {l : Filter α} {x y : G₀}
(hg : Tendsto g l (𝓝 y)) (hy : y ≠ 0) :
Tendsto (fun n => f n * g n) l (𝓝 <| x * y) ↔ Tendsto f l (𝓝 x) :=
@@ -274,33 +190,15 @@ theorem Filter.tendsto_mul_iff_of_ne_zero [T1Space G₀] {f g : α → G₀} {l
variable [TopologicalSpace α] [TopologicalSpace β] {s : Set α} {a : α}
-/- warning: continuous_within_at.div -> ContinuousWithinAt.div is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {a : α}, (ContinuousWithinAt.{u1, u2} α G₀ _inst_5 _inst_2 f s a) -> (ContinuousWithinAt.{u1, u2} α G₀ _inst_5 _inst_2 g s a) -> (Ne.{succ u2} G₀ (g a) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) -> (ContinuousWithinAt.{u1, u2} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u1 u2, max u1 u2, max u1 u2} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u1 u2} (α -> G₀) (Pi.instDiv.{u1, u2} α (fun (ᾰ : α) => G₀) (fun (i : α) => DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)))) f g) s a)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u2} α] {s : Set.{u2} α} {a : α}, (ContinuousWithinAt.{u2, u1} α G₀ _inst_5 _inst_2 f s a) -> (ContinuousWithinAt.{u2, u1} α G₀ _inst_5 _inst_2 g s a) -> (Ne.{succ u1} G₀ (g a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) -> (ContinuousWithinAt.{u2, u1} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u2 u1, max u2 u1, max u2 u1} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u2 u1} (α -> G₀) (Pi.instDiv.{u2, u1} α (fun (ᾰ : α) => G₀) (fun (i : α) => GroupWithZero.toDiv.{u1} G₀ _inst_1))) f g) s a)
-Case conversion may be inaccurate. Consider using '#align continuous_within_at.div ContinuousWithinAt.divₓ'. -/
theorem ContinuousWithinAt.div (hf : ContinuousWithinAt f s a) (hg : ContinuousWithinAt g s a)
(h₀ : g a ≠ 0) : ContinuousWithinAt (f / g) s a :=
hf.div hg h₀
#align continuous_within_at.div ContinuousWithinAt.div
-/- warning: continuous_on.div -> ContinuousOn.div is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (ContinuousOn.{u1, u2} α G₀ _inst_5 _inst_2 f s) -> (ContinuousOn.{u1, u2} α G₀ _inst_5 _inst_2 g s) -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Ne.{succ u2} G₀ (g x) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))))))) -> (ContinuousOn.{u1, u2} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u1 u2, max u1 u2, max u1 u2} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u1 u2} (α -> G₀) (Pi.instDiv.{u1, u2} α (fun (ᾰ : α) => G₀) (fun (i : α) => DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)))) f g) s)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u2} α] {s : Set.{u2} α}, (ContinuousOn.{u2, u1} α G₀ _inst_5 _inst_2 f s) -> (ContinuousOn.{u2, u1} α G₀ _inst_5 _inst_2 g s) -> (forall (x : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Ne.{succ u1} G₀ (g x) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))) -> (ContinuousOn.{u2, u1} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u2 u1, max u2 u1, max u2 u1} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u2 u1} (α -> G₀) (Pi.instDiv.{u2, u1} α (fun (ᾰ : α) => G₀) (fun (i : α) => GroupWithZero.toDiv.{u1} G₀ _inst_1))) f g) s)
-Case conversion may be inaccurate. Consider using '#align continuous_on.div ContinuousOn.divₓ'. -/
theorem ContinuousOn.div (hf : ContinuousOn f s) (hg : ContinuousOn g s) (h₀ : ∀ x ∈ s, g x ≠ 0) :
ContinuousOn (f / g) s := fun x hx => (hf x hx).div (hg x hx) (h₀ x hx)
#align continuous_on.div ContinuousOn.div
-/- warning: continuous_at.div -> ContinuousAt.div is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u1} α] {a : α}, (ContinuousAt.{u1, u2} α G₀ _inst_5 _inst_2 f a) -> (ContinuousAt.{u1, u2} α G₀ _inst_5 _inst_2 g a) -> (Ne.{succ u2} G₀ (g a) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) -> (ContinuousAt.{u1, u2} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u1 u2, max u1 u2, max u1 u2} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u1 u2} (α -> G₀) (Pi.instDiv.{u1, u2} α (fun (ᾰ : α) => G₀) (fun (i : α) => DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)))) f g) a)
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u2} α] {a : α}, (ContinuousAt.{u2, u1} α G₀ _inst_5 _inst_2 f a) -> (ContinuousAt.{u2, u1} α G₀ _inst_5 _inst_2 g a) -> (Ne.{succ u1} G₀ (g a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) -> (ContinuousAt.{u2, u1} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u2 u1, max u2 u1, max u2 u1} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u2 u1} (α -> G₀) (Pi.instDiv.{u2, u1} α (fun (ᾰ : α) => G₀) (fun (i : α) => GroupWithZero.toDiv.{u1} G₀ _inst_1))) f g) a)
-Case conversion may be inaccurate. Consider using '#align continuous_at.div ContinuousAt.divₓ'. -/
/-- Continuity at a point of the result of dividing two functions continuous at that point, where
the denominator is nonzero. -/
theorem ContinuousAt.div (hf : ContinuousAt f a) (hg : ContinuousAt g a) (h₀ : g a ≠ 0) :
@@ -308,33 +206,15 @@ theorem ContinuousAt.div (hf : ContinuousAt f a) (hg : ContinuousAt g a) (h₀ :
hf.div hg h₀
#align continuous_at.div ContinuousAt.div
-/- warning: continuous.div -> Continuous.div is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u1} α], (Continuous.{u1, u2} α G₀ _inst_5 _inst_2 f) -> (Continuous.{u1, u2} α G₀ _inst_5 _inst_2 g) -> (forall (x : α), Ne.{succ u2} G₀ (g x) (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) -> (Continuous.{u1, u2} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u1 u2, max u1 u2, max u1 u2} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u1 u2} (α -> G₀) (Pi.instDiv.{u1, u2} α (fun (ᾰ : α) => G₀) (fun (i : α) => DivInvMonoid.toHasDiv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)))) f g))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {f : α -> G₀} {g : α -> G₀} [_inst_5 : TopologicalSpace.{u2} α], (Continuous.{u2, u1} α G₀ _inst_5 _inst_2 f) -> (Continuous.{u2, u1} α G₀ _inst_5 _inst_2 g) -> (forall (x : α), Ne.{succ u1} G₀ (g x) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) -> (Continuous.{u2, u1} α G₀ _inst_5 _inst_2 (HDiv.hDiv.{max u2 u1, max u2 u1, max u2 u1} (α -> G₀) (α -> G₀) (α -> G₀) (instHDiv.{max u2 u1} (α -> G₀) (Pi.instDiv.{u2, u1} α (fun (ᾰ : α) => G₀) (fun (i : α) => GroupWithZero.toDiv.{u1} G₀ _inst_1))) f g))
-Case conversion may be inaccurate. Consider using '#align continuous.div Continuous.divₓ'. -/
@[continuity]
theorem Continuous.div (hf : Continuous f) (hg : Continuous g) (h₀ : ∀ x, g x ≠ 0) :
Continuous (f / g) := by simpa only [div_eq_mul_inv] using hf.mul (hg.inv₀ h₀)
#align continuous.div Continuous.div
-/- warning: continuous_on_div -> continuousOn_div is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toHasMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))], ContinuousOn.{u1, u1} (Prod.{u1, u1} G₀ G₀) G₀ (Prod.topologicalSpace.{u1, u1} G₀ G₀ _inst_2 _inst_2) _inst_2 (fun (p : Prod.{u1, u1} G₀ G₀) => HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (DivInvMonoid.toHasDiv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (Prod.fst.{u1, u1} G₀ G₀ p) (Prod.snd.{u1, u1} G₀ G₀ p)) (setOf.{u1} (Prod.{u1, u1} G₀ G₀) (fun (p : Prod.{u1, u1} G₀ G₀) => Ne.{succ u1} G₀ (Prod.snd.{u1, u1} G₀ G₀ p) (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))], ContinuousOn.{u1, u1} (Prod.{u1, u1} G₀ G₀) G₀ (instTopologicalSpaceProd.{u1, u1} G₀ G₀ _inst_2 _inst_2) _inst_2 (fun (p : Prod.{u1, u1} G₀ G₀) => HDiv.hDiv.{u1, u1, u1} G₀ G₀ G₀ (instHDiv.{u1} G₀ (GroupWithZero.toDiv.{u1} G₀ _inst_1)) (Prod.fst.{u1, u1} G₀ G₀ p) (Prod.snd.{u1, u1} G₀ G₀ p)) (setOf.{u1} (Prod.{u1, u1} G₀ G₀) (fun (p : Prod.{u1, u1} G₀ G₀) => Ne.{succ u1} G₀ (Prod.snd.{u1, u1} G₀ G₀ p) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align continuous_on_div continuousOn_divₓ'. -/
theorem continuousOn_div : ContinuousOn (fun p : G₀ × G₀ => p.1 / p.2) { p | p.2 ≠ 0 } :=
continuousOn_fst.div continuousOn_snd fun _ => id
#align continuous_on_div continuousOn_div
-/- warning: continuous_at.comp_div_cases -> ContinuousAt.comp_div_cases is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : GroupWithZero.{u3} G₀] [_inst_2 : TopologicalSpace.{u3} G₀] [_inst_3 : HasContinuousInv₀.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u3} G₀ (GroupWithZero.toDivInvMonoid.{u3} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u3} G₀ _inst_2 (MulZeroClass.toHasMul.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1))))] [_inst_5 : TopologicalSpace.{u1} α] [_inst_6 : TopologicalSpace.{u2} β] {a : α} {f : α -> G₀} {g : α -> G₀} (h : α -> G₀ -> β), (ContinuousAt.{u1, u3} α G₀ _inst_5 _inst_2 f a) -> (ContinuousAt.{u1, u3} α G₀ _inst_5 _inst_2 g a) -> ((Ne.{succ u3} G₀ (g a) (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1)))))))) -> (ContinuousAt.{max u1 u3, u2} (Prod.{u1, u3} α G₀) β (Prod.topologicalSpace.{u1, u3} α G₀ _inst_5 _inst_2) _inst_6 (Function.HasUncurry.uncurry.{max u1 u3 u2, max u1 u3, u2} (α -> G₀ -> β) (Prod.{u1, u3} α G₀) β (Function.hasUncurryInduction.{u1, max u3 u2, u3, u2} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u3, u2} G₀ β)) h) (Prod.mk.{u1, u3} α G₀ a (HDiv.hDiv.{u3, u3, u3} G₀ G₀ G₀ (instHDiv.{u3} G₀ (DivInvMonoid.toHasDiv.{u3} G₀ (GroupWithZero.toDivInvMonoid.{u3} G₀ _inst_1))) (f a) (g a))))) -> ((Eq.{succ u3} G₀ (g a) (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1)))))))) -> (Filter.Tendsto.{max u1 u3, u2} (Prod.{u1, u3} α G₀) β (Function.HasUncurry.uncurry.{max u1 u3 u2, max u1 u3, u2} (α -> G₀ -> β) (Prod.{u1, u3} α G₀) β (Function.hasUncurryInduction.{u1, max u3 u2, u3, u2} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u3, u2} G₀ β)) h) (Filter.prod.{u1, u3} α G₀ (nhds.{u1} α _inst_5 a) (Top.top.{u3} (Filter.{u3} G₀) (Filter.hasTop.{u3} G₀))) (nhds.{u2} β _inst_6 (h a (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1))))))))))) -> (ContinuousAt.{u1, u2} α β _inst_5 _inst_6 (fun (x : α) => h x (HDiv.hDiv.{u3, u3, u3} G₀ G₀ G₀ (instHDiv.{u3} G₀ (DivInvMonoid.toHasDiv.{u3} G₀ (GroupWithZero.toDivInvMonoid.{u3} G₀ _inst_1))) (f x) (g x))) a)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)) (GroupWithZero.toInv.{u2} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] [_inst_5 : TopologicalSpace.{u3} α] [_inst_6 : TopologicalSpace.{u1} β] {a : α} {f : α -> G₀} {g : α -> G₀} (h : α -> G₀ -> β), (ContinuousAt.{u3, u2} α G₀ _inst_5 _inst_2 f a) -> (ContinuousAt.{u3, u2} α G₀ _inst_5 _inst_2 g a) -> ((Ne.{succ u2} G₀ (g a) (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) -> (ContinuousAt.{max u3 u2, u1} (Prod.{u3, u2} α G₀) β (instTopologicalSpaceProd.{u3, u2} α G₀ _inst_5 _inst_2) _inst_6 (Function.HasUncurry.uncurry.{max (max u3 u1) u2, max u3 u2, u1} (α -> G₀ -> β) (Prod.{u3, u2} α G₀) β (Function.hasUncurryInduction.{u3, max u1 u2, u2, u1} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u2, u1} G₀ β)) h) (Prod.mk.{u3, u2} α G₀ a (HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (GroupWithZero.toDiv.{u2} G₀ _inst_1)) (f a) (g a))))) -> ((Eq.{succ u2} G₀ (g a) (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) -> (Filter.Tendsto.{max u3 u2, u1} (Prod.{u3, u2} α G₀) β (Function.HasUncurry.uncurry.{max (max u3 u1) u2, max u3 u2, u1} (α -> G₀ -> β) (Prod.{u3, u2} α G₀) β (Function.hasUncurryInduction.{u3, max u1 u2, u2, u1} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u2, u1} G₀ β)) h) (Filter.prod.{u3, u2} α G₀ (nhds.{u3} α _inst_5 a) (Top.top.{u2} (Filter.{u2} G₀) (Filter.instTopFilter.{u2} G₀))) (nhds.{u1} β _inst_6 (h a (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) -> (ContinuousAt.{u3, u1} α β _inst_5 _inst_6 (fun (x : α) => h x (HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (GroupWithZero.toDiv.{u2} G₀ _inst_1)) (f x) (g x))) a)
-Case conversion may be inaccurate. Consider using '#align continuous_at.comp_div_cases ContinuousAt.comp_div_casesₓ'. -/
/-- The function `f x / g x` is discontinuous when `g x = 0`.
However, under appropriate conditions, `h x (f x / g x)` is still continuous.
The condition is that if `g a = 0` then `h x y` must tend to `h a 0` when `x` tends to `a`,
@@ -353,12 +233,6 @@ theorem ContinuousAt.comp_div_cases {f g : α → G₀} (h : α → G₀ → β)
· exact ContinuousAt.comp (hh hga) (continuous_at_id.prod (hf.div hg hga))
#align continuous_at.comp_div_cases ContinuousAt.comp_div_cases
-/- warning: continuous.comp_div_cases -> Continuous.comp_div_cases is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : GroupWithZero.{u3} G₀] [_inst_2 : TopologicalSpace.{u3} G₀] [_inst_3 : HasContinuousInv₀.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u3} G₀ (GroupWithZero.toDivInvMonoid.{u3} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u3} G₀ _inst_2 (MulZeroClass.toHasMul.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1))))] [_inst_5 : TopologicalSpace.{u1} α] [_inst_6 : TopologicalSpace.{u2} β] {f : α -> G₀} {g : α -> G₀} (h : α -> G₀ -> β), (Continuous.{u1, u3} α G₀ _inst_5 _inst_2 f) -> (Continuous.{u1, u3} α G₀ _inst_5 _inst_2 g) -> (forall (a : α), (Ne.{succ u3} G₀ (g a) (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1)))))))) -> (ContinuousAt.{max u1 u3, u2} (Prod.{u1, u3} α G₀) β (Prod.topologicalSpace.{u1, u3} α G₀ _inst_5 _inst_2) _inst_6 (Function.HasUncurry.uncurry.{max u1 u3 u2, max u1 u3, u2} (α -> G₀ -> β) (Prod.{u1, u3} α G₀) β (Function.hasUncurryInduction.{u1, max u3 u2, u3, u2} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u3, u2} G₀ β)) h) (Prod.mk.{u1, u3} α G₀ a (HDiv.hDiv.{u3, u3, u3} G₀ G₀ G₀ (instHDiv.{u3} G₀ (DivInvMonoid.toHasDiv.{u3} G₀ (GroupWithZero.toDivInvMonoid.{u3} G₀ _inst_1))) (f a) (g a))))) -> (forall (a : α), (Eq.{succ u3} G₀ (g a) (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1)))))))) -> (Filter.Tendsto.{max u1 u3, u2} (Prod.{u1, u3} α G₀) β (Function.HasUncurry.uncurry.{max u1 u3 u2, max u1 u3, u2} (α -> G₀ -> β) (Prod.{u1, u3} α G₀) β (Function.hasUncurryInduction.{u1, max u3 u2, u3, u2} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u3, u2} G₀ β)) h) (Filter.prod.{u1, u3} α G₀ (nhds.{u1} α _inst_5 a) (Top.top.{u3} (Filter.{u3} G₀) (Filter.hasTop.{u3} G₀))) (nhds.{u2} β _inst_6 (h a (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_1))))))))))) -> (Continuous.{u1, u2} α β _inst_5 _inst_6 (fun (x : α) => h x (HDiv.hDiv.{u3, u3, u3} G₀ G₀ G₀ (instHDiv.{u3} G₀ (DivInvMonoid.toHasDiv.{u3} G₀ (GroupWithZero.toDivInvMonoid.{u3} G₀ _inst_1))) (f x) (g x))))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)) (GroupWithZero.toInv.{u2} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] [_inst_5 : TopologicalSpace.{u3} α] [_inst_6 : TopologicalSpace.{u1} β] {f : α -> G₀} {g : α -> G₀} (h : α -> G₀ -> β), (Continuous.{u3, u2} α G₀ _inst_5 _inst_2 f) -> (Continuous.{u3, u2} α G₀ _inst_5 _inst_2 g) -> (forall (a : α), (Ne.{succ u2} G₀ (g a) (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) -> (ContinuousAt.{max u3 u2, u1} (Prod.{u3, u2} α G₀) β (instTopologicalSpaceProd.{u3, u2} α G₀ _inst_5 _inst_2) _inst_6 (Function.HasUncurry.uncurry.{max (max u3 u1) u2, max u3 u2, u1} (α -> G₀ -> β) (Prod.{u3, u2} α G₀) β (Function.hasUncurryInduction.{u3, max u1 u2, u2, u1} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u2, u1} G₀ β)) h) (Prod.mk.{u3, u2} α G₀ a (HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (GroupWithZero.toDiv.{u2} G₀ _inst_1)) (f a) (g a))))) -> (forall (a : α), (Eq.{succ u2} G₀ (g a) (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))) -> (Filter.Tendsto.{max u3 u2, u1} (Prod.{u3, u2} α G₀) β (Function.HasUncurry.uncurry.{max (max u3 u1) u2, max u3 u2, u1} (α -> G₀ -> β) (Prod.{u3, u2} α G₀) β (Function.hasUncurryInduction.{u3, max u1 u2, u2, u1} α (G₀ -> β) G₀ β (Function.hasUncurryBase.{u2, u1} G₀ β)) h) (Filter.prod.{u3, u2} α G₀ (nhds.{u3} α _inst_5 a) (Top.top.{u2} (Filter.{u2} G₀) (Filter.instTopFilter.{u2} G₀))) (nhds.{u1} β _inst_6 (h a (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) -> (Continuous.{u3, u1} α β _inst_5 _inst_6 (fun (x : α) => h x (HDiv.hDiv.{u2, u2, u2} G₀ G₀ G₀ (instHDiv.{u2} G₀ (GroupWithZero.toDiv.{u2} G₀ _inst_1)) (f x) (g x))))
-Case conversion may be inaccurate. Consider using '#align continuous.comp_div_cases Continuous.comp_div_casesₓ'. -/
/-- `h x (f x / g x)` is continuous under certain conditions, even if the denominator is sometimes
`0`. See docstring of `continuous_at.comp_div_cases`. -/
theorem Continuous.comp_div_cases {f g : α → G₀} (h : α → G₀ → β) (hf : Continuous f)
@@ -378,12 +252,6 @@ namespace Homeomorph
variable [TopologicalSpace α] [GroupWithZero α] [ContinuousMul α]
-/- warning: homeomorph.mul_left₀ -> Homeomorph.mulLeft₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α), (Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))) -> (Homeomorph.{u1, u1} α α _inst_1 _inst_1)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α), (Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) -> (Homeomorph.{u1, u1} α α _inst_1 _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.mul_left₀ Homeomorph.mulLeft₀ₓ'. -/
/-- Left multiplication by a nonzero element in a `group_with_zero` with continuous multiplication
is a homeomorphism of the underlying type. -/
protected def mulLeft₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
@@ -392,12 +260,6 @@ protected def mulLeft₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
continuous_invFun := continuous_mul_left _ }
#align homeomorph.mul_left₀ Homeomorph.mulLeft₀
-/- warning: homeomorph.mul_right₀ -> Homeomorph.mulRight₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α), (Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))) -> (Homeomorph.{u1, u1} α α _inst_1 _inst_1)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α), (Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) -> (Homeomorph.{u1, u1} α α _inst_1 _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.mul_right₀ Homeomorph.mulRight₀ₓ'. -/
/-- Right multiplication by a nonzero element in a `group_with_zero` with continuous multiplication
is a homeomorphism of the underlying type. -/
protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
@@ -406,46 +268,22 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
continuous_invFun := continuous_mul_right _ }
#align homeomorph.mul_right₀ Homeomorph.mulRight₀
-/- warning: homeomorph.coe_mul_left₀ -> Homeomorph.coe_mulLeft₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2182 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2182)
-Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀ₓ'. -/
@[simp]
theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
rfl
#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀
-/- warning: homeomorph.mul_left₀_symm_apply -> Homeomorph.mulLeft₀_symm_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231)
-Case conversion may be inaccurate. Consider using '#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_applyₓ'. -/
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
((Homeomorph.mulLeft₀ c hc).symm : α → α) = (· * ·) c⁻¹ :=
rfl
#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_apply
-/- warning: homeomorph.coe_mul_right₀ -> Homeomorph.coe_mulRight₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x c)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x c)
-Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_right₀ Homeomorph.coe_mulRight₀ₓ'. -/
@[simp]
theorem coe_mulRight₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulRight₀ c hc) = fun x => x * c :=
rfl
#align homeomorph.coe_mul_right₀ Homeomorph.coe_mulRight₀
-/- warning: homeomorph.mul_right₀_symm_apply -> Homeomorph.mulRight₀_symm_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c))
-Case conversion may be inaccurate. Consider using '#align homeomorph.mul_right₀_symm_apply Homeomorph.mulRight₀_symm_applyₓ'. -/
@[simp]
theorem mulRight₀_symm_apply (c : α) (hc : c ≠ 0) :
((Homeomorph.mulRight₀ c hc).symm : α → α) = fun x => x * c⁻¹ :=
@@ -458,12 +296,6 @@ section Zpow
variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] [ContinuousMul G₀]
-/- warning: continuous_at_zpow₀ -> continuousAt_zpow₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toHasMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] (x : G₀) (m : Int), (Or (Ne.{succ u1} G₀ x (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) m)) -> (ContinuousAt.{u1, u1} G₀ G₀ _inst_2 _inst_2 (fun (x : G₀) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) x m) x)
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] (x : G₀) (m : Int), (Or (Ne.{succ u1} G₀ x (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) m)) -> (ContinuousAt.{u1, u1} G₀ G₀ _inst_2 _inst_2 (fun (x : G₀) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) x m) x)
-Case conversion may be inaccurate. Consider using '#align continuous_at_zpow₀ continuousAt_zpow₀ₓ'. -/
theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) : ContinuousAt (fun x => x ^ m) x :=
by
cases m
@@ -473,22 +305,10 @@ theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) : Co
exact (continuousAt_pow x (m + 1)).inv₀ (pow_ne_zero _ hx)
#align continuous_at_zpow₀ continuousAt_zpow₀
-/- warning: continuous_on_zpow₀ -> continuousOn_zpow₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toHasMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] (m : Int), ContinuousOn.{u1, u1} G₀ G₀ _inst_2 _inst_2 (fun (x : G₀) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) x m) (HasCompl.compl.{u1} (Set.{u1} G₀) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} G₀) (Set.booleanAlgebra.{u1} G₀)) (Singleton.singleton.{u1, u1} G₀ (Set.{u1} G₀) (Set.hasSingleton.{u1} G₀) (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] (m : Int), ContinuousOn.{u1, u1} G₀ G₀ _inst_2 _inst_2 (fun (x : G₀) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) x m) (HasCompl.compl.{u1} (Set.{u1} G₀) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} G₀) (Set.instBooleanAlgebraSet.{u1} G₀)) (Singleton.singleton.{u1, u1} G₀ (Set.{u1} G₀) (Set.instSingletonSet.{u1} G₀) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align continuous_on_zpow₀ continuousOn_zpow₀ₓ'. -/
theorem continuousOn_zpow₀ (m : ℤ) : ContinuousOn (fun x : G₀ => x ^ m) ({0}ᶜ) := fun x hx =>
(continuousAt_zpow₀ _ _ (Or.inl hx)).ContinuousWithinAt
#align continuous_on_zpow₀ continuousOn_zpow₀
-/- warning: filter.tendsto.zpow₀ -> Filter.Tendsto.zpow₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : GroupWithZero.{u2} G₀] [_inst_2 : TopologicalSpace.{u2} G₀] [_inst_3 : HasContinuousInv₀.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u2} G₀ _inst_2 (MulZeroClass.toHasMul.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1))))] {f : α -> G₀} {l : Filter.{u1} α} {a : G₀}, (Filter.Tendsto.{u1, u2} α G₀ f l (nhds.{u2} G₀ _inst_2 a)) -> (forall (m : Int), (Or (Ne.{succ u2} G₀ a (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_1)))))))) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) m)) -> (Filter.Tendsto.{u1, u2} α G₀ (fun (x : α) => HPow.hPow.{u2, 0, u2} G₀ Int G₀ (instHPow.{u2, 0} G₀ Int (DivInvMonoid.Pow.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) (f x) m) l (nhds.{u2} G₀ _inst_2 (HPow.hPow.{u2, 0, u2} G₀ Int G₀ (instHPow.{u2, 0} G₀ Int (DivInvMonoid.Pow.{u2} G₀ (GroupWithZero.toDivInvMonoid.{u2} G₀ _inst_1))) a m))))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {f : α -> G₀} {l : Filter.{u2} α} {a : G₀}, (Filter.Tendsto.{u2, u1} α G₀ f l (nhds.{u1} G₀ _inst_2 a)) -> (forall (m : Int), (Or (Ne.{succ u1} G₀ a (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) m)) -> (Filter.Tendsto.{u2, u1} α G₀ (fun (x : α) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m) l (nhds.{u1} G₀ _inst_2 (HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) a m))))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.zpow₀ Filter.Tendsto.zpow₀ₓ'. -/
theorem Filter.Tendsto.zpow₀ {f : α → G₀} {l : Filter α} {a : G₀} (hf : Tendsto f l (𝓝 a)) (m : ℤ)
(h : a ≠ 0 ∨ 0 ≤ m) : Tendsto (fun x => f x ^ m) l (𝓝 (a ^ m)) :=
(continuousAt_zpow₀ _ m h).Tendsto.comp hf
@@ -496,44 +316,20 @@ theorem Filter.Tendsto.zpow₀ {f : α → G₀} {l : Filter α} {a : G₀} (hf
variable {X : Type _} [TopologicalSpace X] {a : X} {s : Set X} {f : X → G₀}
-/- warning: continuous_at.zpow₀ -> ContinuousAt.zpow₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toHasMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {a : X} {f : X -> G₀}, (ContinuousAt.{u2, u1} X G₀ _inst_5 _inst_2 f a) -> (forall (m : Int), (Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) m)) -> (ContinuousAt.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m) a))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {a : X} {f : X -> G₀}, (ContinuousAt.{u2, u1} X G₀ _inst_5 _inst_2 f a) -> (forall (m : Int), (Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) m)) -> (ContinuousAt.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m) a))
-Case conversion may be inaccurate. Consider using '#align continuous_at.zpow₀ ContinuousAt.zpow₀ₓ'. -/
theorem ContinuousAt.zpow₀ (hf : ContinuousAt f a) (m : ℤ) (h : f a ≠ 0 ∨ 0 ≤ m) :
ContinuousAt (fun x => f x ^ m) a :=
hf.zpow₀ m h
#align continuous_at.zpow₀ ContinuousAt.zpow₀
-/- warning: continuous_within_at.zpow₀ -> ContinuousWithinAt.zpow₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toHasMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {a : X} {s : Set.{u2} X} {f : X -> G₀}, (ContinuousWithinAt.{u2, u1} X G₀ _inst_5 _inst_2 f s a) -> (forall (m : Int), (Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) m)) -> (ContinuousWithinAt.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m) s a))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {a : X} {s : Set.{u2} X} {f : X -> G₀}, (ContinuousWithinAt.{u2, u1} X G₀ _inst_5 _inst_2 f s a) -> (forall (m : Int), (Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) m)) -> (ContinuousWithinAt.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m) s a))
-Case conversion may be inaccurate. Consider using '#align continuous_within_at.zpow₀ ContinuousWithinAt.zpow₀ₓ'. -/
theorem ContinuousWithinAt.zpow₀ (hf : ContinuousWithinAt f s a) (m : ℤ) (h : f a ≠ 0 ∨ 0 ≤ m) :
ContinuousWithinAt (fun x => f x ^ m) s a :=
hf.zpow₀ m h
#align continuous_within_at.zpow₀ ContinuousWithinAt.zpow₀
-/- warning: continuous_on.zpow₀ -> ContinuousOn.zpow₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toHasMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {s : Set.{u2} X} {f : X -> G₀}, (ContinuousOn.{u2, u1} X G₀ _inst_5 _inst_2 f s) -> (forall (m : Int), (forall (a : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) a s) -> (Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) m))) -> (ContinuousOn.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m) s))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {s : Set.{u2} X} {f : X -> G₀}, (ContinuousOn.{u2, u1} X G₀ _inst_5 _inst_2 f s) -> (forall (m : Int), (forall (a : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) a s) -> (Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) m))) -> (ContinuousOn.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m) s))
-Case conversion may be inaccurate. Consider using '#align continuous_on.zpow₀ ContinuousOn.zpow₀ₓ'. -/
theorem ContinuousOn.zpow₀ (hf : ContinuousOn f s) (m : ℤ) (h : ∀ a ∈ s, f a ≠ 0 ∨ 0 ≤ m) :
ContinuousOn (fun x => f x ^ m) s := fun a ha => (hf a ha).zpow₀ m (h a ha)
#align continuous_on.zpow₀ ContinuousOn.zpow₀
-/- warning: continuous.zpow₀ -> Continuous.zpow₀ is a dubious translation:
-lean 3 declaration is
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toHasMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {f : X -> G₀}, (Continuous.{u2, u1} X G₀ _inst_5 _inst_2 f) -> (forall (m : Int), (forall (a : X), Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (OfNat.mk.{u1} G₀ 0 (Zero.zero.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))) (LE.le.{0} Int Int.hasLe (OfNat.ofNat.{0} Int 0 (OfNat.mk.{0} Int 0 (Zero.zero.{0} Int Int.hasZero))) m)) -> (Continuous.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m)))
-but is expected to have type
- forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2] [_inst_4 : ContinuousMul.{u1} G₀ _inst_2 (MulZeroClass.toMul.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))] {X : Type.{u2}} [_inst_5 : TopologicalSpace.{u2} X] {f : X -> G₀}, (Continuous.{u2, u1} X G₀ _inst_5 _inst_2 f) -> (forall (m : Int), (forall (a : X), Or (Ne.{succ u1} G₀ (f a) (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))))) (LE.le.{0} Int Int.instLEInt (OfNat.ofNat.{0} Int 0 (instOfNatInt 0)) m)) -> (Continuous.{u2, u1} X G₀ _inst_5 _inst_2 (fun (x : X) => HPow.hPow.{u1, 0, u1} G₀ Int G₀ (instHPow.{u1, 0} G₀ Int (DivInvMonoid.Pow.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1))) (f x) m)))
-Case conversion may be inaccurate. Consider using '#align continuous.zpow₀ Continuous.zpow₀ₓ'. -/
@[continuity]
theorem Continuous.zpow₀ (hf : Continuous f) (m : ℤ) (h0 : ∀ a, f a ≠ 0 ∨ 0 ≤ m) :
Continuous fun x => f x ^ m :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -348,8 +348,7 @@ theorem ContinuousAt.comp_div_cases {f g : α → G₀} (h : α → G₀ → β)
by
show ContinuousAt (↿h ∘ fun x => (x, f x / g x)) a
by_cases hga : g a = 0
- · rw [ContinuousAt]
- simp_rw [comp_app, hga, div_zero]
+ · rw [ContinuousAt]; simp_rw [comp_app, hga, div_zero]
exact (h2h hga).comp (continuous_at_id.prod_mk tendsto_top)
· exact ContinuousAt.comp (hh hga) (continuous_at_id.prod (hf.div hg hga))
#align continuous_at.comp_div_cases ContinuousAt.comp_div_cases
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -411,7 +411,7 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2182 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2182)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀ₓ'. -/
@[simp]
theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
@@ -422,7 +422,7 @@ theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc)
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231)
Case conversion may be inaccurate. Consider using '#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_applyₓ'. -/
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -411,7 +411,7 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀ₓ'. -/
@[simp]
theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
@@ -422,7 +422,7 @@ theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc)
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233)
Case conversion may be inaccurate. Consider using '#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_applyₓ'. -/
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
@@ -434,7 +434,7 @@ theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x c)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x c)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x c)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_right₀ Homeomorph.coe_mulRight₀ₓ'. -/
@[simp]
theorem coe_mulRight₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulRight₀ c hc) = fun x => x * c :=
@@ -445,7 +445,7 @@ theorem coe_mulRight₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulRight₀ c h
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (α -> α) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => α) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulRight₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c))
Case conversion may be inaccurate. Consider using '#align homeomorph.mul_right₀_symm_apply Homeomorph.mulRight₀_symm_applyₓ'. -/
@[simp]
theorem mulRight₀_symm_apply (c : α) (hc : c ≠ 0) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -411,7 +411,7 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2183 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2183)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀ₓ'. -/
@[simp]
theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
@@ -422,7 +422,7 @@ theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc)
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2233)
Case conversion may be inaccurate. Consider using '#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_applyₓ'. -/
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -411,7 +411,7 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) ((fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 : α) (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2186 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2186) c)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2183 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2183)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀ₓ'. -/
@[simp]
theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
@@ -422,7 +422,7 @@ theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc)
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) ((fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2237 : α) (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2239 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2237 x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2239) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2231)
Case conversion may be inaccurate. Consider using '#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_applyₓ'. -/
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
! This file was ported from Lean 3 source module topology.algebra.group_with_zero
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
+! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -219,6 +219,19 @@ theorem ContinuousOn.inv₀ (hf : ContinuousOn f s) (h0 : ∀ x ∈ s, f x ≠ 0
end Inv₀
+/- warning: units.embedding_coe₀ -> Units.embedding_val₀ is a dubious translation:
+lean 3 declaration is
+ forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MulZeroClass.toHasZero.{u1} G₀ (MulZeroOneClass.toMulZeroClass.{u1} G₀ (MonoidWithZero.toMulZeroOneClass.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))) (DivInvMonoid.toHasInv.{u1} G₀ (GroupWithZero.toDivInvMonoid.{u1} G₀ _inst_1)) _inst_2], Embedding.{u1, u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (Units.topologicalSpace.{u1} G₀ _inst_2 (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (coeBase.{succ u1, succ u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (Units.hasCoe.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))))))
+but is expected to have type
+ forall {G₀ : Type.{u1}} [_inst_1 : GroupWithZero.{u1} G₀] [_inst_2 : TopologicalSpace.{u1} G₀] [_inst_3 : HasContinuousInv₀.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)) (GroupWithZero.toInv.{u1} G₀ _inst_1) _inst_2], Embedding.{u1, u1} (Units.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) G₀ (Units.instTopologicalSpaceUnits.{u1} G₀ _inst_2 (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1))) _inst_2 (Units.val.{u1} G₀ (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_1)))
+Case conversion may be inaccurate. Consider using '#align units.embedding_coe₀ Units.embedding_val₀ₓ'. -/
+/-- If `G₀` is a group with zero with topology such that `x ↦ x⁻¹` is continuous at all nonzero
+points. Then the coercion `Mˣ → M` is a topological embedding. -/
+theorem Units.embedding_val₀ [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] :
+ Embedding (coe : G₀ˣ → G₀) :=
+ Units.embedding_val_mk <| continuousOn_inv₀.mono fun x => IsUnit.ne_zero
+#align units.embedding_coe₀ Units.embedding_val₀
+
/-!
### Continuity of division
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -398,7 +398,7 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) c)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) ((fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2132 : α) (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2134 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2132 x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2134) c)
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc)) ((fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 : α) (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2186 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2184 x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2186) c)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀ₓ'. -/
@[simp]
theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
@@ -409,7 +409,7 @@ theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc)
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2)))))))), Eq.{succ u1} ((fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (coeFn.{succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (fun (_x : Homeomorph.{u1, u1} α α _inst_1 _inst_1) => α -> α) (Homeomorph.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toHasMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (GroupWithZero.toDivInvMonoid.{u1} α _inst_2)) c))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) ((fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2185 : α) (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2187 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2185 x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2187) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c))
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u1} α] [_inst_3 : ContinuousMul.{u1} α _inst_1 (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))] (c : α) (hc : Ne.{succ u1} α c (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))), Eq.{succ u1} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => α) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) α α (Homeomorph.instEquivLikeHomeomorph.{u1, u1} α α _inst_1 _inst_1))) (Homeomorph.symm.{u1, u1} α α _inst_1 _inst_1 (Homeomorph.mulLeft₀.{u1} α _inst_1 _inst_2 _inst_3 c hc))) ((fun (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2237 : α) (x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2239 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulZeroClass.toMul.{u1} α (MulZeroOneClass.toMulZeroClass.{u1} α (MonoidWithZero.toMulZeroOneClass.{u1} α (GroupWithZero.toMonoidWithZero.{u1} α _inst_2))))) x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2237 x._@.Mathlib.Topology.Algebra.GroupWithZero._hyg.2239) (Inv.inv.{u1} α (GroupWithZero.toInv.{u1} α _inst_2) c))
Case conversion may be inaccurate. Consider using '#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_applyₓ'. -/
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
mul
-div
cancellation lemmas (#11530)
Lemma names around cancellation of multiplication and division are a mess.
This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero
lemma name, the Group
lemma, the AddGroup
lemma name).
| Statement | New name | Old name | |
@@ -183,9 +183,9 @@ theorem Filter.tendsto_mul_iff_of_ne_zero [T1Space G₀] {f g : α → G₀} {l
(hg : Tendsto g l (𝓝 y)) (hy : y ≠ 0) :
Tendsto (fun n => f n * g n) l (𝓝 <| x * y) ↔ Tendsto f l (𝓝 x) := by
refine' ⟨fun hfg => _, fun hf => hf.mul hg⟩
- rw [← mul_div_cancel x hy]
+ rw [← mul_div_cancel_right₀ x hy]
refine' Tendsto.congr' _ (hfg.div hg hy)
- exact (hg.eventually_ne hy).mono fun n hn => mul_div_cancel _ hn
+ exact (hg.eventually_ne hy).mono fun n hn => mul_div_cancel_right₀ _ hn
#align filter.tendsto_mul_iff_of_ne_zero Filter.tendsto_mul_iff_of_ne_zero
variable [TopologicalSpace α] [TopologicalSpace β] {s : Set α} {a : α}
zpow_coe_nat
to zpow_natCast
(#11528)
... and add a deprecated alias for the old name. This is mostly just me discovering the power of F2
@@ -342,7 +342,7 @@ variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀]
theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) :
ContinuousAt (fun x => x ^ m) x := by
cases' m with m m
- · simpa only [Int.ofNat_eq_coe, zpow_coe_nat] using continuousAt_pow x m
+ · simpa only [Int.ofNat_eq_coe, zpow_natCast] using continuousAt_pow x m
· simp only [zpow_negSucc]
have hx : x ≠ 0 := h.resolve_right (Int.negSucc_lt_zero m).not_le
exact (continuousAt_pow x (m + 1)).inv₀ (pow_ne_zero _ hx)
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -185,7 +185,7 @@ theorem Filter.tendsto_mul_iff_of_ne_zero [T1Space G₀] {f g : α → G₀} {l
refine' ⟨fun hfg => _, fun hf => hf.mul hg⟩
rw [← mul_div_cancel x hy]
refine' Tendsto.congr' _ (hfg.div hg hy)
- refine' (hg.eventually_ne hy).mono fun n hn => mul_div_cancel _ hn
+ exact (hg.eventually_ne hy).mono fun n hn => mul_div_cancel _ hn
#align filter.tendsto_mul_iff_of_ne_zero Filter.tendsto_mul_iff_of_ne_zero
variable [TopologicalSpace α] [TopologicalSpace β] {s : Set α} {a : α}
Rename
Data.Pi.Algebra
to Algebra.Group.Pi.Basic
Algebra.Group.Pi
to Algebra.Group.Pi.Lemmas
Move a few instances from the latter to the former, the goal being that Algebra.Group.Pi.Basic
is about all the pi instances of the classes defined in Algebra.Group.Defs
. Algebra.Group.Pi.Lemmas
will need further rearranging.
@@ -3,8 +3,8 @@ Copyright (c) 2020 Yury G. Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-/
+import Mathlib.Algebra.Group.Pi.Lemmas
import Mathlib.Topology.Algebra.Monoid
-import Mathlib.Algebra.Group.Pi
import Mathlib.Topology.Homeomorph
#align_import topology.algebra.group_with_zero from "leanprover-community/mathlib"@"c10e724be91096453ee3db13862b9fb9a992fef2"
@@ -123,16 +123,18 @@ nonrec theorem ContinuousWithinAt.inv₀ (hf : ContinuousWithinAt f s a) (ha : f
hf.inv₀ ha
#align continuous_within_at.inv₀ ContinuousWithinAt.inv₀
+@[fun_prop]
nonrec theorem ContinuousAt.inv₀ (hf : ContinuousAt f a) (ha : f a ≠ 0) :
ContinuousAt (fun x => (f x)⁻¹) a :=
hf.inv₀ ha
#align continuous_at.inv₀ ContinuousAt.inv₀
-@[continuity]
+@[continuity, fun_prop]
theorem Continuous.inv₀ (hf : Continuous f) (h0 : ∀ x, f x ≠ 0) : Continuous fun x => (f x)⁻¹ :=
continuous_iff_continuousAt.2 fun x => (hf.tendsto x).inv₀ (h0 x)
#align continuous.inv₀ Continuous.inv₀
+@[fun_prop]
theorem ContinuousOn.inv₀ (hf : ContinuousOn f s) (h0 : ∀ x ∈ s, f x ≠ 0) :
ContinuousOn (fun x => (f x)⁻¹) s := fun x hx => (hf x hx).inv₀ (h0 x hx)
#align continuous_on.inv₀ ContinuousOn.inv₀
@@ -213,6 +215,19 @@ theorem continuousOn_div : ContinuousOn (fun p : G₀ × G₀ => p.1 / p.2) { p
continuousOn_fst.div continuousOn_snd fun _ => id
#align continuous_on_div continuousOn_div
+@[fun_prop]
+theorem Continuous.div₀ (hf : Continuous f) (hg : Continuous g) (h₀ : ∀ x, g x ≠ 0) :
+ Continuous (fun x => f x / g x) :=
+ by simpa only [div_eq_mul_inv] using hf.mul (hg.inv₀ h₀)
+
+@[fun_prop]
+theorem ContinuousAt.div₀ (hf : ContinuousAt f a) (hg : ContinuousAt g a) (h₀ : g a ≠ 0) :
+ ContinuousAt (fun x => f x / g x) a := ContinuousAt.div hf hg h₀
+
+@[fun_prop]
+theorem ContinuousOn.div₀ (hf : ContinuousOn f s) (hg : ContinuousOn g s) (h₀ : ∀ x ∈ s, g x ≠ 0) :
+ ContinuousOn (fun x => f x / g x) s := ContinuousOn.div hf hg h₀
+
/-- The function `f x / g x` is discontinuous when `g x = 0`. However, under appropriate
conditions, `h x (f x / g x)` is still continuous. The condition is that if `g a = 0` then `h x y`
must tend to `h a 0` when `x` tends to `a`, with no information about `y`. This is represented by
@@ -344,6 +359,7 @@ theorem Filter.Tendsto.zpow₀ {f : α → G₀} {l : Filter α} {a : G₀} (hf
variable {X : Type*} [TopologicalSpace X] {a : X} {s : Set X} {f : X → G₀}
+@[fun_prop]
nonrec theorem ContinuousAt.zpow₀ (hf : ContinuousAt f a) (m : ℤ) (h : f a ≠ 0 ∨ 0 ≤ m) :
ContinuousAt (fun x => f x ^ m) a :=
hf.zpow₀ m h
@@ -354,11 +370,12 @@ nonrec theorem ContinuousWithinAt.zpow₀ (hf : ContinuousWithinAt f s a) (m :
hf.zpow₀ m h
#align continuous_within_at.zpow₀ ContinuousWithinAt.zpow₀
+@[fun_prop]
theorem ContinuousOn.zpow₀ (hf : ContinuousOn f s) (m : ℤ) (h : ∀ a ∈ s, f a ≠ 0 ∨ 0 ≤ m) :
ContinuousOn (fun x => f x ^ m) s := fun a ha => (hf a ha).zpow₀ m (h a ha)
#align continuous_on.zpow₀ ContinuousOn.zpow₀
-@[continuity]
+@[continuity, fun_prop]
theorem Continuous.zpow₀ (hf : Continuous f) (m : ℤ) (h0 : ∀ a, f a ≠ 0 ∨ 0 ≤ m) :
Continuous fun x => f x ^ m :=
continuous_iff_continuousAt.2 fun x => (hf.tendsto x).zpow₀ m (h0 x)
@@ -143,7 +143,7 @@ end Inv₀
points. Then the coercion `G₀ˣ → G₀` is a topological embedding. -/
theorem Units.embedding_val₀ [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] :
Embedding (val : G₀ˣ → G₀) :=
- embedding_val_mk <| (continuousOn_inv₀ (G₀ := G₀)).mono <| fun _ ↦ IsUnit.ne_zero
+ embedding_val_mk <| (continuousOn_inv₀ (G₀ := G₀)).mono fun _ ↦ IsUnit.ne_zero
#align units.embedding_coe₀ Units.embedding_val₀
section NhdsInv
Nsmul
-> NSMul
, Zpow
-> ZPow
, etc (#9067)
Normalising to naming convention rule number 6.
@@ -320,7 +320,7 @@ theorem HasContinuousInv₀.of_nhds_one (h : Tendsto Inv.inv (𝓝 (1 : G₀)) (
end map_comap
-section Zpow
+section ZPow
variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] [ContinuousMul G₀]
@@ -364,4 +364,4 @@ theorem Continuous.zpow₀ (hf : Continuous f) (m : ℤ) (h0 : ∀ a, f a ≠ 0
continuous_iff_continuousAt.2 fun x => (hf.tendsto x).zpow₀ m (h0 x)
#align continuous.zpow₀ Continuous.zpow₀
-end Zpow
+end ZPow
@@ -146,6 +146,20 @@ theorem Units.embedding_val₀ [GroupWithZero G₀] [TopologicalSpace G₀] [Has
embedding_val_mk <| (continuousOn_inv₀ (G₀ := G₀)).mono <| fun _ ↦ IsUnit.ne_zero
#align units.embedding_coe₀ Units.embedding_val₀
+section NhdsInv
+
+variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] {x : G₀}
+
+lemma nhds_inv₀ (hx : x ≠ 0) : 𝓝 x⁻¹ = (𝓝 x)⁻¹ := by
+ refine le_antisymm (inv_le_iff_le_inv.1 ?_) (tendsto_inv₀ hx)
+ simpa only [inv_inv] using tendsto_inv₀ (inv_ne_zero hx)
+
+lemma tendsto_inv_iff₀ {l : Filter α} {f : α → G₀} (hx : x ≠ 0) :
+ Tendsto (fun x ↦ (f x)⁻¹) l (𝓝 x⁻¹) ↔ Tendsto f l (𝓝 x) := by
+ simp only [nhds_inv₀ hx, ← Filter.comap_inv, tendsto_comap_iff, (· ∘ ·), inv_inv]
+
+end NhdsInv
+
/-!
### Continuity of division
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -42,7 +42,7 @@ operations on `Filter.Tendsto`, `ContinuousAt`, `ContinuousWithinAt`, `Continuou
-/
-variable {α β G₀ : Type _}
+variable {α β G₀ : Type*}
section DivConst
@@ -80,7 +80,7 @@ end DivConst
/-- A type with `0` and `Inv` such that `fun x ↦ x⁻¹` is continuous at all nonzero points. Any
normed (semi)field has this property. -/
-class HasContinuousInv₀ (G₀ : Type _) [Zero G₀] [Inv G₀] [TopologicalSpace G₀] : Prop where
+class HasContinuousInv₀ (G₀ : Type*) [Zero G₀] [Inv G₀] [TopologicalSpace G₀] : Prop where
/-- The map `fun x ↦ x⁻¹` is continuous at all nonzero points. -/
continuousAt_inv₀ : ∀ ⦃x : G₀⦄, x ≠ 0 → ContinuousAt Inv.inv x
#align has_continuous_inv₀ HasContinuousInv₀
@@ -328,7 +328,7 @@ theorem Filter.Tendsto.zpow₀ {f : α → G₀} {l : Filter α} {a : G₀} (hf
(continuousAt_zpow₀ _ m h).tendsto.comp hf
#align filter.tendsto.zpow₀ Filter.Tendsto.zpow₀
-variable {X : Type _} [TopologicalSpace X] {a : X} {s : Set X} {f : X → G₀}
+variable {X : Type*} [TopologicalSpace X] {a : X} {s : Set X} {f : X → G₀}
nonrec theorem ContinuousAt.zpow₀ (hf : ContinuousAt f a) (m : ℤ) (h : f a ≠ 0 ∨ 0 ≤ m) :
ContinuousAt (fun x => f x ^ m) a :=
@@ -2,16 +2,13 @@
Copyright (c) 2020 Yury G. Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module topology.algebra.group_with_zero
-! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Algebra.Monoid
import Mathlib.Algebra.Group.Pi
import Mathlib.Topology.Homeomorph
+#align_import topology.algebra.group_with_zero from "leanprover-community/mathlib"@"c10e724be91096453ee3db13862b9fb9a992fef2"
+
/-!
# Topological group with zero
@@ -107,7 +107,7 @@ theorem tendsto_inv₀ {x : G₀} (hx : x ≠ 0) : Tendsto Inv.inv (𝓝 x) (
continuousAt_inv₀ hx
#align tendsto_inv₀ tendsto_inv₀
-theorem continuousOn_inv₀ : ContinuousOn (Inv.inv : G₀ → G₀) ({0}ᶜ) := fun _x hx =>
+theorem continuousOn_inv₀ : ContinuousOn (Inv.inv : G₀ → G₀) {0}ᶜ := fun _x hx =>
(continuousAt_inv₀ hx).continuousWithinAt
#align continuous_on_inv₀ continuousOn_inv₀
@@ -322,7 +322,7 @@ theorem continuousAt_zpow₀ (x : G₀) (m : ℤ) (h : x ≠ 0 ∨ 0 ≤ m) :
exact (continuousAt_pow x (m + 1)).inv₀ (pow_ne_zero _ hx)
#align continuous_at_zpow₀ continuousAt_zpow₀
-theorem continuousOn_zpow₀ (m : ℤ) : ContinuousOn (fun x : G₀ => x ^ m) ({0}ᶜ) := fun _x hx =>
+theorem continuousOn_zpow₀ (m : ℤ) : ContinuousOn (fun x : G₀ => x ^ m) {0}ᶜ := fun _x hx =>
(continuousAt_zpow₀ _ _ (Or.inl hx)).continuousWithinAt
#align continuous_on_zpow₀ continuousOn_zpow₀
@@ -98,7 +98,7 @@ variable [Zero G₀] [Inv G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G
/-!
### Continuity of `fun x ↦ x⁻¹` at a non-zero point
-We define `HasContinuousinv₀` to be a `GroupWithZero` such that the operation `x ↦ x⁻¹`
+We define `HasContinuousInv₀` to be a `GroupWithZero` such that the operation `x ↦ x⁻¹`
is continuous at all nonzero points. In this section we prove dot-style `*.inv₀` lemmas for
`Filter.Tendsto`, `ContinuousAt`, `ContinuousWithinAt`, `ContinuousOn`, and `Continuous`.
-/
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>
@@ -209,7 +209,7 @@ the `⊤` filter. Note: `tendsto_prod_top_iff` characterizes this convergence i
also `Filter.prod_top` and `Filter.mem_prod_top`. -/
theorem ContinuousAt.comp_div_cases {f g : α → G₀} (h : α → G₀ → β) (hf : ContinuousAt f a)
(hg : ContinuousAt g a) (hh : g a ≠ 0 → ContinuousAt (↿h) (a, f a / g a))
- (h2h : g a = 0 → Tendsto (↿h) (𝓝 a ×ᶠ ⊤) (𝓝 (h a 0))) :
+ (h2h : g a = 0 → Tendsto (↿h) (𝓝 a ×ˢ ⊤) (𝓝 (h a 0))) :
ContinuousAt (fun x => h x (f x / g x)) a := by
show ContinuousAt (↿h ∘ fun x => (x, f x / g x)) a
by_cases hga : g a = 0
@@ -223,7 +223,7 @@ theorem ContinuousAt.comp_div_cases {f g : α → G₀} (h : α → G₀ → β)
`0`. See docstring of `ContinuousAt.comp_div_cases`. -/
theorem Continuous.comp_div_cases {f g : α → G₀} (h : α → G₀ → β) (hf : Continuous f)
(hg : Continuous g) (hh : ∀ a, g a ≠ 0 → ContinuousAt (↿h) (a, f a / g a))
- (h2h : ∀ a, g a = 0 → Tendsto (↿h) (𝓝 a ×ᶠ ⊤) (𝓝 (h a 0))) :
+ (h2h : ∀ a, g a = 0 → Tendsto (↿h) (𝓝 a ×ˢ ⊤) (𝓝 (h a 0))) :
Continuous fun x => h x (f x / g x) :=
continuous_iff_continuousAt.mpr fun a =>
hf.continuousAt.comp_div_cases _ hg.continuousAt (hh a) (h2h a)
I made substantial changes to the proofs. To avoid backporting most of them, in leanprover-community/mathlib#18552 I add private
to lemmas that are deleted in this PR. Also, I backport Homeomorph.symm_symm
in leanprover-community/mathlib#18551
@@ -255,29 +255,60 @@ protected def mulRight₀ (c : α) (hc : c ≠ 0) : α ≃ₜ α :=
#align homeomorph.mul_right₀ Homeomorph.mulRight₀
@[simp]
-theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (· * ·) c :=
+theorem coe_mulLeft₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulLeft₀ c hc) = (c * ·) :=
rfl
#align homeomorph.coe_mul_left₀ Homeomorph.coe_mulLeft₀
@[simp]
theorem mulLeft₀_symm_apply (c : α) (hc : c ≠ 0) :
- ((Homeomorph.mulLeft₀ c hc).symm : α → α) = (· * ·) c⁻¹ :=
+ ((Homeomorph.mulLeft₀ c hc).symm : α → α) = (c⁻¹ * ·) :=
rfl
#align homeomorph.mul_left₀_symm_apply Homeomorph.mulLeft₀_symm_apply
@[simp]
-theorem coe_mulRight₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulRight₀ c hc) = fun x => x * c :=
+theorem coe_mulRight₀ (c : α) (hc : c ≠ 0) : ⇑(Homeomorph.mulRight₀ c hc) = (· * c) :=
rfl
#align homeomorph.coe_mul_right₀ Homeomorph.coe_mulRight₀
@[simp]
theorem mulRight₀_symm_apply (c : α) (hc : c ≠ 0) :
- ((Homeomorph.mulRight₀ c hc).symm : α → α) = fun x => x * c⁻¹ :=
+ ((Homeomorph.mulRight₀ c hc).symm : α → α) = (· * c⁻¹) :=
rfl
#align homeomorph.mul_right₀_symm_apply Homeomorph.mulRight₀_symm_apply
end Homeomorph
+section map_comap
+
+variable [TopologicalSpace G₀] [GroupWithZero G₀] [ContinuousMul G₀] {a : G₀}
+
+theorem map_mul_left_nhds₀ (ha : a ≠ 0) (b : G₀) : map (a * ·) (𝓝 b) = 𝓝 (a * b) :=
+ (Homeomorph.mulLeft₀ a ha).map_nhds_eq b
+
+theorem map_mul_left_nhds_one₀ (ha : a ≠ 0) : map (a * ·) (𝓝 1) = 𝓝 (a) := by
+ rw [map_mul_left_nhds₀ ha, mul_one]
+
+theorem map_mul_right_nhds₀ (ha : a ≠ 0) (b : G₀) : map (· * a) (𝓝 b) = 𝓝 (b * a) :=
+ (Homeomorph.mulRight₀ a ha).map_nhds_eq b
+
+theorem map_mul_right_nhds_one₀ (ha : a ≠ 0) : map (· * a) (𝓝 1) = 𝓝 (a) := by
+ rw [map_mul_right_nhds₀ ha, one_mul]
+
+theorem nhds_translation_mul_inv₀ (ha : a ≠ 0) : comap (· * a⁻¹) (𝓝 1) = 𝓝 a :=
+ ((Homeomorph.mulRight₀ a ha).symm.comap_nhds_eq 1).trans <| by simp
+
+/-- If a group with zero has continuous multiplication and `fun x ↦ x⁻¹` is continuous at one,
+then it is continuous at any unit. -/
+theorem HasContinuousInv₀.of_nhds_one (h : Tendsto Inv.inv (𝓝 (1 : G₀)) (𝓝 1)) :
+ HasContinuousInv₀ G₀ where
+ continuousAt_inv₀ x hx := by
+ have hx' := inv_ne_zero hx
+ rw [ContinuousAt, ← map_mul_left_nhds_one₀ hx, ← nhds_translation_mul_inv₀ hx',
+ tendsto_map'_iff, tendsto_comap_iff]
+ simpa only [(· ∘ ·), mul_inv_rev, mul_inv_cancel_right₀ hx']
+
+end map_comap
+
section Zpow
variable [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] [ContinuousMul G₀]
units.embedding_val₀
(#2590)
Forward-port #18536
group_theory.subgroup.basic
@1f0096e6caa61e9c849ec2adbd227e960e9dff58
..c10e724be91096453ee3db13862b9fb9a992fef2
group_theory.subgroup.pointwise
@59694bd07f0a39c5beccba34bd9f413a160782bf
..c10e724be91096453ee3db13862b9fb9a992fef2
topology.algebra.constructions
@d90e4e186f1d18e375dcd4e5b5f6364b01cb3e46
..c10e724be91096453ee3db13862b9fb9a992fef2
topology.algebra.group.basic
@dc6c365e751e34d100e80fe6e314c3c3e0fd2988
..c10e724be91096453ee3db13862b9fb9a992fef2
topology.algebra.group_with_zero
@48085f140e684306f9e7da907cd5932056d1aded
..c10e724be91096453ee3db13862b9fb9a992fef2
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
! This file was ported from Lean 3 source module topology.algebra.group_with_zero
-! leanprover-community/mathlib commit 48085f140e684306f9e7da907cd5932056d1aded
+! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -142,6 +142,13 @@ theorem ContinuousOn.inv₀ (hf : ContinuousOn f s) (h0 : ∀ x ∈ s, f x ≠ 0
end Inv₀
+/-- If `G₀` is a group with zero with topology such that `x ↦ x⁻¹` is continuous at all nonzero
+points. Then the coercion `G₀ˣ → G₀` is a topological embedding. -/
+theorem Units.embedding_val₀ [GroupWithZero G₀] [TopologicalSpace G₀] [HasContinuousInv₀ G₀] :
+ Embedding (val : G₀ˣ → G₀) :=
+ embedding_val_mk <| (continuousOn_inv₀ (G₀ := G₀)).mono <| fun _ ↦ IsUnit.ne_zero
+#align units.embedding_coe₀ Units.embedding_val₀
+
/-!
### Continuity of division
The unported dependencies are