topology.algebra.field
⟷
Mathlib.Topology.Algebra.Field
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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -5,7 +5,7 @@ Authors: Patrick Massot, Scott Morrison
-/
import Topology.Algebra.Ring.Basic
import Topology.Algebra.GroupWithZero
-import Topology.LocalExtr
+import Topology.Order.LocalExtr
import FieldTheory.Subfield
#align_import topology.algebra.field from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
@@ -112,8 +112,8 @@ def affineHomeomorph (a b : 𝕜) (h : a ≠ 0) : 𝕜 ≃ₜ 𝕜
where
toFun x := a * x + b
invFun y := (y - b) / a
- left_inv x := by simp only [add_sub_cancel]; exact mul_div_cancel_left x h
- right_inv y := by simp [mul_div_cancel' _ h]
+ left_inv x := by simp only [add_sub_cancel_right]; exact mul_div_cancel_left₀ x h
+ right_inv y := by simp [mul_div_cancel₀ _ h]
#align affine_homeomorph affineHomeomorph
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -151,12 +151,12 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
(hS : IsPreconnected S) (hf : ContinuousOn f S) (hsq : EqOn (f ^ 2) 1 S) :
EqOn f 1 S ∨ EqOn f (-1) S :=
by
- simp_rw [eq_on, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] at hsq
+ simp_rw [eq_on, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] at hsq
-- First deal with crazy case where `S` is empty.
by_cases hSe : ∀ x : α, x ∉ S
· left; intro x hx
exfalso; exact hSe x hx
- push_neg at hSe
+ push_neg at hSe
choose y hy using hSe
suffices ∀ x : α, x ∈ S → f x = f y by
rcases hsq hy with ⟨⟩
@@ -185,7 +185,7 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
exact h hx
· refine' Or.inr fun x hx => _
specialize h hx
- rwa [Pi.div_apply, Pi.neg_apply, Pi.one_apply, div_eq_iff (hg_ne hx), neg_one_mul] at h
+ rwa [Pi.div_apply, Pi.neg_apply, Pi.one_apply, div_eq_iff (hg_ne hx), neg_one_mul] at h
· rw [Pi.one_apply, div_pow, Pi.div_apply, hsq hx, div_self]
exact pow_ne_zero _ (hg_ne hx)
#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eq
@@ -203,7 +203,7 @@ theorem IsPreconnected.eq_of_sq_eq [Field 𝕜] [HasContinuousInv₀ 𝕜] [Cont
rcases hS.eq_or_eq_neg_of_sq_eq hf hg @hsq @hg_ne with (h | h)
· exact h hx
· rw [h hy, eq_comm, ← sub_eq_zero, sub_eq_add_neg, Pi.neg_apply, neg_neg, ← mul_two,
- mul_eq_zero] at hy'
+ mul_eq_zero] at hy'
cases hy'
-- need to handle case of `char 𝕜 = 2` separately
· exfalso; exact hg_ne hy hy'
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2021 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Scott Morrison
-/
-import Mathbin.Topology.Algebra.Ring.Basic
-import Mathbin.Topology.Algebra.GroupWithZero
-import Mathbin.Topology.LocalExtr
-import Mathbin.FieldTheory.Subfield
+import Topology.Algebra.Ring.Basic
+import Topology.Algebra.GroupWithZero
+import Topology.LocalExtr
+import FieldTheory.Subfield
#align_import topology.algebra.field from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2021 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Scott Morrison
-
-! This file was ported from Lean 3 source module topology.algebra.field
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Algebra.Ring.Basic
import Mathbin.Topology.Algebra.GroupWithZero
import Mathbin.Topology.LocalExtr
import Mathbin.FieldTheory.Subfield
+#align_import topology.algebra.field from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
/-!
# Topological fields
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -27,19 +27,23 @@ non-zero element.
variable {K : Type _} [DivisionRing K] [TopologicalSpace K]
+#print Filter.tendsto_cocompact_mul_left₀ /-
/-- Left-multiplication by a nonzero element of a topological division ring is proper, i.e.,
inverse images of compact sets are compact. -/
theorem Filter.tendsto_cocompact_mul_left₀ [ContinuousMul K] {a : K} (ha : a ≠ 0) :
Filter.Tendsto (fun x : K => a * x) (Filter.cocompact K) (Filter.cocompact K) :=
Filter.tendsto_cocompact_mul_left (inv_mul_cancel ha)
#align filter.tendsto_cocompact_mul_left₀ Filter.tendsto_cocompact_mul_left₀
+-/
+#print Filter.tendsto_cocompact_mul_right₀ /-
/-- Right-multiplication by a nonzero element of a topological division ring is proper, i.e.,
inverse images of compact sets are compact. -/
theorem Filter.tendsto_cocompact_mul_right₀ [ContinuousMul K] {a : K} (ha : a ≠ 0) :
Filter.Tendsto (fun x : K => x * a) (Filter.cocompact K) (Filter.cocompact K) :=
Filter.tendsto_cocompact_mul_right (mul_inv_cancel ha)
#align filter.tendsto_cocompact_mul_right₀ Filter.tendsto_cocompact_mul_right₀
+-/
variable (K)
@@ -69,19 +73,25 @@ def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
#align subfield.topological_closure Subfield.topologicalClosure
-/
+#print Subfield.le_topologicalClosure /-
theorem Subfield.le_topologicalClosure (s : Subfield α) : s ≤ s.topologicalClosure :=
subset_closure
#align subfield.le_topological_closure Subfield.le_topologicalClosure
+-/
+#print Subfield.isClosed_topologicalClosure /-
theorem Subfield.isClosed_topologicalClosure (s : Subfield α) :
IsClosed (s.topologicalClosure : Set α) :=
isClosed_closure
#align subfield.is_closed_topological_closure Subfield.isClosed_topologicalClosure
+-/
+#print Subfield.topologicalClosure_minimal /-
theorem Subfield.topologicalClosure_minimal (s : Subfield α) {t : Subfield α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
#align subfield.topological_closure_minimal Subfield.topologicalClosure_minimal
+-/
end Subfield
@@ -96,6 +106,7 @@ happens to be a field is enough.
variable {𝕜 : Type _} [Field 𝕜] [TopologicalSpace 𝕜] [TopologicalRing 𝕜]
+#print affineHomeomorph /-
/--
The map `λ x, a * x + b`, as a homeomorphism from `𝕜` (a topological field) to itself, when `a ≠ 0`.
-/
@@ -107,6 +118,7 @@ def affineHomeomorph (a b : 𝕜) (h : a ≠ 0) : 𝕜 ≃ₜ 𝕜
left_inv x := by simp only [add_sub_cancel]; exact mul_div_cancel_left x h
right_inv y := by simp [mul_div_cancel' _ h]
#align affine_homeomorph affineHomeomorph
+-/
end affineHomeomorph
@@ -116,10 +128,12 @@ variable {α β : Type _} [TopologicalSpace α] [LinearOrderedSemifield β] {a :
open scoped Topology
+#print IsLocalMin.inv /-
theorem IsLocalMin.inv {f : α → β} {a : α} (h1 : IsLocalMin f a) (h2 : ∀ᶠ z in 𝓝 a, 0 < f z) :
IsLocalMax f⁻¹ a := by
filter_upwards [h1, h2] with z h3 h4 using (inv_le_inv h4 h2.self_of_nhds).mpr h3
#align is_local_min.inv IsLocalMin.inv
+-/
end LocalExtr
@@ -133,6 +147,7 @@ open Set
variable {α 𝕜 : Type _} {f g : α → 𝕜} {S : Set α} [TopologicalSpace α] [TopologicalSpace 𝕜]
[T1Space 𝕜]
+#print IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq /-
/-- If `f` is a function `α → 𝕜` which is continuous on a preconnected set `S`, and
`f ^ 2 = 1` on `S`, then either `f = 1` on `S`, or `f = -1` on `S`. -/
theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors 𝕜]
@@ -155,7 +170,9 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
· exact mem_insert_iff.mpr (hsq hz).symm
exact discrete_of_t1_of_finite
#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq
+-/
+#print IsPreconnected.eq_or_eq_neg_of_sq_eq /-
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then either `f = g` or `f = -g` on
`S`. -/
@@ -175,7 +192,9 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
· rw [Pi.one_apply, div_pow, Pi.div_apply, hsq hx, div_self]
exact pow_ne_zero _ (hg_ne hx)
#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eq
+-/
+#print IsPreconnected.eq_of_sq_eq /-
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then as soon as `f = g` holds at
one point of `S` it holds for all points. -/
@@ -195,6 +214,7 @@ theorem IsPreconnected.eq_of_sq_eq [Field 𝕜] [HasContinuousInv₀ 𝕜] [Cont
rw [h hx, Pi.neg_apply, eq_comm, ← sub_eq_zero, sub_eq_add_neg, neg_neg, ← mul_two, hy',
MulZeroClass.mul_zero]
#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eq
+-/
end Preconnected
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -118,7 +118,7 @@ open scoped Topology
theorem IsLocalMin.inv {f : α → β} {a : α} (h1 : IsLocalMin f a) (h2 : ∀ᶠ z in 𝓝 a, 0 < f z) :
IsLocalMax f⁻¹ a := by
- filter_upwards [h1, h2]with z h3 h4 using(inv_le_inv h4 h2.self_of_nhds).mpr h3
+ filter_upwards [h1, h2] with z h3 h4 using (inv_le_inv h4 h2.self_of_nhds).mpr h3
#align is_local_min.inv IsLocalMin.inv
end LocalExtr
@@ -144,7 +144,7 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
by_cases hSe : ∀ x : α, x ∉ S
· left; intro x hx
exfalso; exact hSe x hx
- push_neg at hSe
+ push_neg at hSe
choose y hy using hSe
suffices ∀ x : α, x ∈ S → f x = f y by
rcases hsq hy with ⟨⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -139,12 +139,12 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
(hS : IsPreconnected S) (hf : ContinuousOn f S) (hsq : EqOn (f ^ 2) 1 S) :
EqOn f 1 S ∨ EqOn f (-1) S :=
by
- simp_rw [eq_on, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] at hsq
+ simp_rw [eq_on, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] at hsq
-- First deal with crazy case where `S` is empty.
by_cases hSe : ∀ x : α, x ∉ S
· left; intro x hx
exfalso; exact hSe x hx
- push_neg at hSe
+ push_neg at hSe
choose y hy using hSe
suffices ∀ x : α, x ∈ S → f x = f y by
rcases hsq hy with ⟨⟩
@@ -171,7 +171,7 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
exact h hx
· refine' Or.inr fun x hx => _
specialize h hx
- rwa [Pi.div_apply, Pi.neg_apply, Pi.one_apply, div_eq_iff (hg_ne hx), neg_one_mul] at h
+ rwa [Pi.div_apply, Pi.neg_apply, Pi.one_apply, div_eq_iff (hg_ne hx), neg_one_mul] at h
· rw [Pi.one_apply, div_pow, Pi.div_apply, hsq hx, div_self]
exact pow_ne_zero _ (hg_ne hx)
#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eq
@@ -187,7 +187,7 @@ theorem IsPreconnected.eq_of_sq_eq [Field 𝕜] [HasContinuousInv₀ 𝕜] [Cont
rcases hS.eq_or_eq_neg_of_sq_eq hf hg @hsq @hg_ne with (h | h)
· exact h hx
· rw [h hy, eq_comm, ← sub_eq_zero, sub_eq_add_neg, Pi.neg_apply, neg_neg, ← mul_two,
- mul_eq_zero] at hy'
+ mul_eq_zero] at hy'
cases hy'
-- need to handle case of `char 𝕜 = 2` separately
· exfalso; exact hg_ne hy hy'
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -114,7 +114,7 @@ section LocalExtr
variable {α β : Type _} [TopologicalSpace α] [LinearOrderedSemifield β] {a : α}
-open Topology
+open scoped Topology
theorem IsLocalMin.inv {f : α → β} {a : α} (h1 : IsLocalMin f a) (h2 : ∀ᶠ z in 𝓝 a, 0 < f z) :
IsLocalMax f⁻¹ a := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -27,12 +27,6 @@ non-zero element.
variable {K : Type _} [DivisionRing K] [TopologicalSpace K]
-/- warning: filter.tendsto_cocompact_mul_left₀ -> Filter.tendsto_cocompact_mul_left₀ is a dubious translation:
-lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) a x) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
-but is expected to have type
- forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (MonoidWithZero.toZero.{u1} K (Semiring.toMonoidWithZero.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) a x) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto_cocompact_mul_left₀ Filter.tendsto_cocompact_mul_left₀ₓ'. -/
/-- Left-multiplication by a nonzero element of a topological division ring is proper, i.e.,
inverse images of compact sets are compact. -/
theorem Filter.tendsto_cocompact_mul_left₀ [ContinuousMul K] {a : K} (ha : a ≠ 0) :
@@ -40,12 +34,6 @@ theorem Filter.tendsto_cocompact_mul_left₀ [ContinuousMul K] {a : K} (ha : a
Filter.tendsto_cocompact_mul_left (inv_mul_cancel ha)
#align filter.tendsto_cocompact_mul_left₀ Filter.tendsto_cocompact_mul_left₀
-/- warning: filter.tendsto_cocompact_mul_right₀ -> Filter.tendsto_cocompact_mul_right₀ is a dubious translation:
-lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) x a) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
-but is expected to have type
- forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (MonoidWithZero.toZero.{u1} K (Semiring.toMonoidWithZero.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) x a) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto_cocompact_mul_right₀ Filter.tendsto_cocompact_mul_right₀ₓ'. -/
/-- Right-multiplication by a nonzero element of a topological division ring is proper, i.e.,
inverse images of compact sets are compact. -/
theorem Filter.tendsto_cocompact_mul_right₀ [ContinuousMul K] {a : K} (ha : a ≠ 0) :
@@ -81,33 +69,15 @@ def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
#align subfield.topological_closure Subfield.topologicalClosure
-/
-/- warning: subfield.le_topological_closure -> Subfield.le_topologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toHasLe.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) s (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s)
-Case conversion may be inaccurate. Consider using '#align subfield.le_topological_closure Subfield.le_topologicalClosureₓ'. -/
theorem Subfield.le_topologicalClosure (s : Subfield α) : s ≤ s.topologicalClosure :=
subset_closure
#align subfield.le_topological_closure Subfield.le_topologicalClosure
-/- warning: subfield.is_closed_topological_closure -> Subfield.isClosed_topologicalClosure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), IsClosed.{u1} α _inst_4 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subfield.{u1} α _inst_3) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), IsClosed.{u1} α _inst_4 (SetLike.coe.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.instSetLikeSubfield.{u1} α _inst_3) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s))
-Case conversion may be inaccurate. Consider using '#align subfield.is_closed_topological_closure Subfield.isClosed_topologicalClosureₓ'. -/
theorem Subfield.isClosed_topologicalClosure (s : Subfield α) :
IsClosed (s.topologicalClosure : Set α) :=
isClosed_closure
#align subfield.is_closed_topological_closure Subfield.isClosed_topologicalClosure
-/- warning: subfield.topological_closure_minimal -> Subfield.topologicalClosure_minimal is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3) {t : Subfield.{u1} α _inst_3}, (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toHasLe.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s t) -> (IsClosed.{u1} α _inst_4 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subfield.{u1} α _inst_3) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) t)) -> (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toHasLe.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s) t)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3) {t : Subfield.{u1} α _inst_3}, (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) s t) -> (IsClosed.{u1} α _inst_4 (SetLike.coe.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.instSetLikeSubfield.{u1} α _inst_3) t)) -> (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s) t)
-Case conversion may be inaccurate. Consider using '#align subfield.topological_closure_minimal Subfield.topologicalClosure_minimalₓ'. -/
theorem Subfield.topologicalClosure_minimal (s : Subfield α) {t : Subfield α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
@@ -126,12 +96,6 @@ happens to be a field is enough.
variable {𝕜 : Type _} [Field 𝕜] [TopologicalSpace 𝕜] [TopologicalRing 𝕜]
-/- warning: affine_homeomorph -> affineHomeomorph is a dubious translation:
-lean 3 declaration is
- forall {𝕜 : Type.{u1}} [_inst_3 : Field.{u1} 𝕜] [_inst_4 : TopologicalSpace.{u1} 𝕜] [_inst_5 : TopologicalRing.{u1} 𝕜 _inst_4 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 _inst_3))))] (a : 𝕜), 𝕜 -> (Ne.{succ u1} 𝕜 a (OfNat.ofNat.{u1} 𝕜 0 (OfNat.mk.{u1} 𝕜 0 (Zero.zero.{u1} 𝕜 (MulZeroClass.toHasZero.{u1} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 _inst_3))))))))))) -> (Homeomorph.{u1, u1} 𝕜 𝕜 _inst_4 _inst_4)
-but is expected to have type
- forall {𝕜 : Type.{u1}} [_inst_3 : Field.{u1} 𝕜] [_inst_4 : TopologicalSpace.{u1} 𝕜] [_inst_5 : TopologicalRing.{u1} 𝕜 _inst_4 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 _inst_3))))] (a : 𝕜), 𝕜 -> (Ne.{succ u1} 𝕜 a (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 _inst_3))))))) -> (Homeomorph.{u1, u1} 𝕜 𝕜 _inst_4 _inst_4)
-Case conversion may be inaccurate. Consider using '#align affine_homeomorph affineHomeomorphₓ'. -/
/--
The map `λ x, a * x + b`, as a homeomorphism from `𝕜` (a topological field) to itself, when `a ≠ 0`.
-/
@@ -152,12 +116,6 @@ variable {α β : Type _} [TopologicalSpace α] [LinearOrderedSemifield β] {a :
open Topology
-/- warning: is_local_min.inv -> IsLocalMin.inv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LinearOrderedSemifield.{u2} β] {f : α -> β} {a : α}, (IsLocalMin.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) f a) -> (Filter.Eventually.{u1} α (fun (z : α) => LT.lt.{u2} β (Preorder.toHasLt.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (MulZeroClass.toHasZero.{u2} β (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β (DivisionSemiring.toSemiring.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))))))) (f z)) (nhds.{u1} α _inst_3 a)) -> (IsLocalMax.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) (Inv.inv.{max u1 u2} (α -> β) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => DivInvMonoid.toHasInv.{u2} β (GroupWithZero.toDivInvMonoid.{u2} β (DivisionSemiring.toGroupWithZero.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))) f) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LinearOrderedSemifield.{u1} β] {f : α -> β} {a : α}, (IsLocalMin.{u2, u1} α β _inst_3 (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4))))) f a) -> (Filter.Eventually.{u2} α (fun (z : α) => LT.lt.{u1} β (Preorder.toLT.{u1} β (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4)))))) (OfNat.ofNat.{u1} β 0 (Zero.toOfNat0.{u1} β (CommMonoidWithZero.toZero.{u1} β (CommGroupWithZero.toCommMonoidWithZero.{u1} β (Semifield.toCommGroupWithZero.{u1} β (LinearOrderedSemifield.toSemifield.{u1} β _inst_4)))))) (f z)) (nhds.{u2} α _inst_3 a)) -> (IsLocalMax.{u2, u1} α β _inst_3 (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4))))) (Inv.inv.{max u1 u2} (α -> β) (Pi.instInv.{u2, u1} α (fun (ᾰ : α) => β) (fun (i : α) => LinearOrderedSemifield.toInv.{u1} β _inst_4)) f) a)
-Case conversion may be inaccurate. Consider using '#align is_local_min.inv IsLocalMin.invₓ'. -/
theorem IsLocalMin.inv {f : α → β} {a : α} (h1 : IsLocalMin f a) (h2 : ∀ᶠ z in 𝓝 a, 0 < f z) :
IsLocalMax f⁻¹ a := by
filter_upwards [h1, h2]with z h3 h4 using(inv_le_inv h4 h2.self_of_nhds).mpr h3
@@ -175,12 +133,6 @@ open Set
variable {α 𝕜 : Type _} {f g : α → 𝕜} {S : Set α} [TopologicalSpace α] [TopologicalSpace 𝕜]
[T1Space 𝕜]
-/- warning: is_preconnected.eq_one_or_eq_neg_one_of_sq_eq -> IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 _inst_6)) (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 _inst_6)))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6))))))))) S))
-but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))) (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.744 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (OfNat.ofNat.{max u2 u1} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => Semiring.toOne.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => Semiring.toOne.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 _inst_6)) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => Semiring.toOne.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) S))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eqₓ'. -/
/-- If `f` is a function `α → 𝕜` which is continuous on a preconnected set `S`, and
`f ^ 2 = 1` on `S`, then either `f = 1` on `S`, or `f = -1` on `S`. -/
theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors 𝕜]
@@ -204,9 +156,6 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
exact discrete_of_t1_of_finite
#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq
-/- warning: is_preconnected.eq_or_eq_neg_of_sq_eq -> IsPreconnected.eq_or_eq_neg_of_sq_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then either `f = g` or `f = -g` on
`S`. -/
@@ -227,9 +176,6 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
exact pow_ne_zero _ (hg_ne hx)
#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eq
-/- warning: is_preconnected.eq_of_sq_eq -> IsPreconnected.eq_of_sq_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then as soon as `f = g` holds at
one point of `S` it holds for all points. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -140,9 +140,7 @@ def affineHomeomorph (a b : 𝕜) (h : a ≠ 0) : 𝕜 ≃ₜ 𝕜
where
toFun x := a * x + b
invFun y := (y - b) / a
- left_inv x := by
- simp only [add_sub_cancel]
- exact mul_div_cancel_left x h
+ left_inv x := by simp only [add_sub_cancel]; exact mul_div_cancel_left x h
right_inv y := by simp [mul_div_cancel' _ h]
#align affine_homeomorph affineHomeomorph
@@ -192,22 +190,14 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
simp_rw [eq_on, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] at hsq
-- First deal with crazy case where `S` is empty.
by_cases hSe : ∀ x : α, x ∉ S
- · left
- intro x hx
- exfalso
- exact hSe x hx
+ · left; intro x hx
+ exfalso; exact hSe x hx
push_neg at hSe
choose y hy using hSe
suffices ∀ x : α, x ∈ S → f x = f y by
rcases hsq hy with ⟨⟩
- · left
- intro z hz
- rw [Pi.one_apply z, ← h]
- exact this z hz
- · right
- intro z hz
- rw [Pi.neg_apply, Pi.one_apply, ← h]
- exact this z hz
+ · left; intro z hz; rw [Pi.one_apply z, ← h]; exact this z hz
+ · right; intro z hz; rw [Pi.neg_apply, Pi.one_apply, ← h]; exact this z hz
refine' fun x hx => hS.constant_of_maps_to hf (fun z hz => _) hx hy
show f z ∈ ({-1, 1} : Set 𝕜)
· exact mem_insert_iff.mpr (hsq hz).symm
@@ -254,8 +244,7 @@ theorem IsPreconnected.eq_of_sq_eq [Field 𝕜] [HasContinuousInv₀ 𝕜] [Cont
mul_eq_zero] at hy'
cases hy'
-- need to handle case of `char 𝕜 = 2` separately
- · exfalso
- exact hg_ne hy hy'
+ · exfalso; exact hg_ne hy hy'
·
rw [h hx, Pi.neg_apply, eq_comm, ← sub_eq_zero, sub_eq_add_neg, neg_neg, ← mul_two, hy',
MulZeroClass.mul_zero]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -215,10 +215,7 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq
/- warning: is_preconnected.eq_or_eq_neg_of_sq_eq -> IsPreconnected.eq_or_eq_neg_of_sq_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))) g) S))
-but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.878 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.878 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))) g) S))
+<too large>
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then either `f = g` or `f = -g` on
@@ -241,10 +238,7 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eq
/- warning: is_preconnected.eq_of_sq_eq -> IsPreconnected.eq_of_sq_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (forall {y : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
-but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1066 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1066 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (forall {y : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
+<too large>
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then as soon as `f = g` holds at
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -83,7 +83,7 @@ def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
/- warning: subfield.le_topological_closure -> Subfield.le_topologicalClosure is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s)
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toHasLe.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s)
but is expected to have type
forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) s (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s)
Case conversion may be inaccurate. Consider using '#align subfield.le_topological_closure Subfield.le_topologicalClosureₓ'. -/
@@ -104,7 +104,7 @@ theorem Subfield.isClosed_topologicalClosure (s : Subfield α) :
/- warning: subfield.topological_closure_minimal -> Subfield.topologicalClosure_minimal is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3) {t : Subfield.{u1} α _inst_3}, (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s t) -> (IsClosed.{u1} α _inst_4 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subfield.{u1} α _inst_3) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) t)) -> (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s) t)
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3) {t : Subfield.{u1} α _inst_3}, (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toHasLe.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s t) -> (IsClosed.{u1} α _inst_4 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subfield.{u1} α _inst_3) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) t)) -> (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toHasLe.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s) t)
but is expected to have type
forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3) {t : Subfield.{u1} α _inst_3}, (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) s t) -> (IsClosed.{u1} α _inst_4 (SetLike.coe.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.instSetLikeSubfield.{u1} α _inst_3) t)) -> (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s) t)
Case conversion may be inaccurate. Consider using '#align subfield.topological_closure_minimal Subfield.topologicalClosure_minimalₓ'. -/
@@ -156,7 +156,7 @@ open Topology
/- warning: is_local_min.inv -> IsLocalMin.inv is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LinearOrderedSemifield.{u2} β] {f : α -> β} {a : α}, (IsLocalMin.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) f a) -> (Filter.Eventually.{u1} α (fun (z : α) => LT.lt.{u2} β (Preorder.toLT.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (MulZeroClass.toHasZero.{u2} β (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β (DivisionSemiring.toSemiring.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))))))) (f z)) (nhds.{u1} α _inst_3 a)) -> (IsLocalMax.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) (Inv.inv.{max u1 u2} (α -> β) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => DivInvMonoid.toHasInv.{u2} β (GroupWithZero.toDivInvMonoid.{u2} β (DivisionSemiring.toGroupWithZero.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))) f) a)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LinearOrderedSemifield.{u2} β] {f : α -> β} {a : α}, (IsLocalMin.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) f a) -> (Filter.Eventually.{u1} α (fun (z : α) => LT.lt.{u2} β (Preorder.toHasLt.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (MulZeroClass.toHasZero.{u2} β (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β (DivisionSemiring.toSemiring.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))))))) (f z)) (nhds.{u1} α _inst_3 a)) -> (IsLocalMax.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) (Inv.inv.{max u1 u2} (α -> β) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => DivInvMonoid.toHasInv.{u2} β (GroupWithZero.toDivInvMonoid.{u2} β (DivisionSemiring.toGroupWithZero.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))) f) a)
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LinearOrderedSemifield.{u1} β] {f : α -> β} {a : α}, (IsLocalMin.{u2, u1} α β _inst_3 (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4))))) f a) -> (Filter.Eventually.{u2} α (fun (z : α) => LT.lt.{u1} β (Preorder.toLT.{u1} β (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4)))))) (OfNat.ofNat.{u1} β 0 (Zero.toOfNat0.{u1} β (CommMonoidWithZero.toZero.{u1} β (CommGroupWithZero.toCommMonoidWithZero.{u1} β (Semifield.toCommGroupWithZero.{u1} β (LinearOrderedSemifield.toSemifield.{u1} β _inst_4)))))) (f z)) (nhds.{u2} α _inst_3 a)) -> (IsLocalMax.{u2, u1} α β _inst_3 (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4))))) (Inv.inv.{max u1 u2} (α -> β) (Pi.instInv.{u2, u1} α (fun (ᾰ : α) => β) (fun (i : α) => LinearOrderedSemifield.toInv.{u1} β _inst_4)) f) a)
Case conversion may be inaccurate. Consider using '#align is_local_min.inv IsLocalMin.invₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -181,7 +181,7 @@ variable {α 𝕜 : Type _} {f g : α → 𝕜} {S : Set α} [TopologicalSpace
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 _inst_6)) (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 _inst_6)))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6))))))))) S))
but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))) (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.744 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (OfNat.ofNat.{max u2 u1} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 _inst_6)) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))) S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))) (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.744 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (OfNat.ofNat.{max u2 u1} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => Semiring.toOne.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => Semiring.toOne.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 _inst_6)) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => Semiring.toOne.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eqₓ'. -/
/-- If `f` is a function `α → 𝕜` which is continuous on a preconnected set `S`, and
`f ^ 2 = 1` on `S`, then either `f = 1` on `S`, or `f = -1` on `S`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cd8fafa2fac98e1a67097e8a91ad9901cfde48af
@@ -181,7 +181,7 @@ variable {α 𝕜 : Type _} {f g : α → 𝕜} {S : Set α} [TopologicalSpace
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 _inst_6)) (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 _inst_6)))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6))))))))) S))
but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))) (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.738 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (OfNat.ofNat.{max u2 u1} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 _inst_6)) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))) S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))) (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.744 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (OfNat.ofNat.{max u2 u1} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 _inst_6)) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))) S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eqₓ'. -/
/-- If `f` is a function `α → 𝕜` which is continuous on a preconnected set `S`, and
`f ^ 2 = 1` on `S`, then either `f = 1` on `S`, or `f = -1` on `S`. -/
@@ -218,7 +218,7 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))) g) S))
but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))) g) S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.878 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.878 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))) g) S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then either `f = g` or `f = -g` on
@@ -244,7 +244,7 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (forall {y : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1060 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1060 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (forall {y : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1066 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1066 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (forall {y : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then as soon as `f = g` holds at
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -179,7 +179,7 @@ variable {α 𝕜 : Type _} {f g : α → 𝕜} {S : Set α} [TopologicalSpace
/- warning: is_preconnected.eq_one_or_eq_neg_one_of_sq_eq -> IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 _inst_6)) (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 _inst_6)))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))))))) S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 _inst_6)) (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 _inst_6)))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6)))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 _inst_6))))))))) S))
but is expected to have type
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))) (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.738 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (OfNat.ofNat.{max u2 u1} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 _inst_6)) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))) S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eqₓ'. -/
@@ -216,7 +216,7 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
/- warning: is_preconnected.eq_or_eq_neg_of_sq_eq -> IsPreconnected.eq_or_eq_neg_of_sq_eq is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))) g) S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))) g) S))
but is expected to have type
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))) g) S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eqₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/57e09a1296bfb4330ddf6624f1028ba186117d82
@@ -218,7 +218,7 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))) g) S))
but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.875 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))) g) S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))) g) S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then either `f = g` or `f = -g` on
@@ -244,7 +244,7 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (forall {y : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
but is expected to have type
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1060 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1063 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (forall {y : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1060 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1060 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (forall {y : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then as soon as `f = g` holds at
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -264,7 +264,7 @@ theorem IsPreconnected.eq_of_sq_eq [Field 𝕜] [HasContinuousInv₀ 𝕜] [Cont
exact hg_ne hy hy'
·
rw [h hx, Pi.neg_apply, eq_comm, ← sub_eq_zero, sub_eq_add_neg, neg_neg, ← mul_two, hy',
- mul_zero]
+ MulZeroClass.mul_zero]
#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eq
end Preconnected
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Scott Morrison
! This file was ported from Lean 3 source module topology.algebra.field
-! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.FieldTheory.Subfield
/-!
# Topological fields
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
A topological division ring is a topological ring whose inversion function is continuous at every
non-zero element.
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -24,6 +24,12 @@ non-zero element.
variable {K : Type _} [DivisionRing K] [TopologicalSpace K]
+/- warning: filter.tendsto_cocompact_mul_left₀ -> Filter.tendsto_cocompact_mul_left₀ is a dubious translation:
+lean 3 declaration is
+ forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) a x) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
+but is expected to have type
+ forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (MonoidWithZero.toZero.{u1} K (Semiring.toMonoidWithZero.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) a x) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
+Case conversion may be inaccurate. Consider using '#align filter.tendsto_cocompact_mul_left₀ Filter.tendsto_cocompact_mul_left₀ₓ'. -/
/-- Left-multiplication by a nonzero element of a topological division ring is proper, i.e.,
inverse images of compact sets are compact. -/
theorem Filter.tendsto_cocompact_mul_left₀ [ContinuousMul K] {a : K} (ha : a ≠ 0) :
@@ -31,6 +37,12 @@ theorem Filter.tendsto_cocompact_mul_left₀ [ContinuousMul K] {a : K} (ha : a
Filter.tendsto_cocompact_mul_left (inv_mul_cancel ha)
#align filter.tendsto_cocompact_mul_left₀ Filter.tendsto_cocompact_mul_left₀
+/- warning: filter.tendsto_cocompact_mul_right₀ -> Filter.tendsto_cocompact_mul_right₀ is a dubious translation:
+lean 3 declaration is
+ forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) x a) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
+but is expected to have type
+ forall {K : Type.{u1}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : TopologicalSpace.{u1} K] [_inst_3 : ContinuousMul.{u1} K _inst_2 (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))] {a : K}, (Ne.{succ u1} K a (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (MonoidWithZero.toZero.{u1} K (Semiring.toMonoidWithZero.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))))))) -> (Filter.Tendsto.{u1, u1} K K (fun (x : K) => HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) x a) (Filter.cocompact.{u1} K _inst_2) (Filter.cocompact.{u1} K _inst_2))
+Case conversion may be inaccurate. Consider using '#align filter.tendsto_cocompact_mul_right₀ Filter.tendsto_cocompact_mul_right₀ₓ'. -/
/-- Right-multiplication by a nonzero element of a topological division ring is proper, i.e.,
inverse images of compact sets are compact. -/
theorem Filter.tendsto_cocompact_mul_right₀ [ContinuousMul K] {a : K} (ha : a ≠ 0) :
@@ -40,15 +52,18 @@ theorem Filter.tendsto_cocompact_mul_right₀ [ContinuousMul K] {a : K} (ha : a
variable (K)
+#print TopologicalDivisionRing /-
/-- A topological division ring is a division ring with a topology where all operations are
continuous, including inversion. -/
class TopologicalDivisionRing extends TopologicalRing K, HasContinuousInv₀ K : Prop
#align topological_division_ring TopologicalDivisionRing
+-/
section Subfield
variable {α : Type _} [Field α] [TopologicalSpace α] [TopologicalDivisionRing α]
+#print Subfield.topologicalClosure /-
/-- The (topological-space) closure of a subfield of a topological field is
itself a subfield. -/
def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
@@ -61,16 +76,35 @@ def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
· rw [← inv_coe_set, ← Set.image_inv]
exact mem_closure_image (continuous_at_inv₀ h) hx }
#align subfield.topological_closure Subfield.topologicalClosure
+-/
+/- warning: subfield.le_topological_closure -> Subfield.le_topologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) s (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s)
+Case conversion may be inaccurate. Consider using '#align subfield.le_topological_closure Subfield.le_topologicalClosureₓ'. -/
theorem Subfield.le_topologicalClosure (s : Subfield α) : s ≤ s.topologicalClosure :=
subset_closure
#align subfield.le_topological_closure Subfield.le_topologicalClosure
+/- warning: subfield.is_closed_topological_closure -> Subfield.isClosed_topologicalClosure is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), IsClosed.{u1} α _inst_4 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subfield.{u1} α _inst_3) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3), IsClosed.{u1} α _inst_4 (SetLike.coe.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.instSetLikeSubfield.{u1} α _inst_3) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s))
+Case conversion may be inaccurate. Consider using '#align subfield.is_closed_topological_closure Subfield.isClosed_topologicalClosureₓ'. -/
theorem Subfield.isClosed_topologicalClosure (s : Subfield α) :
IsClosed (s.topologicalClosure : Set α) :=
isClosed_closure
#align subfield.is_closed_topological_closure Subfield.isClosed_topologicalClosure
+/- warning: subfield.topological_closure_minimal -> Subfield.topologicalClosure_minimal is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3) {t : Subfield.{u1} α _inst_3}, (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) s t) -> (IsClosed.{u1} α _inst_4 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subfield.{u1} α _inst_3) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Subfield.{u1} α _inst_3) (Set.{u1} α) (SetLike.Set.hasCoeT.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) t)) -> (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (SetLike.partialOrder.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.setLike.{u1} α _inst_3)))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s) t)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_3 : Field.{u1} α] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : TopologicalDivisionRing.{u1} α (Field.toDivisionRing.{u1} α _inst_3) _inst_4] (s : Subfield.{u1} α _inst_3) {t : Subfield.{u1} α _inst_3}, (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) s t) -> (IsClosed.{u1} α _inst_4 (SetLike.coe.{u1, u1} (Subfield.{u1} α _inst_3) α (Subfield.instSetLikeSubfield.{u1} α _inst_3) t)) -> (LE.le.{u1} (Subfield.{u1} α _inst_3) (Preorder.toLE.{u1} (Subfield.{u1} α _inst_3) (PartialOrder.toPreorder.{u1} (Subfield.{u1} α _inst_3) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subfield.{u1} α _inst_3) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subfield.{u1} α _inst_3) (Subfield.instCompleteLatticeSubfield.{u1} α _inst_3))))) (Subfield.topologicalClosure.{u1} α _inst_3 _inst_4 _inst_5 s) t)
+Case conversion may be inaccurate. Consider using '#align subfield.topological_closure_minimal Subfield.topologicalClosure_minimalₓ'. -/
theorem Subfield.topologicalClosure_minimal (s : Subfield α) {t : Subfield α} (h : s ≤ t)
(ht : IsClosed (t : Set α)) : s.topologicalClosure ≤ t :=
closure_minimal h ht
@@ -89,6 +123,12 @@ happens to be a field is enough.
variable {𝕜 : Type _} [Field 𝕜] [TopologicalSpace 𝕜] [TopologicalRing 𝕜]
+/- warning: affine_homeomorph -> affineHomeomorph is a dubious translation:
+lean 3 declaration is
+ forall {𝕜 : Type.{u1}} [_inst_3 : Field.{u1} 𝕜] [_inst_4 : TopologicalSpace.{u1} 𝕜] [_inst_5 : TopologicalRing.{u1} 𝕜 _inst_4 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 _inst_3))))] (a : 𝕜), 𝕜 -> (Ne.{succ u1} 𝕜 a (OfNat.ofNat.{u1} 𝕜 0 (OfNat.mk.{u1} 𝕜 0 (Zero.zero.{u1} 𝕜 (MulZeroClass.toHasZero.{u1} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 _inst_3))))))))))) -> (Homeomorph.{u1, u1} 𝕜 𝕜 _inst_4 _inst_4)
+but is expected to have type
+ forall {𝕜 : Type.{u1}} [_inst_3 : Field.{u1} 𝕜] [_inst_4 : TopologicalSpace.{u1} 𝕜] [_inst_5 : TopologicalRing.{u1} 𝕜 _inst_4 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 _inst_3))))] (a : 𝕜), 𝕜 -> (Ne.{succ u1} 𝕜 a (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (Field.toSemifield.{u1} 𝕜 _inst_3))))))) -> (Homeomorph.{u1, u1} 𝕜 𝕜 _inst_4 _inst_4)
+Case conversion may be inaccurate. Consider using '#align affine_homeomorph affineHomeomorphₓ'. -/
/--
The map `λ x, a * x + b`, as a homeomorphism from `𝕜` (a topological field) to itself, when `a ≠ 0`.
-/
@@ -111,6 +151,12 @@ variable {α β : Type _} [TopologicalSpace α] [LinearOrderedSemifield β] {a :
open Topology
+/- warning: is_local_min.inv -> IsLocalMin.inv is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LinearOrderedSemifield.{u2} β] {f : α -> β} {a : α}, (IsLocalMin.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) f a) -> (Filter.Eventually.{u1} α (fun (z : α) => LT.lt.{u2} β (Preorder.toLT.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (MulZeroClass.toHasZero.{u2} β (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β (DivisionSemiring.toSemiring.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))))))) (f z)) (nhds.{u1} α _inst_3 a)) -> (IsLocalMax.{u1, u2} α β _inst_3 (PartialOrder.toPreorder.{u2} β (OrderedCancelAddCommMonoid.toPartialOrder.{u2} β (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} β _inst_4)))))) (Inv.inv.{max u1 u2} (α -> β) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => DivInvMonoid.toHasInv.{u2} β (GroupWithZero.toDivInvMonoid.{u2} β (DivisionSemiring.toGroupWithZero.{u2} β (Semifield.toDivisionSemiring.{u2} β (LinearOrderedSemifield.toSemifield.{u2} β _inst_4)))))) f) a)
+but is expected to have type
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LinearOrderedSemifield.{u1} β] {f : α -> β} {a : α}, (IsLocalMin.{u2, u1} α β _inst_3 (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4))))) f a) -> (Filter.Eventually.{u2} α (fun (z : α) => LT.lt.{u1} β (Preorder.toLT.{u1} β (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4)))))) (OfNat.ofNat.{u1} β 0 (Zero.toOfNat0.{u1} β (CommMonoidWithZero.toZero.{u1} β (CommGroupWithZero.toCommMonoidWithZero.{u1} β (Semifield.toCommGroupWithZero.{u1} β (LinearOrderedSemifield.toSemifield.{u1} β _inst_4)))))) (f z)) (nhds.{u2} α _inst_3 a)) -> (IsLocalMax.{u2, u1} α β _inst_3 (PartialOrder.toPreorder.{u1} β (StrictOrderedSemiring.toPartialOrder.{u1} β (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} β (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} β (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} β _inst_4))))) (Inv.inv.{max u1 u2} (α -> β) (Pi.instInv.{u2, u1} α (fun (ᾰ : α) => β) (fun (i : α) => LinearOrderedSemifield.toInv.{u1} β _inst_4)) f) a)
+Case conversion may be inaccurate. Consider using '#align is_local_min.inv IsLocalMin.invₓ'. -/
theorem IsLocalMin.inv {f : α → β} {a : α} (h1 : IsLocalMin f a) (h2 : ∀ᶠ z in 𝓝 a, 0 < f z) :
IsLocalMax f⁻¹ a := by
filter_upwards [h1, h2]with z h3 h4 using(inv_le_inv h4 h2.self_of_nhds).mpr h3
@@ -128,6 +174,12 @@ open Set
variable {α 𝕜 : Type _} {f g : α → 𝕜} {S : Set α} [TopologicalSpace α] [TopologicalSpace 𝕜]
[T1Space 𝕜]
+/- warning: is_preconnected.eq_one_or_eq_neg_one_of_sq_eq -> IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 _inst_6)) (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 _inst_6)))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (OfNat.mk.{max u1 u2} (α -> 𝕜) 1 (One.one.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => AddMonoidWithOne.toOne.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))))))) S))
+but is expected to have type
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Ring.{u2} 𝕜] [_inst_7 : NoZeroDivisors.{u2} 𝕜 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))) (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.738 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (Ring.toSemiring.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (OfNat.ofNat.{max u2 u1} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6))))) S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 _inst_6)) (OfNat.ofNat.{max u1 u2} (α -> 𝕜) 1 (One.toOfNat1.{max u1 u2} (α -> 𝕜) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Data.Set.Function._hyg.1349 : α) => 𝕜) (fun (i : α) => NonAssocRing.toOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 _inst_6)))))) S))
+Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eqₓ'. -/
/-- If `f` is a function `α → 𝕜` which is continuous on a preconnected set `S`, and
`f ^ 2 = 1` on `S`, then either `f = 1` on `S`, or `f = -1` on `S`. -/
theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors 𝕜]
@@ -159,6 +211,12 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
exact discrete_of_t1_of_finite
#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq
+/- warning: is_preconnected.eq_or_eq_neg_of_sq_eq -> IsPreconnected.eq_or_eq_neg_of_sq_eq is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => SubNegMonoid.toHasNeg.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))) g) S))
+but is expected to have type
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.872 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.875 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (Or (Set.EqOn.{u1, u2} α 𝕜 f g S) (Set.EqOn.{u1, u2} α 𝕜 f (Neg.neg.{max u1 u2} (α -> 𝕜) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => 𝕜) (fun (i : α) => Ring.toNeg.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))) g) S))
+Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then either `f = g` or `f = -g` on
`S`. -/
@@ -179,6 +237,12 @@ theorem IsPreconnected.eq_or_eq_neg_of_sq_eq [Field 𝕜] [HasContinuousInv₀
exact pow_ne_zero _ (hg_ne hx)
#align is_preconnected.eq_or_eq_neg_of_sq_eq IsPreconnected.eq_or_eq_neg_of_sq_eq
+/- warning: is_preconnected.eq_of_sq_eq -> IsPreconnected.eq_of_sq_eq is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))))) (DivInvMonoid.toHasInv.{u2} 𝕜 (DivisionRing.toDivInvMonoid.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) f (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (HPow.hPow.{max u1 u2, 0, max u1 u2} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Pi.hasPow.{u1, u2, 0} α Nat (fun (ᾰ : α) => 𝕜) (fun (i : α) => Monoid.Pow.{u2} 𝕜 (Ring.toMonoid.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))) g (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) S) -> (forall {x : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))))))))) -> (forall {y : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
+but is expected to have type
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} {f : α -> 𝕜} {g : α -> 𝕜} {S : Set.{u1} α} [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : TopologicalSpace.{u2} 𝕜] [_inst_5 : T1Space.{u2} 𝕜 _inst_4] [_inst_6 : Field.{u2} 𝕜] [_inst_7 : HasContinuousInv₀.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))) (Field.toInv.{u2} 𝕜 _inst_6) _inst_4] [_inst_8 : ContinuousMul.{u2} 𝕜 _inst_4 (NonUnitalNonAssocRing.toMul.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 _inst_6)))))], (IsPreconnected.{u1} α _inst_3 S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 f S) -> (ContinuousOn.{u1, u2} α 𝕜 _inst_3 _inst_4 g S) -> (Set.EqOn.{u1, u2} α 𝕜 (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1060 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) f (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (HPow.hPow.{max u1 u2, 0, max u2 u1} (α -> 𝕜) Nat (α -> 𝕜) (instHPow.{max u1 u2, 0} (α -> 𝕜) Nat (Monoid.Pow.{max u1 u2} (α -> 𝕜) (Pi.monoid.{u1, u2} α (fun (a._@.Mathlib.Topology.Algebra.Field._hyg.1063 : α) => 𝕜) (fun (i : α) => MonoidWithZero.toMonoid.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (Semifield.toDivisionSemiring.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) g (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) S) -> (forall {x : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x S) -> (Ne.{succ u2} 𝕜 (g x) (OfNat.ofNat.{u2} 𝕜 0 (Zero.toOfNat0.{u2} 𝕜 (CommMonoidWithZero.toZero.{u2} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u2} 𝕜 (Semifield.toCommGroupWithZero.{u2} 𝕜 (Field.toSemifield.{u2} 𝕜 _inst_6)))))))) -> (forall {y : α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y S) -> (Eq.{succ u2} 𝕜 (f y) (g y)) -> (Set.EqOn.{u1, u2} α 𝕜 f g S))
+Case conversion may be inaccurate. Consider using '#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eqₓ'. -/
/-- If `f, g` are functions `α → 𝕜`, both continuous on a preconnected set `S`, with
`f ^ 2 = g ^ 2` on `S`, and `g z ≠ 0` all `z ∈ S`, then as soon as `f = g` holds at
one point of `S` it holds for all points. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -4,11 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Scott Morrison
! This file was ported from Lean 3 source module topology.algebra.field
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! 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.Ring
+import Mathbin.Topology.Algebra.Ring.Basic
import Mathbin.Topology.Algebra.GroupWithZero
import Mathbin.Topology.LocalExtr
import Mathbin.FieldTheory.Subfield
@@ -22,60 +22,6 @@ non-zero element.
-/
-namespace TopologicalRing
-
-open TopologicalSpace Function
-
-variable (R : Type _) [Semiring R]
-
-variable [TopologicalSpace R]
-
-/-- The induced topology on units of a topological semiring.
-This is not a global instance since other topologies could be relevant. Instead there is a class
-`induced_units` asserting that something equivalent to this construction holds. -/
-def topologicalSpaceUnits : TopologicalSpace Rˣ :=
- induced (coe : Rˣ → R) ‹_›
-#align topological_ring.topological_space_units TopologicalRing.topologicalSpaceUnits
-
-/-- Asserts the topology on units is the induced topology.
-
- Note: this is not always the correct topology.
- Another good candidate is the subspace topology of $R \times R$,
- with the units embedded via $u \mapsto (u, u^{-1})$.
- These topologies are not (propositionally) equal in general. -/
-class InducedUnits [t : TopologicalSpace <| Rˣ] : Prop where
- top_eq : t = induced (coe : Rˣ → R) ‹_›
-#align topological_ring.induced_units TopologicalRing.InducedUnits
-
-variable [TopologicalSpace <| Rˣ]
-
-theorem units_topology_eq [InducedUnits R] : ‹TopologicalSpace Rˣ› = induced (coe : Rˣ → R) ‹_› :=
- InducedUnits.top_eq
-#align topological_ring.units_topology_eq TopologicalRing.units_topology_eq
-
-theorem InducedUnits.continuous_coe [InducedUnits R] : Continuous (coe : Rˣ → R) :=
- (units_topology_eq R).symm ▸ continuous_induced_dom
-#align topological_ring.induced_units.continuous_coe TopologicalRing.InducedUnits.continuous_coe
-
-theorem units_embedding [InducedUnits R] : Embedding (coe : Rˣ → R) :=
- { induced := units_topology_eq R
- inj := fun x y h => Units.ext h }
-#align topological_ring.units_embedding TopologicalRing.units_embedding
-
-instance top_monoid_units [TopologicalSemiring R] [InducedUnits R] : ContinuousMul Rˣ :=
- ⟨by
- let mulR := fun p : R × R => p.1 * p.2
- let mulRx := fun p : Rˣ × Rˣ => p.1 * p.2
- have key : coe ∘ mulRx = mulR ∘ fun p => (p.1.val, p.2.val) := rfl
- rw [continuous_iff_le_induced, units_topology_eq R, prod_induced_induced, induced_compose, key,
- ← induced_compose]
- apply induced_mono
- rw [← continuous_iff_le_induced]
- exact continuous_mul⟩
-#align topological_ring.top_monoid_units TopologicalRing.top_monoid_units
-
-end TopologicalRing
-
variable {K : Type _} [DivisionRing K] [TopologicalSpace K]
/-- Left-multiplication by a nonzero element of a topological division ring is proper, i.e.,
@@ -99,50 +45,6 @@ variable (K)
class TopologicalDivisionRing extends TopologicalRing K, HasContinuousInv₀ K : Prop
#align topological_division_ring TopologicalDivisionRing
-namespace TopologicalDivisionRing
-
-open Filter Set
-
-/-!
-In this section, we show that units of a topological division ring endowed with the
-induced topology form a topological group. These are not global instances because
-one could want another topology on units. To turn on this feature, use:
-
-```lean
-local attribute [instance]
-topological_semiring.topological_space_units topological_division_ring.units_top_group
-```
--/
-
-
-attribute [local instance] TopologicalRing.topologicalSpaceUnits
-
-instance (priority := 100) inducedUnits : TopologicalRing.InducedUnits K :=
- ⟨rfl⟩
-#align topological_division_ring.induced_units TopologicalDivisionRing.inducedUnits
-
-variable [TopologicalDivisionRing K]
-
-theorem units_top_group : TopologicalGroup Kˣ :=
- { TopologicalRing.top_monoid_units K with
- continuous_inv := by
- rw [continuous_iff_continuousAt]
- intro x
- rw [ContinuousAt, nhds_induced, nhds_induced, tendsto_iff_comap, ←
- Function.Semiconj.filter_comap Units.val_inv_eq_inv_val _]
- apply comap_mono
- rw [← tendsto_iff_comap, Units.val_inv_eq_inv_val]
- exact continuous_at_inv₀ x.ne_zero }
-#align topological_division_ring.units_top_group TopologicalDivisionRing.units_top_group
-
-attribute [local instance] units_top_group
-
-theorem continuous_units_inv : Continuous fun x : Kˣ => (↑x⁻¹ : K) :=
- (TopologicalRing.InducedUnits.continuous_coe K).comp continuous_inv
-#align topological_division_ring.continuous_units_inv TopologicalDivisionRing.continuous_units_inv
-
-end TopologicalDivisionRing
-
section Subfield
variable {α : Type _} [Field α] [TopologicalSpace α] [TopologicalDivisionRing α]
@@ -153,16 +55,11 @@ def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
{
K.toSubring.topologicalClosure with
carrier := closure (K : Set α)
- inv_mem' := by
- intro x hx
- by_cases h : x = 0
- · rwa [h, inv_zero, ← h]
- · convert mem_closure_image (continuous_at_inv₀ h) hx using 2
- ext x
- constructor
- · exact fun hx => ⟨x⁻¹, ⟨K.inv_mem hx, inv_inv x⟩⟩
- · rintro ⟨y, ⟨hy, rfl⟩⟩
- exact K.inv_mem hy }
+ inv_mem' := fun x hx => by
+ rcases eq_or_ne x 0 with (rfl | h)
+ · rwa [inv_zero]
+ · rw [← inv_coe_set, ← Set.image_inv]
+ exact mem_closure_image (continuous_at_inv₀ h) hx }
#align subfield.topological_closure Subfield.topologicalClosure
theorem Subfield.le_topologicalClosure (s : Subfield α) : s ≤ s.topologicalClosure :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Move files from Topology.Algebra.Order
to Topology.Order
when they do not contain any algebra. Also move Topology.LocalExtr
to Topology.Order.LocalExtr
.
According to git, the moves are:
Mathlib/Topology/{Algebra => }/Order/ExtendFrom.lean
Mathlib/Topology/{Algebra => }/Order/ExtrClosure.lean
Mathlib/Topology/{Algebra => }/Order/Filter.lean
Mathlib/Topology/{Algebra => }/Order/IntermediateValue.lean
Mathlib/Topology/{Algebra => }/Order/LeftRight.lean
Mathlib/Topology/{Algebra => }/Order/LeftRightLim.lean
Mathlib/Topology/{Algebra => }/Order/MonotoneContinuity.lean
Mathlib/Topology/{Algebra => }/Order/MonotoneConvergence.lean
Mathlib/Topology/{Algebra => }/Order/ProjIcc.lean
Mathlib/Topology/{Algebra => }/Order/T5.lean
Mathlib/Topology/{ => Order}/LocalExtr.lean
@@ -6,7 +6,7 @@ Authors: Patrick Massot, Scott Morrison
import Mathlib.Algebra.GroupPower.Ring
import Mathlib.Topology.Algebra.Ring.Basic
import Mathlib.Topology.Algebra.GroupWithZero
-import Mathlib.Topology.LocalExtr
+import Mathlib.Topology.Order.LocalExtr
import Mathlib.FieldTheory.Subfield
#align_import topology.algebra.field from "leanprover-community/mathlib"@"c10e724be91096453ee3db13862b9fb9a992fef2"
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 | |
@@ -96,9 +96,9 @@ def affineHomeomorph (a b : 𝕜) (h : a ≠ 0) : 𝕜 ≃ₜ 𝕜 where
toFun x := a * x + b
invFun y := (y - b) / a
left_inv x := by
- simp only [add_sub_cancel]
- exact mul_div_cancel_left x h
- right_inv y := by simp [mul_div_cancel' _ h]
+ simp only [add_sub_cancel_right]
+ exact mul_div_cancel_left₀ x h
+ right_inv y := by simp [mul_div_cancel₀ _ h]
#align affine_homeomorph affineHomeomorph
end affineHomeomorph
@@ -55,7 +55,7 @@ def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
dsimp only at hx ⊢
rcases eq_or_ne x 0 with (rfl | h)
· rwa [inv_zero]
- · -- Porting note: todo: Lean fails to find InvMemClass instance
+ · -- Porting note (#11215): TODO: Lean fails to find InvMemClass instance
rw [← @inv_coe_set α (Subfield α) _ _ SubfieldClass.toInvMemClass K, ← Set.image_inv]
exact mem_closure_image (continuousAt_inv₀ h) hx }
#align subfield.topological_closure Subfield.topologicalClosure
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -55,7 +55,7 @@ def Subfield.topologicalClosure (K : Subfield α) : Subfield α :=
dsimp only at hx ⊢
rcases eq_or_ne x 0 with (rfl | h)
· rwa [inv_zero]
- · -- porting note: todo: Lean fails to find InvMemClass instance
+ · -- Porting note: todo: Lean fails to find InvMemClass instance
rw [← @inv_coe_set α (Subfield α) _ _ SubfieldClass.toInvMemClass K, ← Set.image_inv]
exact mem_closure_image (continuousAt_inv₀ h) hx }
#align subfield.topological_closure Subfield.topologicalClosure
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -131,8 +131,8 @@ theorem IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq [Ring 𝕜] [NoZeroDivisors
(hS : IsPreconnected S) (hf : ContinuousOn f S) (hsq : EqOn (f ^ 2) 1 S) :
EqOn f 1 S ∨ EqOn f (-1) S := by
have : DiscreteTopology ({1, -1} : Set 𝕜) := discrete_of_t1_of_finite
- have hmaps : MapsTo f S {1, -1}
- · simpa only [EqOn, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] using hsq
+ have hmaps : MapsTo f S {1, -1} := by
+ simpa only [EqOn, Pi.one_apply, Pi.pow_apply, sq_eq_one_iff] using hsq
simpa using hS.eqOn_const_of_mapsTo hf hmaps
#align is_preconnected.eq_one_or_eq_neg_one_of_sq_eq IsPreconnected.eq_one_or_eq_neg_one_of_sq_eq
@@ -3,6 +3,7 @@ Copyright (c) 2021 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Scott Morrison
-/
+import Mathlib.Algebra.GroupPower.Ring
import Mathlib.Topology.Algebra.Ring.Basic
import Mathlib.Topology.Algebra.GroupWithZero
import Mathlib.Topology.LocalExtr
filter_upwards
(#7719)
mathport was forgetting a space in filter_upwards [...]with
instead of filter_upwards [...] with
.
@@ -110,7 +110,7 @@ open Topology
theorem IsLocalMin.inv {f : α → β} {a : α} (h1 : IsLocalMin f a) (h2 : ∀ᶠ z in 𝓝 a, 0 < f z) :
IsLocalMax f⁻¹ a := by
- filter_upwards [h1, h2]with z h3 h4 using(inv_le_inv h4 h2.self_of_nhds).mpr h3
+ filter_upwards [h1, h2] with z h3 h4 using(inv_le_inv h4 h2.self_of_nhds).mpr h3
#align is_local_min.inv IsLocalMin.inv
end LocalExtr
@@ -162,4 +162,3 @@ theorem IsPreconnected.eq_of_sq_eq [Field 𝕜] [HasContinuousInv₀ 𝕜] [Cont
#align is_preconnected.eq_of_sq_eq IsPreconnected.eq_of_sq_eq
end Preconnected
-
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -18,7 +18,7 @@ non-zero element.
-/
-variable {K : Type _} [DivisionRing K] [TopologicalSpace K]
+variable {K : Type*} [DivisionRing K] [TopologicalSpace K]
/-- Left-multiplication by a nonzero element of a topological division ring is proper, i.e.,
inverse images of compact sets are compact. -/
@@ -43,7 +43,7 @@ class TopologicalDivisionRing extends TopologicalRing K, HasContinuousInv₀ K :
section Subfield
-variable {α : Type _} [Field α] [TopologicalSpace α] [TopologicalDivisionRing α]
+variable {α : Type*} [Field α] [TopologicalSpace α] [TopologicalDivisionRing α]
/-- The (topological-space) closure of a subfield of a topological field is
itself a subfield. -/
@@ -84,7 +84,7 @@ happens to be a field is enough.
-/
-variable {𝕜 : Type _} [Field 𝕜] [TopologicalSpace 𝕜] [TopologicalRing 𝕜]
+variable {𝕜 : Type*} [Field 𝕜] [TopologicalSpace 𝕜] [TopologicalRing 𝕜]
/--
The map `fun x => a * x + b`, as a homeomorphism from `𝕜` (a topological field) to itself,
@@ -104,7 +104,7 @@ end affineHomeomorph
section LocalExtr
-variable {α β : Type _} [TopologicalSpace α] [LinearOrderedSemifield β] {a : α}
+variable {α β : Type*} [TopologicalSpace α] [LinearOrderedSemifield β] {a : α}
open Topology
@@ -121,7 +121,7 @@ section Preconnected
open Set
-variable {α 𝕜 : Type _} {f g : α → 𝕜} {S : Set α} [TopologicalSpace α] [TopologicalSpace 𝕜]
+variable {α 𝕜 : Type*} {f g : α → 𝕜} {S : Set α} [TopologicalSpace α] [TopologicalSpace 𝕜]
[T1Space 𝕜]
/-- If `f` is a function `α → 𝕜` which is continuous on a preconnected set `S`, and
@@ -2,17 +2,14 @@
Copyright (c) 2021 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Scott Morrison
-
-! This file was ported from Lean 3 source module topology.algebra.field
-! 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.Ring.Basic
import Mathlib.Topology.Algebra.GroupWithZero
import Mathlib.Topology.LocalExtr
import Mathlib.FieldTheory.Subfield
+#align_import topology.algebra.field from "leanprover-community/mathlib"@"c10e724be91096453ee3db13862b9fb9a992fef2"
+
/-!
# Topological fields
The unported dependencies are