topology.continuous_function.ideals
β·
Mathlib.Topology.ContinuousFunction.Ideals
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -6,7 +6,7 @@ Authors: Jireh Loreaux
import Topology.Algebra.Algebra
import Topology.ContinuousFunction.Compact
import Topology.UrysohnsLemma
-import Data.IsROrC.Basic
+import Analysis.RCLike.Basic
import Analysis.NormedSpace.Units
import Topology.Algebra.Module.CharacterSpace
@@ -206,11 +206,11 @@ theorem ideal_gc : GaloisConnection (setOfIdeal : Ideal C(X, R) β Set X) (idea
end TopologicalRing
-section IsROrC
+section RCLike
-open IsROrC
+open RCLike
-variable {X π : Type _} [IsROrC π] [TopologicalSpace X]
+variable {X π : Type _} [RCLike π] [TopologicalSpace X]
#print ContinuousMap.exists_mul_le_one_eqOn_ge /-
/-- An auxiliary lemma used in the proof of `ideal_of_set_of_ideal_eq_closure` which may be useful
@@ -333,7 +333,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
ext
simp only [comp_apply, coe_mk, algebraMapCLM_coe, map_pow, coe_mul, coe_star, Pi.mul_apply,
Pi.star_apply, star_def, ContinuousMap.coe_coe]
- simpa only [norm_sq_eq_def', IsROrC.conj_mul, of_real_pow]
+ simpa only [norm_sq_eq_def', RCLike.conj_mul, of_real_pow]
/- Get the function `g'` which is guaranteed to exist above. By the extreme value theorem and
compactness of `t`, there is some `0 < c` such that `c β€ g' x` for all `x β t`. Then by
`main_lemma_aux` there is some `g` for which `g * g'` is the desired function. -/
@@ -382,7 +382,7 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s
exact
β¨β¨fun x => g x, continuous_of_real.comp (map_continuous g)β©, by
simpa only [coe_mk, of_real_eq_zero] using fun x hx => hgs (subset_closure hx), by
- simpa only [coe_mk, hgx (Set.mem_singleton x), Pi.one_apply, IsROrC.ofReal_one] using
+ simpa only [coe_mk, hgx (Set.mem_singleton x), Pi.one_apply, RCLike.ofReal_one] using
one_ne_zeroβ©
#align continuous_map.set_of_ideal_of_set_eq_interior ContinuousMap.setOfIdeal_ofSet_eq_interior
-/
@@ -463,7 +463,7 @@ theorem ideal_isMaximal_iff (I : Ideal C(X, π)) [hI : IsClosed (I : Set C(X,
#align continuous_map.ideal_is_maximal_iff ContinuousMap.ideal_isMaximal_iff
-/
-end IsROrC
+end RCLike
end ContinuousMap
@@ -505,7 +505,7 @@ theorem continuousMapEval_apply_apply (x : X) (f : C(X, π)) : continuousMapEv
end ContinuousMapEval
-variable [CompactSpace X] [T2Space X] [IsROrC π]
+variable [CompactSpace X] [T2Space X] [RCLike π]
#print WeakDual.CharacterSpace.continuousMapEval_bijective /-
theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
@@ -517,9 +517,9 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
(isClosed_singleton : _root_.is_closed {y}) (set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
rw [β Ne.def, DFunLike.ne_iff]
- use(β¨coe, IsROrC.continuous_ofRealβ© : C(β, π)).comp f
+ use(β¨coe, RCLike.continuous_ofRealβ© : C(β, π)).comp f
simpa only [continuous_map_eval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne.def,
- IsROrC.ofReal_inj] using
+ RCLike.ofReal_inj] using
((fx (Set.mem_singleton x)).symm βΈ (fy (Set.mem_singleton y)).symm βΈ zero_ne_one : f x β f y)
Β· obtain β¨x, hxβ© := (ideal_is_maximal_iff (RingHom.ker Ο)).mp inferInstance
refine' β¨x, ext_ker <| Ideal.ext fun f => _β©
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -321,7 +321,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
simpa only [zero_add] using add_lt_add_of_le_of_lt zero_le' (hgtβ x hx)
Β· intro x hx
replace hx := htI.subset_compl_right hx
- rw [compl_compl, mem_set_of_ideal] at hx
+ rw [compl_compl, mem_set_of_ideal] at hx
obtain β¨g, hI, hgxβ© := hx
have := (map_continuous g).ContinuousAt.eventually_ne hgx
refine'
@@ -340,7 +340,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
obtain β¨g', hI', hgt'β© := this
obtain β¨c, hc, hgc'β© : β (c : _) (hc : 0 < c), β y : X, y β t β c β€ g' y :=
t.eq_empty_or_nonempty.elim
- (fun ht' => β¨1, zero_lt_one, fun y hy => False.elim (by rwa [ht'] at hy )β©) fun ht' =>
+ (fun ht' => β¨1, zero_lt_one, fun y hy => False.elim (by rwa [ht'] at hy)β©) fun ht' =>
let β¨x, hx, hx'β© := ht.is_compact.exists_forall_le ht' (map_continuous g').ContinuousOn
β¨g' x, hgt' x hx, hx'β©
obtain β¨g, hg, hgcβ© := exists_mul_le_one_eq_on_ge g' hc
@@ -371,7 +371,7 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s
set.not_mem_compl_iff.mp (mt (@hf x) hfx))
fun x hx => _
-- If `x β closure sαΆ`, we must produce `f : C(X, π)` which is zero on `sαΆ` and `f x β 0`.
- rw [β compl_compl (interior s), β closure_compl] at hx
+ rw [β compl_compl (interior s), β closure_compl] at hx
simp_rw [mem_set_of_ideal, mem_ideal_of_set]
haveI : NormalSpace X := T4Space.of_compactSpace_t2Space
/- Apply Urysohn's lemma to get `g : C(X, β)` which is zero on `sαΆ` and `g x β 0`, then compose
@@ -421,7 +421,7 @@ theorem idealOfSet_isMaximal_iff (s : Opens X) :
by
rw [Ideal.isMaximal_def]
refine' (ideal_opens_gi X π).isCoatom_iff_ge_of_le (fun I hI => _) s
- rw [β Ideal.isMaximal_def] at hI
+ rw [β Ideal.isMaximal_def] at hI
skip
exact ideal_of_set_of_ideal_is_closed inferInstance
#align continuous_map.ideal_of_set_is_maximal_iff ContinuousMap.idealOfSet_isMaximal_iff
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -282,7 +282,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
_ = βalgebraMap ββ₯0 π (1 - g x)ββ := by
simp only [Algebra.algebraMap_eq_smul_one, NNReal.smul_def, NNReal.coe_sub (hg x),
sub_smul, Nonneg.coe_one, one_smul]
- _ β€ 1 := (nnnorm_algebraMap_nNReal π (1 - g x)).trans_le tsub_le_self
+ _ β€ 1 := (nnnorm_algebraMap_nnreal π (1 - g x)).trans_le tsub_le_self
calc
βf x - f x * (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g xββ =
βf x * (1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -260,34 +260,34 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
Indeed, then `βf - f * βgβ β€ βf * (1 - βg)β β€ β¨ βf * (1 - βg) xβ`. When `x β t`, `βf xβ < Ξ΅ / 2`
and `β(1 - βg) xβ β€ 1`, and when `x β t`, `(1 - βg) x = 0`, and clearly `f * βg β I`. -/
suffices
- β g : C(X, ββ₯0), (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g β I β§ (β x, g x β€ 1) β§ t.eq_on g 1
+ β g : C(X, ββ₯0), (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g β I β§ (β x, g x β€ 1) β§ t.eq_on g 1
by
obtain β¨g, hgI, hg, hgtβ© := this
- refine' β¨f * (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g, I.mul_mem_left f hgI, _β©
+ refine' β¨f * (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g, I.mul_mem_left f hgI, _β©
rw [nndist_eq_nnnorm]
refine' (nnnorm_lt_iff _ hΞ΅).2 fun x => _
simp only [coe_sub, coe_mul, Pi.sub_apply, Pi.mul_apply]
by_cases hx : x β t
Β·
- simpa only [hgt hx, comp_apply, Pi.one_apply, ContinuousMap.coe_coe, algebraMapClm_apply,
+ simpa only [hgt hx, comp_apply, Pi.one_apply, ContinuousMap.coe_coe, algebraMapCLM_apply,
map_one, mul_one, sub_self, nnnorm_zero] using hΞ΅
Β· refine' lt_of_le_of_lt _ (half_lt_self hΞ΅)
have :=
calc
- β((1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) x : π)ββ =
+ β((1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) x : π)ββ =
β1 - algebraMap ββ₯0 π (g x)ββ :=
by
simp only [coe_sub, coe_one, coe_comp, ContinuousMap.coe_coe, Pi.sub_apply,
- Pi.one_apply, Function.comp_apply, algebraMapClm_apply]
+ Pi.one_apply, Function.comp_apply, algebraMapCLM_apply]
_ = βalgebraMap ββ₯0 π (1 - g x)ββ := by
simp only [Algebra.algebraMap_eq_smul_one, NNReal.smul_def, NNReal.coe_sub (hg x),
sub_smul, Nonneg.coe_one, one_smul]
_ β€ 1 := (nnnorm_algebraMap_nNReal π (1 - g x)).trans_le tsub_le_self
calc
- βf x - f x * (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g xββ =
- βf x * (1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
+ βf x - f x * (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g xββ =
+ βf x * (1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
by simp only [mul_sub, coe_sub, coe_one, Pi.sub_apply, Pi.one_apply, mul_one]
- _ β€ Ξ΅ / 2 * β(1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
+ _ β€ Ξ΅ / 2 * β(1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
((nnnorm_mul_le _ _).trans
(mul_le_mul_right' (not_le.mp <| show ¬Ρ / 2 β€ βf xββ from hx).le _))
_ β€ Ξ΅ / 2 := by simpa only [mul_one] using mul_le_mul_left' this _
@@ -297,12 +297,12 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
`fβ x β 0` for some `fβ β I` and so `Ξ» y, β(star fβ * fβ) yββ` is strictly posiive in a
neighborhood of `y`. Moreover, `(β(star fβ * fβ) yββ : π) = (star fβ * fβ) y`, so composition of
this map with the natural embedding is just `star fβ * fβ β I`. -/
- have : β g' : C(X, ββ₯0), (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g' β I β§ β x β t, 0 < g' x :=
+ have : β g' : C(X, ββ₯0), (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g' β I β§ β x β t, 0 < g' x :=
by
refine'
@IsCompact.induction_on _ _ _ ht.is_compact
(fun s =>
- β g' : C(X, ββ₯0), (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g' β I β§ β x β s, 0 < g' x)
+ β g' : C(X, ββ₯0), (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g' β I β§ β x β s, 0 < g' x)
_ _ _ _
Β· refine' β¨0, _, fun x hx => False.elim hxβ©
convert I.zero_mem
@@ -331,7 +331,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
pow_pos (norm_pos_iff.mpr hx.1) 2β©β©
convert I.mul_mem_left (star g) hI
ext
- simp only [comp_apply, coe_mk, algebraMapClm_coe, map_pow, coe_mul, coe_star, Pi.mul_apply,
+ simp only [comp_apply, coe_mk, algebraMapCLM_coe, map_pow, coe_mul, coe_star, Pi.mul_apply,
Pi.star_apply, star_def, ContinuousMap.coe_coe]
simpa only [norm_sq_eq_def', IsROrC.conj_mul, of_real_pow]
/- Get the function `g'` which is guaranteed to exist above. By the extreme value theorem and
@@ -345,9 +345,9 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
β¨g' x, hgt' x hx, hx'β©
obtain β¨g, hg, hgcβ© := exists_mul_le_one_eq_on_ge g' hc
refine' β¨g * g', _, hg, hgc.mono hgc'β©
- convert I.mul_mem_left ((algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) hI'
+ convert I.mul_mem_left ((algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) hI'
ext
- simp only [algebraMapClm_coe, ContinuousMap.coe_coe, comp_apply, coe_mul, Pi.mul_apply, map_mul]
+ simp only [algebraMapCLM_coe, ContinuousMap.coe_coe, comp_apply, coe_mul, Pi.mul_apply, map_mul]
#align continuous_map.ideal_of_set_of_ideal_eq_closure ContinuousMap.idealOfSet_ofIdeal_eq_closure
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -177,7 +177,7 @@ theorem setOfTop_eq_univ [Nontrivial R] : setOfIdeal (β€ : Ideal C(X, R)) = Set
theorem idealOfEmpty_eq_bot : idealOfSet R (β
: Set X) = β₯ :=
Ideal.ext fun f => by
simpa only [mem_ideal_of_set, Set.compl_empty, Set.mem_univ, forall_true_left, Ideal.mem_bot,
- FunLike.ext_iff] using Iff.rfl
+ DFunLike.ext_iff] using Iff.rfl
#align continuous_map.ideal_of_empty_eq_bot ContinuousMap.idealOfEmpty_eq_bot
-/
@@ -516,7 +516,7 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
rcases exists_continuous_zero_one_of_isClosed (isClosed_singleton : _root_.is_closed {x})
(isClosed_singleton : _root_.is_closed {y}) (set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
- rw [β Ne.def, FunLike.ne_iff]
+ rw [β Ne.def, DFunLike.ne_iff]
use(β¨coe, IsROrC.continuous_ofRealβ© : C(β, π)).comp f
simpa only [continuous_map_eval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne.def,
IsROrC.ofReal_inj] using
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -420,7 +420,7 @@ theorem idealOfSet_isMaximal_iff (s : Opens X) :
(idealOfSet π (s : Set X)).IsMaximal β IsCoatom s :=
by
rw [Ideal.isMaximal_def]
- refine' (ideal_opens_gi X π).isCoatom_iff (fun I hI => _) s
+ refine' (ideal_opens_gi X π).isCoatom_iff_ge_of_le (fun I hI => _) s
rw [β Ideal.isMaximal_def] at hI
skip
exact ideal_of_set_of_ideal_is_closed inferInstance
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -377,7 +377,7 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s
/- Apply Urysohn's lemma to get `g : C(X, β)` which is zero on `sαΆ` and `g x β 0`, then compose
with the natural embedding `β βͺ π` to produce the desired `f`. -/
obtain β¨g, hgs, hgx : Set.EqOn g 1 {x}, -β© :=
- exists_continuous_zero_one_of_closed isClosed_closure isClosed_singleton
+ exists_continuous_zero_one_of_isClosed isClosed_closure isClosed_singleton
(set.disjoint_singleton_right.mpr hx)
exact
β¨β¨fun x => g x, continuous_of_real.comp (map_continuous g)β©, by
@@ -513,7 +513,7 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
refine' β¨fun x y hxy => _, fun Ο => _β©
Β· contrapose! hxy
haveI := @T4Space.of_compactSpace_t2Space X _ _ _
- rcases exists_continuous_zero_one_of_closed (isClosed_singleton : _root_.is_closed {x})
+ rcases exists_continuous_zero_one_of_isClosed (isClosed_singleton : _root_.is_closed {x})
(isClosed_singleton : _root_.is_closed {y}) (set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
rw [β Ne.def, FunLike.ne_iff]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,12 +3,12 @@ Copyright (c) 2022 Jireh Loreaux. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jireh Loreaux
-/
-import Mathbin.Topology.Algebra.Algebra
-import Mathbin.Topology.ContinuousFunction.Compact
-import Mathbin.Topology.UrysohnsLemma
-import Mathbin.Data.IsROrC.Basic
-import Mathbin.Analysis.NormedSpace.Units
-import Mathbin.Topology.Algebra.Module.CharacterSpace
+import Topology.Algebra.Algebra
+import Topology.ContinuousFunction.Compact
+import Topology.UrysohnsLemma
+import Data.IsROrC.Basic
+import Analysis.NormedSpace.Units
+import Topology.Algebra.Module.CharacterSpace
#align_import topology.continuous_function.ideals from "leanprover-community/mathlib"@"8af7091a43227e179939ba132e54e54e9f3b089a"
mathlib commit https://github.com/leanprover-community/mathlib/commit/001ffdc42920050657fd45bd2b8bfbec8eaaeb29
@@ -373,7 +373,7 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s
-- If `x β closure sαΆ`, we must produce `f : C(X, π)` which is zero on `sαΆ` and `f x β 0`.
rw [β compl_compl (interior s), β closure_compl] at hx
simp_rw [mem_set_of_ideal, mem_ideal_of_set]
- haveI : NormalSpace X := normalOfCompactT2
+ haveI : NormalSpace X := T4Space.of_compactSpace_t2Space
/- Apply Urysohn's lemma to get `g : C(X, β)` which is zero on `sαΆ` and `g x β 0`, then compose
with the natural embedding `β βͺ π` to produce the desired `f`. -/
obtain β¨g, hgs, hgx : Set.EqOn g 1 {x}, -β© :=
@@ -512,7 +512,7 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
by
refine' β¨fun x y hxy => _, fun Ο => _β©
Β· contrapose! hxy
- haveI := @normalOfCompactT2 X _ _ _
+ haveI := @T4Space.of_compactSpace_t2Space X _ _ _
rcases exists_continuous_zero_one_of_closed (isClosed_singleton : _root_.is_closed {x})
(isClosed_singleton : _root_.is_closed {y}) (set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -517,7 +517,7 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
(isClosed_singleton : _root_.is_closed {y}) (set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
rw [β Ne.def, FunLike.ne_iff]
- use (β¨coe, IsROrC.continuous_ofRealβ© : C(β, π)).comp f
+ use(β¨coe, IsROrC.continuous_ofRealβ© : C(β, π)).comp f
simpa only [continuous_map_eval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne.def,
IsROrC.ofReal_inj] using
((fx (Set.mem_singleton x)).symm βΈ (fy (Set.mem_singleton y)).symm βΈ zero_ne_one : f x β f y)
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2022 Jireh Loreaux. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jireh Loreaux
-
-! This file was ported from Lean 3 source module topology.continuous_function.ideals
-! leanprover-community/mathlib commit 8af7091a43227e179939ba132e54e54e9f3b089a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Algebra.Algebra
import Mathbin.Topology.ContinuousFunction.Compact
@@ -15,6 +10,8 @@ import Mathbin.Data.IsROrC.Basic
import Mathbin.Analysis.NormedSpace.Units
import Mathbin.Topology.Algebra.Module.CharacterSpace
+#align_import topology.continuous_function.ideals from "leanprover-community/mathlib"@"8af7091a43227e179939ba132e54e54e9f3b089a"
+
/-!
# Ideals of continuous functions
mathlib commit https://github.com/leanprover-community/mathlib/commit/728ef9dbb281241906f25cbeb30f90d83e0bb451
@@ -493,7 +493,7 @@ def continuousMapEval : C(X, characterSpace π C(X, π))
β¨{ toFun := fun f => f x
map_add' := fun f g => rfl
map_smul' := fun z f => rfl
- cont := continuous_eval_const' x }, by rw [character_space.eq_set_map_one_map_mul];
+ cont := continuous_eval_const x }, by rw [character_space.eq_set_map_one_map_mul];
exact β¨rfl, fun f g => rflβ©β©
continuous_toFun := Continuous.subtype_mk (continuous_of_continuous_eval map_continuous) _
#align weak_dual.character_space.continuous_map_eval WeakDual.CharacterSpace.continuousMapEval
mathlib commit https://github.com/leanprover-community/mathlib/commit/bf9bbbcf0c1c1ead18280b0d010e417b10abb1b6
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jireh Loreaux
! This file was ported from Lean 3 source module topology.continuous_function.ideals
-! leanprover-community/mathlib commit c2258f7bf086b17eac0929d635403780c39e239f
+! leanprover-community/mathlib commit 8af7091a43227e179939ba132e54e54e9f3b089a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -18,6 +18,9 @@ import Mathbin.Topology.Algebra.Module.CharacterSpace
/-!
# Ideals of continuous functions
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
For a topological semiring `R` and a topological space `X` there is a Galois connection between
`ideal C(X, R)` and `set X` given by sending each `I : ideal C(X, R)` to
`{x : X | β f β I, f x = 0}αΆ` and mapping `s : set X` to the ideal with carrier
mathlib commit https://github.com/leanprover-community/mathlib/commit/8efcf8022aac8e01df8d302dcebdbc25d6a886c8
@@ -87,6 +87,7 @@ variable [TopologicalSpace R] [TopologicalSemiring R]
variable (R)
+#print ContinuousMap.idealOfSet /-
/-- Given a topological ring `R` and `s : set X`, construct the ideal in `C(X, R)` of functions
which vanish on the complement of `s`. -/
def idealOfSet (s : Set X) : Ideal C(X, R)
@@ -96,7 +97,9 @@ def idealOfSet (s : Set X) : Ideal C(X, R)
zero_mem' _ _ := rfl
smul_mem' c f hf x hx := MulZeroClass.mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
#align continuous_map.ideal_of_set ContinuousMap.idealOfSet
+-/
+#print ContinuousMap.idealOfSet_closed /-
theorem idealOfSet_closed [LocallyCompactSpace X] [T2Space R] (s : Set X) :
IsClosed (idealOfSet R s : Set C(X, R)) :=
by
@@ -105,34 +108,46 @@ theorem idealOfSet_closed [LocallyCompactSpace X] [T2Space R] (s : Set X) :
isClosed_iInter fun x =>
isClosed_iInter fun hx => isClosed_eq (continuous_eval_const' x) continuous_const
#align continuous_map.ideal_of_set_closed ContinuousMap.idealOfSet_closed
+-/
variable {R}
+#print ContinuousMap.mem_idealOfSet /-
theorem mem_idealOfSet {s : Set X} {f : C(X, R)} :
f β idealOfSet R s β β β¦x : Xβ¦, x β sαΆ β f x = 0 :=
Iff.rfl
#align continuous_map.mem_ideal_of_set ContinuousMap.mem_idealOfSet
+-/
+#print ContinuousMap.not_mem_idealOfSet /-
theorem not_mem_idealOfSet {s : Set X} {f : C(X, R)} : f β idealOfSet R s β β x β sαΆ, f x β 0 := by
simp_rw [mem_ideal_of_set, exists_prop]; push_neg
#align continuous_map.not_mem_ideal_of_set ContinuousMap.not_mem_idealOfSet
+-/
+#print ContinuousMap.setOfIdeal /-
/-- Given an ideal `I` of `C(X, R)`, construct the set of points for which every function in the
ideal vanishes on the complement. -/
def setOfIdeal (I : Ideal C(X, R)) : Set X :=
{x : X | β f β I, (f : C(X, R)) x = 0}αΆ
#align continuous_map.set_of_ideal ContinuousMap.setOfIdeal
+-/
+#print ContinuousMap.not_mem_setOfIdeal /-
theorem not_mem_setOfIdeal {I : Ideal C(X, R)} {x : X} :
x β setOfIdeal I β β β¦f : C(X, R)β¦, f β I β f x = 0 := by
rw [β Set.mem_compl_iff, set_of_ideal, compl_compl, Set.mem_setOf]
#align continuous_map.not_mem_set_of_ideal ContinuousMap.not_mem_setOfIdeal
+-/
+#print ContinuousMap.mem_setOfIdeal /-
theorem mem_setOfIdeal {I : Ideal C(X, R)} {x : X} :
x β setOfIdeal I β β f β I, (f : C(X, R)) x β 0 := by
simp_rw [set_of_ideal, Set.mem_compl_iff, Set.mem_setOf, exists_prop]; push_neg
#align continuous_map.mem_set_of_ideal ContinuousMap.mem_setOfIdeal
+-/
+#print ContinuousMap.setOfIdeal_open /-
theorem setOfIdeal_open [T2Space R] (I : Ideal C(X, R)) : IsOpen (setOfIdeal I) :=
by
simp only [set_of_ideal, Set.setOf_forall, isOpen_compl_iff]
@@ -140,33 +155,43 @@ theorem setOfIdeal_open [T2Space R] (I : Ideal C(X, R)) : IsOpen (setOfIdeal I)
isClosed_iInter fun f =>
isClosed_iInter fun hf => isClosed_eq (map_continuous f) continuous_const
#align continuous_map.set_of_ideal_open ContinuousMap.setOfIdeal_open
+-/
+#print ContinuousMap.opensOfIdeal /-
/-- The open set `set_of_ideal I` realized as a term of `opens X`. -/
@[simps]
def opensOfIdeal [T2Space R] (I : Ideal C(X, R)) : Opens X :=
β¨setOfIdeal I, setOfIdeal_open Iβ©
#align continuous_map.opens_of_ideal ContinuousMap.opensOfIdeal
+-/
+#print ContinuousMap.setOfTop_eq_univ /-
@[simp]
-theorem set_of_top_eq_univ [Nontrivial R] : setOfIdeal (β€ : Ideal C(X, R)) = Set.univ :=
+theorem setOfTop_eq_univ [Nontrivial R] : setOfIdeal (β€ : Ideal C(X, R)) = Set.univ :=
Set.univ_subset_iff.mp fun x hx => mem_setOfIdeal.mpr β¨1, Submodule.mem_top, one_ne_zeroβ©
-#align continuous_map.set_of_top_eq_univ ContinuousMap.set_of_top_eq_univ
+#align continuous_map.set_of_top_eq_univ ContinuousMap.setOfTop_eq_univ
+-/
+#print ContinuousMap.idealOfEmpty_eq_bot /-
@[simp]
-theorem ideal_of_empty_eq_bot : idealOfSet R (β
: Set X) = β₯ :=
+theorem idealOfEmpty_eq_bot : idealOfSet R (β
: Set X) = β₯ :=
Ideal.ext fun f => by
simpa only [mem_ideal_of_set, Set.compl_empty, Set.mem_univ, forall_true_left, Ideal.mem_bot,
FunLike.ext_iff] using Iff.rfl
-#align continuous_map.ideal_of_empty_eq_bot ContinuousMap.ideal_of_empty_eq_bot
+#align continuous_map.ideal_of_empty_eq_bot ContinuousMap.idealOfEmpty_eq_bot
+-/
+#print ContinuousMap.mem_idealOfSet_compl_singleton /-
@[simp]
theorem mem_idealOfSet_compl_singleton (x : X) (f : C(X, R)) :
f β idealOfSet R ({x}αΆ : Set X) β f x = 0 := by
simp only [mem_ideal_of_set, compl_compl, Set.mem_singleton_iff, forall_eq]
#align continuous_map.mem_ideal_of_set_compl_singleton ContinuousMap.mem_idealOfSet_compl_singleton
+-/
variable (X R)
+#print ContinuousMap.ideal_gc /-
theorem ideal_gc : GaloisConnection (setOfIdeal : Ideal C(X, R) β Set X) (idealOfSet R) :=
by
refine' fun I s => β¨fun h f hf => _, fun h x hx => _β©
@@ -177,6 +202,7 @@ theorem ideal_gc : GaloisConnection (setOfIdeal : Ideal C(X, R) β Set X) (idea
by_contra hx'
exact not_mem_ideal_of_set.mpr β¨x, hx', hfxβ© (h hf)
#align continuous_map.ideal_gc ContinuousMap.ideal_gc
+-/
end TopologicalRing
@@ -186,6 +212,7 @@ open IsROrC
variable {X π : Type _} [IsROrC π] [TopologicalSpace X]
+#print ContinuousMap.exists_mul_le_one_eqOn_ge /-
/-- An auxiliary lemma used in the proof of `ideal_of_set_of_ideal_eq_closure` which may be useful
on its own. -/
theorem exists_mul_le_one_eqOn_ge (f : C(X, ββ₯0)) {c : ββ₯0} (hc : 0 < c) :
@@ -200,11 +227,13 @@ theorem exists_mul_le_one_eqOn_ge (f : C(X, ββ₯0)) {c : ββ₯0} (hc : 0 < c)
Pi.one_apply, sup_eq_left.mpr (set.mem_set_of.mp hx)] using
inv_mul_cancel (hc.trans_le hx).ne'β©
#align continuous_map.exists_mul_le_one_eq_on_ge ContinuousMap.exists_mul_le_one_eqOn_ge
+-/
variable [CompactSpace X] [T2Space X]
+#print ContinuousMap.idealOfSet_ofIdeal_eq_closure /-
@[simp]
-theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
+theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
idealOfSet π (setOfIdeal I) = I.closure :=
by
/- Since `ideal_of_set π (set_of_ideal I)` is closed and contains `I`, it contains `I.closure`.
@@ -319,17 +348,21 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
convert I.mul_mem_left ((algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) hI'
ext
simp only [algebraMapClm_coe, ContinuousMap.coe_coe, comp_apply, coe_mul, Pi.mul_apply, map_mul]
-#align continuous_map.ideal_of_set_of_ideal_eq_closure ContinuousMap.idealOfSet_of_ideal_eq_closure
+#align continuous_map.ideal_of_set_of_ideal_eq_closure ContinuousMap.idealOfSet_ofIdeal_eq_closure
+-/
-theorem idealOfSet_of_ideal_isClosed {I : Ideal C(X, π)} (hI : IsClosed (I : Set C(X, π))) :
+#print ContinuousMap.idealOfSet_ofIdeal_isClosed /-
+theorem idealOfSet_ofIdeal_isClosed {I : Ideal C(X, π)} (hI : IsClosed (I : Set C(X, π))) :
idealOfSet π (setOfIdeal I) = I :=
- (idealOfSet_of_ideal_eq_closure I).trans (Ideal.ext <| Set.ext_iff.mp hI.closure_eq)
-#align continuous_map.ideal_of_set_of_ideal_is_closed ContinuousMap.idealOfSet_of_ideal_isClosed
+ (idealOfSet_ofIdeal_eq_closure I).trans (Ideal.ext <| Set.ext_iff.mp hI.closure_eq)
+#align continuous_map.ideal_of_set_of_ideal_is_closed ContinuousMap.idealOfSet_ofIdeal_isClosed
+-/
variable (π)
+#print ContinuousMap.setOfIdeal_ofSet_eq_interior /-
@[simp]
-theorem setOfIdeal_of_set_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s) = interior s :=
+theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s) = interior s :=
by
refine'
Set.Subset.antisymm
@@ -351,32 +384,38 @@ theorem setOfIdeal_of_set_eq_interior (s : Set X) : setOfIdeal (idealOfSet π
simpa only [coe_mk, of_real_eq_zero] using fun x hx => hgs (subset_closure hx), by
simpa only [coe_mk, hgx (Set.mem_singleton x), Pi.one_apply, IsROrC.ofReal_one] using
one_ne_zeroβ©
-#align continuous_map.set_of_ideal_of_set_eq_interior ContinuousMap.setOfIdeal_of_set_eq_interior
+#align continuous_map.set_of_ideal_of_set_eq_interior ContinuousMap.setOfIdeal_ofSet_eq_interior
+-/
-theorem setOfIdeal_of_set_of_isOpen {s : Set X} (hs : IsOpen s) : setOfIdeal (idealOfSet π s) = s :=
- (setOfIdeal_of_set_eq_interior π s).trans hs.interior_eq
-#align continuous_map.set_of_ideal_of_set_of_is_open ContinuousMap.setOfIdeal_of_set_of_isOpen
+#print ContinuousMap.setOfIdeal_ofSet_of_isOpen /-
+theorem setOfIdeal_ofSet_of_isOpen {s : Set X} (hs : IsOpen s) : setOfIdeal (idealOfSet π s) = s :=
+ (setOfIdeal_ofSet_eq_interior π s).trans hs.interior_eq
+#align continuous_map.set_of_ideal_of_set_of_is_open ContinuousMap.setOfIdeal_ofSet_of_isOpen
+-/
variable (X)
+#print ContinuousMap.idealOpensGI /-
/-- The Galois insertion `continuous_map.opens_of_ideal : ideal C(X, π) β opens X` and
`Ξ» s, continuous_map.ideal_of_set βs`. -/
@[simps]
-def idealOpensGi : GaloisInsertion (opensOfIdeal : Ideal C(X, π) β Opens X) fun s => idealOfSet π s
+def idealOpensGI : GaloisInsertion (opensOfIdeal : Ideal C(X, π) β Opens X) fun s => idealOfSet π s
where
choice I hI := opensOfIdeal I.closure
gc I s := ideal_gc X π I s
- le_l_u s := (setOfIdeal_of_set_of_isOpen π s.IsOpen).ge
+ le_l_u s := (setOfIdeal_ofSet_of_isOpen π s.IsOpen).ge
choice_eq I hI :=
congr_arg _ <|
Ideal.ext
(Set.ext_iff.mp
(isClosed_of_closure_subset <|
- (idealOfSet_of_ideal_eq_closure I βΈ hI : I.closure β€ I)).closure_eq)
-#align continuous_map.ideal_opens_gi ContinuousMap.idealOpensGi
+ (idealOfSet_ofIdeal_eq_closure I βΈ hI : I.closure β€ I)).closure_eq)
+#align continuous_map.ideal_opens_gi ContinuousMap.idealOpensGI
+-/
variable {X}
+#print ContinuousMap.idealOfSet_isMaximal_iff /-
theorem idealOfSet_isMaximal_iff (s : Opens X) :
(idealOfSet π (s : Set X)).IsMaximal β IsCoatom s :=
by
@@ -386,13 +425,17 @@ theorem idealOfSet_isMaximal_iff (s : Opens X) :
skip
exact ideal_of_set_of_ideal_is_closed inferInstance
#align continuous_map.ideal_of_set_is_maximal_iff ContinuousMap.idealOfSet_isMaximal_iff
+-/
-theorem ideal_of_compl_singleton_isMaximal (x : X) : (idealOfSet π ({x}αΆ : Set X)).IsMaximal :=
+#print ContinuousMap.idealOf_compl_singleton_isMaximal /-
+theorem idealOf_compl_singleton_isMaximal (x : X) : (idealOfSet π ({x}αΆ : Set X)).IsMaximal :=
(idealOfSet_isMaximal_iff π (Closeds.singleton x).compl).mpr <| Opens.isCoatom_iff.mpr β¨x, rflβ©
-#align continuous_map.ideal_of_compl_singleton_is_maximal ContinuousMap.ideal_of_compl_singleton_isMaximal
+#align continuous_map.ideal_of_compl_singleton_is_maximal ContinuousMap.idealOf_compl_singleton_isMaximal
+-/
variable {π}
+#print ContinuousMap.setOfIdeal_eq_compl_singleton /-
theorem setOfIdeal_eq_compl_singleton (I : Ideal C(X, π)) [hI : I.IsMaximal] :
β x : X, setOfIdeal I = {x}αΆ :=
by
@@ -401,7 +444,9 @@ theorem setOfIdeal_eq_compl_singleton (I : Ideal C(X, π)) [hI : I.IsMaximal]
obtain β¨x, hxβ© := opens.is_coatom_iff.1 ((ideal_of_set_is_maximal_iff π (opens_of_ideal I)).1 h)
exact β¨x, congr_arg coe hxβ©
#align continuous_map.set_of_ideal_eq_compl_singleton ContinuousMap.setOfIdeal_eq_compl_singleton
+-/
+#print ContinuousMap.ideal_isMaximal_iff /-
theorem ideal_isMaximal_iff (I : Ideal C(X, π)) [hI : IsClosed (I : Set C(X, π))] :
I.IsMaximal β β x : X, idealOfSet π ({x}αΆ) = I :=
by
@@ -416,6 +461,7 @@ theorem ideal_isMaximal_iff (I : Ideal C(X, π)) [hI : IsClosed (I : Set C(X,
simpa only [ideal_of_set_of_ideal_eq_closure, Ideal.closure_eq_of_isClosed] using
congr_arg (ideal_of_set π) hx.symmβ©
#align continuous_map.ideal_is_maximal_iff ContinuousMap.ideal_isMaximal_iff
+-/
end IsROrC
@@ -435,6 +481,7 @@ variable [LocallyCompactSpace X] [CommRing π] [TopologicalSpace π] [Topolo
variable [Nontrivial π] [NoZeroDivisors π]
+#print WeakDual.CharacterSpace.continuousMapEval /-
/-- The natural continuous map from a locally compact topological space `X` to the
`character_space π C(X, π)` which sends `x : X` to point evaluation at `x`. -/
def continuousMapEval : C(X, characterSpace π C(X, π))
@@ -446,17 +493,21 @@ def continuousMapEval : C(X, characterSpace π C(X, π))
cont := continuous_eval_const' x }, by rw [character_space.eq_set_map_one_map_mul];
exact β¨rfl, fun f g => rflβ©β©
continuous_toFun := Continuous.subtype_mk (continuous_of_continuous_eval map_continuous) _
-#align weak_dual.character_space.continuous_map_eval WeakDual.characterSpace.continuousMapEval
+#align weak_dual.character_space.continuous_map_eval WeakDual.CharacterSpace.continuousMapEval
+-/
+#print WeakDual.CharacterSpace.continuousMapEval_apply_apply /-
@[simp]
theorem continuousMapEval_apply_apply (x : X) (f : C(X, π)) : continuousMapEval X π x f = f x :=
rfl
-#align weak_dual.character_space.continuous_map_eval_apply_apply WeakDual.characterSpace.continuousMapEval_apply_apply
+#align weak_dual.character_space.continuous_map_eval_apply_apply WeakDual.CharacterSpace.continuousMapEval_apply_apply
+-/
end ContinuousMapEval
variable [CompactSpace X] [T2Space X] [IsROrC π]
+#print WeakDual.CharacterSpace.continuousMapEval_bijective /-
theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
by
refine' β¨fun x y hxy => _, fun Ο => _β©
@@ -474,15 +525,18 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
refine' β¨x, ext_ker <| Ideal.ext fun f => _β©
simpa only [RingHom.mem_ker, continuous_map_eval_apply_apply, mem_ideal_of_set_compl_singleton,
RingHom.mem_ker] using set_like.ext_iff.mp hx f
-#align weak_dual.character_space.continuous_map_eval_bijective WeakDual.characterSpace.continuousMapEval_bijective
+#align weak_dual.character_space.continuous_map_eval_bijective WeakDual.CharacterSpace.continuousMapEval_bijective
+-/
+#print WeakDual.CharacterSpace.homeoEval /-
/-- This is the natural homeomorphism between a compact Hausdorff space `X` and the
`character_space π C(X, π)`. -/
noncomputable def homeoEval : X ββ characterSpace π C(X, π) :=
@Continuous.homeoOfEquivCompactToT2 _ _ _ _ _ _
{ Equiv.ofBijective _ (continuousMapEval_bijective X π) with toFun := continuousMapEval X π }
(map_continuous (continuousMapEval X π))
-#align weak_dual.character_space.homeo_eval WeakDual.characterSpace.homeoEval
+#align weak_dual.character_space.homeo_eval WeakDual.CharacterSpace.homeoEval
+-/
end CharacterSpace
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -254,7 +254,6 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
simp only [Algebra.algebraMap_eq_smul_one, NNReal.smul_def, NNReal.coe_sub (hg x),
sub_smul, Nonneg.coe_one, one_smul]
_ β€ 1 := (nnnorm_algebraMap_nNReal π (1 - g x)).trans_le tsub_le_self
-
calc
βf x - f x * (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g xββ =
βf x * (1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
@@ -263,7 +262,6 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
((nnnorm_mul_le _ _).trans
(mul_le_mul_right' (not_le.mp <| show ¬Ρ / 2 β€ βf xββ from hx).le _))
_ β€ Ξ΅ / 2 := by simpa only [mul_one] using mul_le_mul_left' this _
-
/- There is some `g' : C(X, ββ₯0)` which is strictly positive on `t` such that the composition
`βg` with the natural embedding of `ββ₯0` into `π` lies in `I`. This follows from compactness of
`t` and that we can do it in any neighborhood of a point `x β t`. Indeed, since `x β t`, then
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -91,7 +91,7 @@ variable (R)
which vanish on the complement of `s`. -/
def idealOfSet (s : Set X) : Ideal C(X, R)
where
- carrier := { f : C(X, R) | β x β sαΆ, f x = 0 }
+ carrier := {f : C(X, R) | β x β sαΆ, f x = 0}
add_mem' f g hf hg x hx := by simp only [hf x hx, hg x hx, coe_add, Pi.add_apply, add_zero]
zero_mem' _ _ := rfl
smul_mem' c f hf x hx := MulZeroClass.mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
@@ -120,7 +120,7 @@ theorem not_mem_idealOfSet {s : Set X} {f : C(X, R)} : f β idealOfSet R s β
/-- Given an ideal `I` of `C(X, R)`, construct the set of points for which every function in the
ideal vanishes on the complement. -/
def setOfIdeal (I : Ideal C(X, R)) : Set X :=
- { x : X | β f β I, (f : C(X, R)) x = 0 }αΆ
+ {x : X | β f β I, (f : C(X, R)) x = 0}αΆ
#align continuous_map.set_of_ideal ContinuousMap.setOfIdeal
theorem not_mem_setOfIdeal {I : Ideal C(X, R)} {x : X} :
@@ -189,7 +189,7 @@ variable {X π : Type _} [IsROrC π] [TopologicalSpace X]
/-- An auxiliary lemma used in the proof of `ideal_of_set_of_ideal_eq_closure` which may be useful
on its own. -/
theorem exists_mul_le_one_eqOn_ge (f : C(X, ββ₯0)) {c : ββ₯0} (hc : 0 < c) :
- β g : C(X, ββ₯0), (β x : X, (g * f) x β€ 1) β§ { x : X | c β€ f x }.EqOn (g * f) 1 :=
+ β g : C(X, ββ₯0), (β x : X, (g * f) x β€ 1) β§ {x : X | c β€ f x}.EqOn (g * f) 1 :=
β¨{ toFun := (f β const X c)β»ΒΉ
continuous_toFun :=
((map_continuous f).sup <| map_continuous _).invβ fun _ => (hc.trans_le le_sup_right).ne' },
@@ -219,7 +219,7 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
simp_rw [dist_nndist]
norm_cast
-- Let `t := {x : X | Ξ΅ / 2 β€ βf xββ}}` which is closed and disjoint from `set_of_ideal I`.
- set t := { x : X | Ξ΅ / 2 β€ βf xββ }
+ set t := {x : X | Ξ΅ / 2 β€ βf xββ}
have ht : IsClosed t := isClosed_le continuous_const (map_continuous f).nnnorm
have htI : Disjoint t (set_of_ideal IαΆ) :=
by
@@ -298,7 +298,7 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
obtain β¨g, hI, hgxβ© := hx
have := (map_continuous g).ContinuousAt.eventually_ne hgx
refine'
- β¨{ y : X | g y β 0 } β© t,
+ β¨{y : X | g y β 0} β© t,
mem_nhds_within_iff_exists_mem_nhds_inter.mpr β¨_, this, Set.Subset.rflβ©,
β¨β¨fun x => βg xββ ^ 2, (map_continuous g).nnnorm.pow 2β©, _, fun x hx =>
pow_pos (norm_pos_iff.mpr hx.1) 2β©β©
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -294,7 +294,7 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
simpa only [zero_add] using add_lt_add_of_le_of_lt zero_le' (hgtβ x hx)
Β· intro x hx
replace hx := htI.subset_compl_right hx
- rw [compl_compl, mem_set_of_ideal] at hx
+ rw [compl_compl, mem_set_of_ideal] at hx
obtain β¨g, hI, hgxβ© := hx
have := (map_continuous g).ContinuousAt.eventually_ne hgx
refine'
@@ -311,9 +311,9 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
compactness of `t`, there is some `0 < c` such that `c β€ g' x` for all `x β t`. Then by
`main_lemma_aux` there is some `g` for which `g * g'` is the desired function. -/
obtain β¨g', hI', hgt'β© := this
- obtain β¨c, hc, hgc'β© : β (c : _)(hc : 0 < c), β y : X, y β t β c β€ g' y :=
+ obtain β¨c, hc, hgc'β© : β (c : _) (hc : 0 < c), β y : X, y β t β c β€ g' y :=
t.eq_empty_or_nonempty.elim
- (fun ht' => β¨1, zero_lt_one, fun y hy => False.elim (by rwa [ht'] at hy)β©) fun ht' =>
+ (fun ht' => β¨1, zero_lt_one, fun y hy => False.elim (by rwa [ht'] at hy )β©) fun ht' =>
let β¨x, hx, hx'β© := ht.is_compact.exists_forall_le ht' (map_continuous g').ContinuousOn
β¨g' x, hgt' x hx, hx'β©
obtain β¨g, hg, hgcβ© := exists_mul_le_one_eq_on_ge g' hc
@@ -340,7 +340,7 @@ theorem setOfIdeal_of_set_eq_interior (s : Set X) : setOfIdeal (idealOfSet π
set.not_mem_compl_iff.mp (mt (@hf x) hfx))
fun x hx => _
-- If `x β closure sαΆ`, we must produce `f : C(X, π)` which is zero on `sαΆ` and `f x β 0`.
- rw [β compl_compl (interior s), β closure_compl] at hx
+ rw [β compl_compl (interior s), β closure_compl] at hx
simp_rw [mem_set_of_ideal, mem_ideal_of_set]
haveI : NormalSpace X := normalOfCompactT2
/- Apply Urysohn's lemma to get `g : C(X, β)` which is zero on `sαΆ` and `g x β 0`, then compose
@@ -384,7 +384,7 @@ theorem idealOfSet_isMaximal_iff (s : Opens X) :
by
rw [Ideal.isMaximal_def]
refine' (ideal_opens_gi X π).isCoatom_iff (fun I hI => _) s
- rw [β Ideal.isMaximal_def] at hI
+ rw [β Ideal.isMaximal_def] at hI
skip
exact ideal_of_set_of_ideal_is_closed inferInstance
#align continuous_map.ideal_of_set_is_maximal_iff ContinuousMap.idealOfSet_isMaximal_iff
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -73,7 +73,7 @@ ideal, continuous function, compact, Hausdorff
-/
-open NNReal
+open scoped NNReal
namespace ContinuousMap
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -113,10 +113,8 @@ theorem mem_idealOfSet {s : Set X} {f : C(X, R)} :
Iff.rfl
#align continuous_map.mem_ideal_of_set ContinuousMap.mem_idealOfSet
-theorem not_mem_idealOfSet {s : Set X} {f : C(X, R)} : f β idealOfSet R s β β x β sαΆ, f x β 0 :=
- by
- simp_rw [mem_ideal_of_set, exists_prop]
- push_neg
+theorem not_mem_idealOfSet {s : Set X} {f : C(X, R)} : f β idealOfSet R s β β x β sαΆ, f x β 0 := by
+ simp_rw [mem_ideal_of_set, exists_prop]; push_neg
#align continuous_map.not_mem_ideal_of_set ContinuousMap.not_mem_idealOfSet
/-- Given an ideal `I` of `C(X, R)`, construct the set of points for which every function in the
@@ -131,10 +129,8 @@ theorem not_mem_setOfIdeal {I : Ideal C(X, R)} {x : X} :
#align continuous_map.not_mem_set_of_ideal ContinuousMap.not_mem_setOfIdeal
theorem mem_setOfIdeal {I : Ideal C(X, R)} {x : X} :
- x β setOfIdeal I β β f β I, (f : C(X, R)) x β 0 :=
- by
- simp_rw [set_of_ideal, Set.mem_compl_iff, Set.mem_setOf, exists_prop]
- push_neg
+ x β setOfIdeal I β β f β I, (f : C(X, R)) x β 0 := by
+ simp_rw [set_of_ideal, Set.mem_compl_iff, Set.mem_setOf, exists_prop]; push_neg
#align continuous_map.mem_set_of_ideal ContinuousMap.mem_setOfIdeal
theorem setOfIdeal_open [T2Space R] (I : Ideal C(X, R)) : IsOpen (setOfIdeal I) :=
@@ -286,8 +282,7 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
ext
simp only [coe_zero, Pi.zero_apply, ContinuousMap.coe_coe, ContinuousMap.coe_comp, map_zero,
Pi.comp_zero]
- Β· rintro sβ sβ hs β¨g, hI, hgtβ©
- exact β¨g, hI, fun x hx => hgt x (hs hx)β©
+ Β· rintro sβ sβ hs β¨g, hI, hgtβ©; exact β¨g, hI, fun x hx => hgt x (hs hx)β©
Β· rintro sβ sβ β¨gβ, hIβ, hgtββ© β¨gβ, hIβ, hgtββ©
refine' β¨gβ + gβ, _, fun x hx => _β©
Β· convert I.add_mem hIβ hIβ
@@ -450,9 +445,7 @@ def continuousMapEval : C(X, characterSpace π C(X, π))
β¨{ toFun := fun f => f x
map_add' := fun f g => rfl
map_smul' := fun z f => rfl
- cont := continuous_eval_const' x },
- by
- rw [character_space.eq_set_map_one_map_mul]
+ cont := continuous_eval_const' x }, by rw [character_space.eq_set_map_one_map_mul];
exact β¨rfl, fun f g => rflβ©β©
continuous_toFun := Continuous.subtype_mk (continuous_of_continuous_eval map_continuous) _
#align weak_dual.character_space.continuous_map_eval WeakDual.characterSpace.continuousMapEval
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jireh Loreaux
! This file was ported from Lean 3 source module topology.continuous_function.ideals
-! leanprover-community/mathlib commit 25580801f04aed44a0daf912d3760d0eaaf6d1bb
+! leanprover-community/mathlib commit c2258f7bf086b17eac0929d635403780c39e239f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -18,7 +18,7 @@ import Mathbin.Topology.Algebra.Module.CharacterSpace
/-!
# Ideals of continuous functions
-For a topological ring `R` and a topological space `X` there is a Galois connection between
+For a topological semiring `R` and a topological space `X` there is a Galois connection between
`ideal C(X, R)` and `set X` given by sending each `I : ideal C(X, R)` to
`{x : X | β f β I, f x = 0}αΆ` and mapping `s : set X` to the ideal with carrier
`{f : C(X, R) | β x β sαΆ, f x = 0}`, and we call these maps `continuous_map.set_of_ideal` and
@@ -81,7 +81,9 @@ open TopologicalSpace
section TopologicalRing
-variable {X R : Type _} [TopologicalSpace X] [Ring R] [TopologicalSpace R] [TopologicalRing R]
+variable {X R : Type _} [TopologicalSpace X] [Semiring R]
+
+variable [TopologicalSpace R] [TopologicalSemiring R]
variable (R)
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -100,8 +100,8 @@ theorem idealOfSet_closed [LocallyCompactSpace X] [T2Space R] (s : Set X) :
by
simp only [ideal_of_set, Submodule.coe_set_mk, Set.setOf_forall]
exact
- isClosed_interα΅’ fun x =>
- isClosed_interα΅’ fun hx => isClosed_eq (continuous_eval_const' x) continuous_const
+ isClosed_iInter fun x =>
+ isClosed_iInter fun hx => isClosed_eq (continuous_eval_const' x) continuous_const
#align continuous_map.ideal_of_set_closed ContinuousMap.idealOfSet_closed
variable {R}
@@ -139,8 +139,8 @@ theorem setOfIdeal_open [T2Space R] (I : Ideal C(X, R)) : IsOpen (setOfIdeal I)
by
simp only [set_of_ideal, Set.setOf_forall, isOpen_compl_iff]
exact
- isClosed_interα΅’ fun f =>
- isClosed_interα΅’ fun hf => isClosed_eq (map_continuous f) continuous_const
+ isClosed_iInter fun f =>
+ isClosed_iInter fun hf => isClosed_eq (map_continuous f) continuous_const
#align continuous_map.set_of_ideal_open ContinuousMap.setOfIdeal_open
/-- The open set `set_of_ideal I` realized as a term of `opens X`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/2f8347015b12b0864dfaf366ec4909eb70c78740
@@ -354,7 +354,7 @@ theorem setOfIdeal_of_set_eq_interior (s : Set X) : setOfIdeal (idealOfSet π
exact
β¨β¨fun x => g x, continuous_of_real.comp (map_continuous g)β©, by
simpa only [coe_mk, of_real_eq_zero] using fun x hx => hgs (subset_closure hx), by
- simpa only [coe_mk, hgx (Set.mem_singleton x), Pi.one_apply, IsROrC.of_real_one] using
+ simpa only [coe_mk, hgx (Set.mem_singleton x), Pi.one_apply, IsROrC.ofReal_one] using
one_ne_zeroβ©
#align continuous_map.set_of_ideal_of_set_eq_interior ContinuousMap.setOfIdeal_of_set_eq_interior
@@ -473,9 +473,9 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) :=
(isClosed_singleton : _root_.is_closed {y}) (set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
rw [β Ne.def, FunLike.ne_iff]
- use (β¨coe, IsROrC.continuous_of_realβ© : C(β, π)).comp f
+ use (β¨coe, IsROrC.continuous_ofRealβ© : C(β, π)).comp f
simpa only [continuous_map_eval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne.def,
- IsROrC.of_real_inj] using
+ IsROrC.ofReal_inj] using
((fx (Set.mem_singleton x)).symm βΈ (fy (Set.mem_singleton y)).symm βΈ zero_ne_one : f x β f y)
Β· obtain β¨x, hxβ© := (ideal_is_maximal_iff (RingHom.ker Ο)).mp inferInstance
refine' β¨x, ext_ker <| Ideal.ext fun f => _β©
mathlib commit https://github.com/leanprover-community/mathlib/commit/3905fa80e62c0898131285baab35559fbc4e5cda
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jireh Loreaux
! This file was ported from Lean 3 source module topology.continuous_function.ideals
-! leanprover-community/mathlib commit d39590fc8728fbf6743249802486f8c91ffe07bc
+! leanprover-community/mathlib commit 25580801f04aed44a0daf912d3760d0eaaf6d1bb
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -309,7 +309,7 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
ext
simp only [comp_apply, coe_mk, algebraMapClm_coe, map_pow, coe_mul, coe_star, Pi.mul_apply,
Pi.star_apply, star_def, ContinuousMap.coe_coe]
- simpa only [norm_sq_eq_def', conj_mul_eq_norm_sq_left, of_real_pow]
+ simpa only [norm_sq_eq_def', IsROrC.conj_mul, of_real_pow]
/- Get the function `g'` which is guaranteed to exist above. By the extreme value theorem and
compactness of `t`, there is some `0 < c` such that `c β€ g' x` for all `x β t`. Then by
`main_lemma_aux` there is some `g` for which `g * g'` is the desired function. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -92,7 +92,7 @@ def idealOfSet (s : Set X) : Ideal C(X, R)
carrier := { f : C(X, R) | β x β sαΆ, f x = 0 }
add_mem' f g hf hg x hx := by simp only [hf x hx, hg x hx, coe_add, Pi.add_apply, add_zero]
zero_mem' _ _ := rfl
- smul_mem' c f hf x hx := mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
+ smul_mem' c f hf x hx := MulZeroClass.mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
#align continuous_map.ideal_of_set ContinuousMap.idealOfSet
theorem idealOfSet_closed [LocallyCompactSpace X] [T2Space R] (s : Set X) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -262,8 +262,8 @@ theorem idealOfSet_of_ideal_eq_closure (I : Ideal C(X, π)) :
βf x * (1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
by simp only [mul_sub, coe_sub, coe_one, Pi.sub_apply, Pi.one_apply, mul_one]
_ β€ Ξ΅ / 2 * β(1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
- (nnnorm_mul_le _ _).trans
- (mul_le_mul_right' (not_le.mp <| show ¬Ρ / 2 β€ βf xββ from hx).le _)
+ ((nnnorm_mul_le _ _).trans
+ (mul_le_mul_right' (not_le.mp <| show ¬Ρ / 2 β€ βf xββ from hx).le _))
_ β€ Ξ΅ / 2 := by simpa only [mul_one] using mul_le_mul_left' this _
/- There is some `g' : C(X, ββ₯0)` which is strictly positive on `t` such that the composition
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
These are changes from #11997, the latest adaptation PR for nightly-2024-04-07, which can be made directly on master.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>
@@ -437,7 +437,7 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) := by
β¨f, fx, fy, -β©
rw [DFunLike.ne_iff]
use (β¨fun (x : β) => (x : π), RCLike.continuous_ofRealβ© : C(β, π)).comp f
- simpa only [continuousMapEval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne.def,
+ simpa only [continuousMapEval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne,
RCLike.ofReal_inj] using
((fx (Set.mem_singleton x)).symm βΈ (fy (Set.mem_singleton y)).symm βΈ zero_ne_one : f x β f y)
Β· obtain β¨x, hxβ© := (ideal_isMaximal_iff (RingHom.ker Ο)).mp inferInstance
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -198,7 +198,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
idealOfSet π (setOfIdeal I) = I.closure := by
/- Since `idealOfSet π (setOfIdeal I)` is closed and contains `I`, it contains `I.closure`.
For the reverse inclusion, given `f β idealOfSet π (setOfIdeal I)` and `(Ξ΅ : ββ₯0) > 0` it
- suffices to show that `f` is within `Ξ΅` of `I`.-/
+ suffices to show that `f` is within `Ξ΅` of `I`. -/
refine' le_antisymm _
((idealOfSet_closed π <| setOfIdeal I).closure_subset_iff.mpr fun f hf x hx =>
not_mem_setOfIdeal.mp hx hf)
Data
(#11753)
RCLike
is an analytic typeclass, hence should be under Analysis
@@ -6,7 +6,7 @@ Authors: Jireh Loreaux
import Mathlib.Topology.Algebra.Algebra
import Mathlib.Topology.ContinuousFunction.Compact
import Mathlib.Topology.UrysohnsLemma
-import Mathlib.Data.RCLike.Basic
+import Mathlib.Analysis.RCLike.Basic
import Mathlib.Analysis.NormedSpace.Units
import Mathlib.Topology.Algebra.Module.CharacterSpace
IsROrC
to RCLike
(#10819)
IsROrC
contains data, which goes against the expectation that classes prefixed with Is
are prop-valued. People have been complaining about this on and off, so this PR renames IsROrC
to RCLike
.
@@ -6,7 +6,7 @@ Authors: Jireh Loreaux
import Mathlib.Topology.Algebra.Algebra
import Mathlib.Topology.ContinuousFunction.Compact
import Mathlib.Topology.UrysohnsLemma
-import Mathlib.Data.IsROrC.Basic
+import Mathlib.Data.RCLike.Basic
import Mathlib.Analysis.NormedSpace.Units
import Mathlib.Topology.Algebra.Module.CharacterSpace
@@ -22,7 +22,7 @@ For a topological semiring `R` and a topological space `X` there is a Galois con
`ContinuousMap.idealOfSet`. As long as `R` is Hausdorff, `ContinuousMap.setOfIdeal I` is open,
and if, in addition, `X` is locally compact, then `ContinuousMap.setOfIdeal s` is closed.
-When `R = π` with `IsROrC π` and `X` is compact Hausdorff, then this Galois connection can be
+When `R = π` with `RCLike π` and `X` is compact Hausdorff, then this Galois connection can be
improved to a true Galois correspondence (i.e., order isomorphism) between the type `opens X` and
the subtype of closed ideals of `C(X, π)`. Because we do not have a bundled type of closed ideals,
we simply register this as a Galois insertion between `Ideal C(X, π)` and `opens X`, which is
@@ -32,7 +32,7 @@ ideals corresponding to (complements of) singletons in `X`.
In addition, when `X` is locally compact and `π` is a nontrivial topological integral domain, then
there is a natural continuous map from `X` to `WeakDual.characterSpace π C(X, π)` given by point
evaluation, which is herein called `WeakDual.CharacterSpace.continuousMapEval`. Again, when `X` is
-compact Hausdorff and `IsROrC π`, more can be obtained. In particular, in that context this map is
+compact Hausdorff and `RCLike π`, more can be obtained. In particular, in that context this map is
bijective, and since the domain is compact and the codomain is Hausdorff, it is a homeomorphism,
herein called `WeakDual.CharacterSpace.homeoEval`.
@@ -47,15 +47,15 @@ herein called `WeakDual.CharacterSpace.homeoEval`.
topological space `X` to the `WeakDual.characterSpace π C(X, π)` which sends `x : X` to point
evaluation at `x`, with modest hypothesis on `π`.
* `WeakDual.CharacterSpace.homeoEval`: this is `WeakDual.CharacterSpace.continuousMapEval`
- upgraded to a homeomorphism when `X` is compact Hausdorff and `IsROrC π`.
+ upgraded to a homeomorphism when `X` is compact Hausdorff and `RCLike π`.
## Main statements
* `ContinuousMap.idealOfSet_ofIdeal_eq_closure`: when `X` is compact Hausdorff and
- `IsROrC π`, `idealOfSet π (setOfIdeal I) = I.closure` for any ideal `I : Ideal C(X, π)`.
-* `ContinuousMap.setOfIdeal_ofSet_eq_interior`: when `X` is compact Hausdorff and `IsROrC π`,
+ `RCLike π`, `idealOfSet π (setOfIdeal I) = I.closure` for any ideal `I : Ideal C(X, π)`.
+* `ContinuousMap.setOfIdeal_ofSet_eq_interior`: when `X` is compact Hausdorff and `RCLike π`,
`setOfIdeal (idealOfSet π s) = interior s` for any `s : Set X`.
-* `ContinuousMap.ideal_isMaximal_iff`: when `X` is compact Hausdorff and `IsROrC π`, a closed
+* `ContinuousMap.ideal_isMaximal_iff`: when `X` is compact Hausdorff and `RCLike π`, a closed
ideal of `C(X, π)` is maximal if and only if it is `idealOfSet π {x}αΆ` for some `x : X`.
## Implementation details
@@ -170,11 +170,11 @@ theorem ideal_gc : GaloisConnection (setOfIdeal : Ideal C(X, R) β Set X) (idea
end TopologicalRing
-section IsROrC
+section RCLike
-open IsROrC
+open RCLike
-variable {X π : Type*} [IsROrC π] [TopologicalSpace X]
+variable {X π : Type*} [RCLike π] [TopologicalSpace X]
/-- An auxiliary lemma used in the proof of `ContinuousMap.idealOfSet_ofIdeal_eq_closure` which may
be useful on its own. -/
@@ -283,7 +283,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
ext
simp only [comp_apply, ContinuousMap.coe_coe, coe_mk, algebraMapCLM_toFun, map_pow,
mul_apply, star_apply, star_def]
- simp only [normSq_eq_def', IsROrC.conj_mul, ofReal_pow]
+ simp only [normSq_eq_def', RCLike.conj_mul, ofReal_pow]
rfl
/- Get the function `g'` which is guaranteed to exist above. By the extreme value theorem and
compactness of `t`, there is some `0 < c` such that `c β€ g' x` for all `x β t`. Then by
@@ -327,7 +327,7 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s
exact
β¨β¨fun x => g x, continuous_ofReal.comp (map_continuous g)β©, by
simpa only [coe_mk, ofReal_eq_zero] using fun x hx => hgs (subset_closure hx), by
- simpa only [coe_mk, hgx (Set.mem_singleton x), Pi.one_apply, IsROrC.ofReal_one] using
+ simpa only [coe_mk, hgx (Set.mem_singleton x), Pi.one_apply, RCLike.ofReal_one] using
one_ne_zeroβ©
#align continuous_map.set_of_ideal_of_set_eq_interior ContinuousMap.setOfIdeal_ofSet_eq_interior
@@ -391,7 +391,7 @@ theorem ideal_isMaximal_iff (I : Ideal C(X, π)) [hI : IsClosed (I : Set C(X,
congr_arg (idealOfSet π) hx.symmβ©
#align continuous_map.ideal_is_maximal_iff ContinuousMap.ideal_isMaximal_iff
-end IsROrC
+end RCLike
end ContinuousMap
@@ -427,7 +427,7 @@ theorem continuousMapEval_apply_apply (x : X) (f : C(X, π)) : continuousMapEv
end ContinuousMapEval
-variable [CompactSpace X] [T2Space X] [IsROrC π]
+variable [CompactSpace X] [T2Space X] [RCLike π]
theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) := by
refine' β¨fun x y hxy => _, fun Ο => _β©
@@ -436,9 +436,9 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) := by
(isClosed_singleton : _root_.IsClosed {y}) (Set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
rw [DFunLike.ne_iff]
- use (β¨fun (x : β) => (x : π), IsROrC.continuous_ofRealβ© : C(β, π)).comp f
+ use (β¨fun (x : β) => (x : π), RCLike.continuous_ofRealβ© : C(β, π)).comp f
simpa only [continuousMapEval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne.def,
- IsROrC.ofReal_inj] using
+ RCLike.ofReal_inj] using
((fx (Set.mem_singleton x)).symm βΈ (fy (Set.mem_singleton y)).symm βΈ zero_ne_one : f x β f y)
Β· obtain β¨x, hxβ© := (ideal_isMaximal_iff (RingHom.ker Ο)).mp inferInstance
refine' β¨x, CharacterSpace.ext_ker <| Ideal.ext fun f => _β©
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -79,9 +79,7 @@ open TopologicalSpace
section TopologicalRing
variable {X R : Type*} [TopologicalSpace X] [Semiring R]
-
variable [TopologicalSpace R] [TopologicalSemiring R]
-
variable (R)
/-- Given a topological ring `R` and `s : Set X`, construct the ideal in `C(X, R)` of functions
@@ -408,7 +406,6 @@ variable (X π : Type*) [TopologicalSpace X]
section ContinuousMapEval
variable [LocallyCompactSpace X] [CommRing π] [TopologicalSpace π] [TopologicalRing π]
-
variable [Nontrivial π] [NoZeroDivisors π]
/-- The natural continuous map from a locally compact topological space `X` to the
@@ -214,7 +214,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
have ht : IsClosed t := isClosed_le continuous_const (map_continuous f).nnnorm
have htI : Disjoint t (setOfIdeal I)αΆ := by
refine' Set.subset_compl_iff_disjoint_left.mp fun x hx => _
- simpa only [Set.mem_setOf, Set.mem_compl_iff, not_le] using
+ simpa only [t, Set.mem_setOf, Set.mem_compl_iff, not_le] using
(nnnorm_eq_zero.mpr (mem_idealOfSet.mp hf hx)).trans_lt (half_pos hΞ΅)
/- It suffices to produce `g : C(X, ββ₯0)` which takes values in `[0,1]` and is constantly `1` on
`t` such that when composed with the natural embedding of `ββ₯0` into `π` lies in the ideal `I`.
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -376,7 +376,7 @@ theorem setOfIdeal_eq_compl_singleton (I : Ideal C(X, π)) [hI : I.IsMaximal]
have h : (idealOfSet π (setOfIdeal I)).IsMaximal :=
(idealOfSet_ofIdeal_isClosed (inferInstance : IsClosed (I : Set C(X, π)))).symm βΈ hI
obtain β¨x, hxβ© := Opens.isCoatom_iff.1 ((idealOfSet_isMaximal_iff π (opensOfIdeal I)).1 h)
- refine β¨x, congr_arg (fun (s : Opens X) => (s : Set X)) hxβ©
+ exact β¨x, congr_arg (fun (s : Opens X) => (s : Set X)) hxβ©
#align continuous_map.set_of_ideal_eq_compl_singleton ContinuousMap.setOfIdeal_eq_compl_singleton
theorem ideal_isMaximal_iff (I : Ideal C(X, π)) [hI : IsClosed (I : Set C(X, π))] :
@@ -240,7 +240,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
_ = βalgebraMap ββ₯0 π (1 - g x)ββ := by
simp only [Algebra.algebraMap_eq_smul_one, NNReal.smul_def, ge_iff_le,
NNReal.coe_sub (hg x), NNReal.coe_one, sub_smul, one_smul]
- _ β€ 1 := (nnnorm_algebraMap_nNReal π (1 - g x)).trans_le tsub_le_self
+ _ β€ 1 := (nnnorm_algebraMap_nnreal π (1 - g x)).trans_le tsub_le_self
calc
βf x - f x * (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g xββ =
βf x * (1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) xββ := by
Clm
-> CLM
, Cle
-> CLE
(#10018)
Rename
Complex.equivRealProdClm
β Complex.equivRealProdCLM
;
CLE
?Complex.reClm
β Complex.reCLM
;Complex.imClm
β Complex.imCLM
;Complex.conjLie
β Complex.conjLIE
;Complex.conjCle
β Complex.conjCLE
;Complex.ofRealLi
β Complex.ofRealLI
;Complex.ofRealClm
β Complex.ofRealCLM
;fderivInnerClm
β fderivInnerCLM
;LinearPMap.adjointDomainMkClm
β LinearPMap.adjointDomainMkCLM
;LinearPMap.adjointDomainMkClmExtend
β LinearPMap.adjointDomainMkCLMExtend
;IsROrC.reClm
β IsROrC.reCLM
;IsROrC.imClm
β IsROrC.imCLM
;IsROrC.conjLie
β IsROrC.conjLIE
;IsROrC.conjCle
β IsROrC.conjCLE
;IsROrC.ofRealLi
β IsROrC.ofRealLI
;IsROrC.ofRealClm
β IsROrC.ofRealCLM
;MeasureTheory.condexpL1Clm
β MeasureTheory.condexpL1CLM
;algebraMapClm
β algebraMapCLM
;WeakDual.CharacterSpace.toClm
β WeakDual.CharacterSpace.toCLM
;BoundedContinuousFunction.evalClm
β BoundedContinuousFunction.evalCLM
;ContinuousMap.evalClm
β ContinuousMap.evalCLM
;TrivSqZeroExt.fstClm
β TrivSqZeroExt.fstClm
;TrivSqZeroExt.sndClm
β TrivSqZeroExt.sndCLM
;TrivSqZeroExt.inlClm
β TrivSqZeroExt.inlCLM
;TrivSqZeroExt.inrClm
β TrivSqZeroExt.inrCLM
and related theorems.
@@ -221,31 +221,31 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
Indeed, then `βf - f * βgβ β€ βf * (1 - βg)β β€ β¨ βf * (1 - βg) xβ`. When `x β t`, `βf xβ < Ξ΅ / 2`
and `β(1 - βg) xβ β€ 1`, and when `x β t`, `(1 - βg) x = 0`, and clearly `f * βg β I`. -/
suffices
- β g : C(X, ββ₯0), (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g β I β§ (β x, g x β€ 1) β§ t.EqOn g 1 by
+ β g : C(X, ββ₯0), (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g β I β§ (β x, g x β€ 1) β§ t.EqOn g 1 by
obtain β¨g, hgI, hg, hgtβ© := this
- refine' β¨f * (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g, I.mul_mem_left f hgI, _β©
+ refine' β¨f * (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g, I.mul_mem_left f hgI, _β©
rw [nndist_eq_nnnorm]
refine' (nnnorm_lt_iff _ hΞ΅).2 fun x => _
simp only [coe_sub, coe_mul, Pi.sub_apply, Pi.mul_apply]
by_cases hx : x β t
- Β· simpa only [hgt hx, comp_apply, Pi.one_apply, ContinuousMap.coe_coe, algebraMapClm_apply,
+ Β· simpa only [hgt hx, comp_apply, Pi.one_apply, ContinuousMap.coe_coe, algebraMapCLM_apply,
map_one, mul_one, sub_self, nnnorm_zero] using hΞ΅
Β· refine' lt_of_le_of_lt _ (half_lt_self hΞ΅)
have :=
calc
- β((1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) x : π)ββ =
+ β((1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) x : π)ββ =
β1 - algebraMap ββ₯0 π (g x)ββ := by
simp only [coe_sub, coe_one, coe_comp, ContinuousMap.coe_coe, Pi.sub_apply,
- Pi.one_apply, Function.comp_apply, algebraMapClm_apply]
+ Pi.one_apply, Function.comp_apply, algebraMapCLM_apply]
_ = βalgebraMap ββ₯0 π (1 - g x)ββ := by
simp only [Algebra.algebraMap_eq_smul_one, NNReal.smul_def, ge_iff_le,
NNReal.coe_sub (hg x), NNReal.coe_one, sub_smul, one_smul]
_ β€ 1 := (nnnorm_algebraMap_nNReal π (1 - g x)).trans_le tsub_le_self
calc
- βf x - f x * (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g xββ =
- βf x * (1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ := by
+ βf x - f x * (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g xββ =
+ βf x * (1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) xββ := by
simp only [mul_sub, coe_sub, coe_one, Pi.sub_apply, Pi.one_apply, mul_one]
- _ β€ Ξ΅ / 2 * β(1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
+ _ β€ Ξ΅ / 2 * β(1 - (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
((nnnorm_mul_le _ _).trans
(mul_le_mul_right' (not_le.mp <| show ¬Ρ / 2 β€ βf xββ from hx).le _))
_ β€ Ξ΅ / 2 := by simpa only [mul_one] using mul_le_mul_left' this _
@@ -255,7 +255,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
`fβ x β 0` for some `fβ β I` and so `fun y β¦ β(star fβ * fβ) yββ` is strictly posiive in a
neighborhood of `y`. Moreover, `(β(star fβ * fβ) yββ : π) = (star fβ * fβ) y`, so composition of
this map with the natural embedding is just `star fβ * fβ β I`. -/
- have : β g' : C(X, ββ₯0), (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g' β I β§ β x β t, 0 < g' x := by
+ have : β g' : C(X, ββ₯0), (algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g' β I β§ β x β t, 0 < g' x := by
refine' ht.isCompact.induction_on _ _ _ _
Β· refine' β¨0, _, fun x hx => False.elim hxβ©
convert I.zero_mem
@@ -283,7 +283,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
pow_pos (norm_pos_iff.mpr hx.1) 2β©β©
convert I.mul_mem_left (star g) hI
ext
- simp only [comp_apply, ContinuousMap.coe_coe, coe_mk, algebraMapClm_toFun, map_pow,
+ simp only [comp_apply, ContinuousMap.coe_coe, coe_mk, algebraMapCLM_toFun, map_pow,
mul_apply, star_apply, star_def]
simp only [normSq_eq_def', IsROrC.conj_mul, ofReal_pow]
rfl
@@ -298,9 +298,9 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
β¨g' x, hgt' x hx, hx'β©
obtain β¨g, hg, hgcβ© := exists_mul_le_one_eqOn_ge g' hc
refine' β¨g * g', _, hg, hgc.mono hgc'β©
- convert I.mul_mem_left ((algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) hI'
+ convert I.mul_mem_left ((algebraMapCLM ββ₯0 π : C(ββ₯0, π)).comp g) hI'
ext
- simp only [algebraMapClm_coe, comp_apply, mul_apply, ContinuousMap.coe_coe, map_mul]
+ simp only [algebraMapCLM_coe, comp_apply, mul_apply, ContinuousMap.coe_coe, map_mul]
#align continuous_map.ideal_of_set_of_ideal_eq_closure ContinuousMap.idealOfSet_ofIdeal_eq_closure
theorem idealOfSet_ofIdeal_isClosed {I : Ideal C(X, π)} (hI : IsClosed (I : Set C(X, π))) :
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -149,7 +149,7 @@ theorem setOfTop_eq_univ [Nontrivial R] : setOfIdeal (β€ : Ideal C(X, R)) = Set
theorem idealOfEmpty_eq_bot : idealOfSet R (β
: Set X) = β₯ :=
Ideal.ext fun f => by
simp only [mem_idealOfSet, Set.compl_empty, Set.mem_univ, forall_true_left, Ideal.mem_bot,
- FunLike.ext_iff, zero_apply]
+ DFunLike.ext_iff, zero_apply]
#align continuous_map.ideal_of_empty_eq_bot ContinuousMap.idealOfEmpty_eq_bot
@[simp]
@@ -438,7 +438,7 @@ theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) := by
rcases exists_continuous_zero_one_of_isClosed (isClosed_singleton : _root_.IsClosed {x})
(isClosed_singleton : _root_.IsClosed {y}) (Set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
- rw [FunLike.ne_iff]
+ rw [DFunLike.ne_iff]
use (β¨fun (x : β) => (x : π), IsROrC.continuous_ofRealβ© : C(β, π)).comp f
simpa only [continuousMapEval_apply_apply, ContinuousMap.comp_apply, coe_mk, Ne.def,
IsROrC.ofReal_inj] using
β x β s, _
instead of β (x) (_ : x β s), _
(#9184)
Search for [ββ].*(_
and manually replace some occurrences with more readable versions.
In case of β
, the new expressions are defeq to the old ones.
In case of β
, they differ by exists_prop
.
In some rare cases, golf proofs that needed fixing.
@@ -291,7 +291,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
compactness of `t`, there is some `0 < c` such that `c β€ g' x` for all `x β t`. Then by
`exists_mul_le_one_eqOn_ge` there is some `g` for which `g * g'` is the desired function. -/
obtain β¨g', hI', hgt'β© := this
- obtain β¨c, hc, hgc'β© : β (c : _) (_ : 0 < c), β y : X, y β t β c β€ g' y :=
+ obtain β¨c, hc, hgc'β© : β c > 0, β y : X, y β t β c β€ g' y :=
t.eq_empty_or_nonempty.elim
(fun ht' => β¨1, zero_lt_one, fun y hy => False.elim (by rwa [ht'] at hy)β©) fun ht' =>
let β¨x, hx, hx'β© := ht.isCompact.exists_forall_le ht' (map_continuous g').continuousOn
Three particular examples which caught my eye; not exhaustive.
@@ -324,7 +324,7 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s
/- Apply Urysohn's lemma to get `g : C(X, β)` which is zero on `sαΆ` and `g x β 0`, then compose
with the natural embedding `β βͺ π` to produce the desired `f`. -/
obtain β¨g, hgs, hgx : Set.EqOn g 1 {x}, -β© :=
- exists_continuous_zero_one_of_closed isClosed_closure isClosed_singleton
+ exists_continuous_zero_one_of_isClosed isClosed_closure isClosed_singleton
(Set.disjoint_singleton_right.mpr hx)
exact
β¨β¨fun x => g x, continuous_ofReal.comp (map_continuous g)β©, by
@@ -435,7 +435,7 @@ variable [CompactSpace X] [T2Space X] [IsROrC π]
theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) := by
refine' β¨fun x y hxy => _, fun Ο => _β©
Β· contrapose! hxy
- rcases exists_continuous_zero_one_of_closed (isClosed_singleton : _root_.IsClosed {x})
+ rcases exists_continuous_zero_one_of_isClosed (isClosed_singleton : _root_.IsClosed {x})
(isClosed_singleton : _root_.IsClosed {y}) (Set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
rw [FunLike.ne_iff]
@@ -243,8 +243,8 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
_ β€ 1 := (nnnorm_algebraMap_nNReal π (1 - g x)).trans_le tsub_le_self
calc
βf x - f x * (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g xββ =
- βf x * (1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
- by simp only [mul_sub, coe_sub, coe_one, Pi.sub_apply, Pi.one_apply, mul_one]
+ βf x * (1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ := by
+ simp only [mul_sub, coe_sub, coe_one, Pi.sub_apply, Pi.one_apply, mul_one]
_ β€ Ξ΅ / 2 * β(1 - (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) xββ :=
((nnnorm_mul_le _ _).trans
(mul_le_mul_right' (not_le.mp <| show ¬Ρ / 2 β€ βf xββ from hx).le _))
@@ -293,7 +293,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
obtain β¨g', hI', hgt'β© := this
obtain β¨c, hc, hgc'β© : β (c : _) (_ : 0 < c), β y : X, y β t β c β€ g' y :=
t.eq_empty_or_nonempty.elim
- (fun ht' => β¨1, zero_lt_one, fun y hy => False.elim (by rwa [ht'] at hy )β©) fun ht' =>
+ (fun ht' => β¨1, zero_lt_one, fun y hy => False.elim (by rwa [ht'] at hy)β©) fun ht' =>
let β¨x, hx, hx'β© := ht.isCompact.exists_forall_le ht' (map_continuous g').continuousOn
β¨g' x, hgt' x hx, hx'β©
obtain β¨g, hg, hgcβ© := exists_mul_le_one_eqOn_ge g' hc
@@ -321,7 +321,6 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet π s
-- If `x β closure sαΆ`, we must produce `f : C(X, π)` which is zero on `sαΆ` and `f x β 0`.
rw [β compl_compl (interior s), β closure_compl] at hx
simp_rw [mem_setOfIdeal, mem_idealOfSet]
- haveI : NormalSpace X := normalOfCompactT2
/- Apply Urysohn's lemma to get `g : C(X, β)` which is zero on `sαΆ` and `g x β 0`, then compose
with the natural embedding `β βͺ π` to produce the desired `f`. -/
obtain β¨g, hgs, hgx : Set.EqOn g 1 {x}, -β© :=
@@ -436,7 +435,6 @@ variable [CompactSpace X] [T2Space X] [IsROrC π]
theorem continuousMapEval_bijective : Bijective (continuousMapEval X π) := by
refine' β¨fun x y hxy => _, fun Ο => _β©
Β· contrapose! hxy
- haveI := @normalOfCompactT2 X _ _ _
rcases exists_continuous_zero_one_of_closed (isClosed_singleton : _root_.IsClosed {x})
(isClosed_singleton : _root_.IsClosed {y}) (Set.disjoint_singleton.mpr hxy) with
β¨f, fx, fy, -β©
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -90,7 +90,7 @@ def idealOfSet (s : Set X) : Ideal C(X, R) where
carrier := {f : C(X, R) | β x β sαΆ, f x = 0}
add_mem' {f g} hf hg x hx := by simp [hf x hx, hg x hx, coe_add, Pi.add_apply, add_zero]
zero_mem' _ _ := rfl
- smul_mem' c f hf x hx := MulZeroClass.mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
+ smul_mem' c f hf x hx := mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
#align continuous_map.ideal_of_set ContinuousMap.idealOfSet
theorem idealOfSet_closed [T2Space R] (s : Set X) :
@@ -108,7 +108,7 @@ theorem mem_idealOfSet {s : Set X} {f : C(X, R)} :
#align continuous_map.mem_ideal_of_set ContinuousMap.mem_idealOfSet
theorem not_mem_idealOfSet {s : Set X} {f : C(X, R)} : f β idealOfSet R s β β x β sαΆ, f x β 0 := by
- simp_rw [mem_idealOfSet, exists_prop]; push_neg; rfl
+ simp_rw [mem_idealOfSet]; push_neg; rfl
#align continuous_map.not_mem_ideal_of_set ContinuousMap.not_mem_idealOfSet
/-- Given an ideal `I` of `C(X, R)`, construct the set of points for which every function in the
@@ -124,7 +124,7 @@ theorem not_mem_setOfIdeal {I : Ideal C(X, R)} {x : X} :
theorem mem_setOfIdeal {I : Ideal C(X, R)} {x : X} :
x β setOfIdeal I β β f β I, (f : C(X, R)) x β 0 := by
- simp_rw [setOfIdeal, Set.mem_compl_iff, Set.mem_setOf, exists_prop]; push_neg; rfl
+ simp_rw [setOfIdeal, Set.mem_compl_iff, Set.mem_setOf]; push_neg; rfl
#align continuous_map.mem_set_of_ideal ContinuousMap.mem_setOfIdeal
theorem setOfIdeal_open [T2Space R] (I : Ideal C(X, R)) : IsOpen (setOfIdeal I) := by
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -78,7 +78,7 @@ open TopologicalSpace
section TopologicalRing
-variable {X R : Type _} [TopologicalSpace X] [Semiring R]
+variable {X R : Type*} [TopologicalSpace X] [Semiring R]
variable [TopologicalSpace R] [TopologicalSemiring R]
@@ -176,7 +176,7 @@ section IsROrC
open IsROrC
-variable {X π : Type _} [IsROrC π] [TopologicalSpace X]
+variable {X π : Type*} [IsROrC π] [TopologicalSpace X]
/-- An auxiliary lemma used in the proof of `ContinuousMap.idealOfSet_ofIdeal_eq_closure` which may
be useful on its own. -/
@@ -404,7 +404,7 @@ namespace CharacterSpace
open Function ContinuousMap
-variable (X π : Type _) [TopologicalSpace X]
+variable (X π : Type*) [TopologicalSpace X]
section ContinuousMapEval
@@ -2,11 +2,6 @@
Copyright (c) 2022 Jireh Loreaux. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jireh Loreaux
-
-! This file was ported from Lean 3 source module topology.continuous_function.ideals
-! leanprover-community/mathlib commit c2258f7bf086b17eac0929d635403780c39e239f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Algebra.Algebra
import Mathlib.Topology.ContinuousFunction.Compact
@@ -15,6 +10,8 @@ import Mathlib.Data.IsROrC.Basic
import Mathlib.Analysis.NormedSpace.Units
import Mathlib.Topology.Algebra.Module.CharacterSpace
+#align_import topology.continuous_function.ideals from "leanprover-community/mathlib"@"c2258f7bf086b17eac0929d635403780c39e239f"
+
/-!
# Ideals of continuous functions
ContinuousMap.continuous_eval_const{,'}
(#5649)
We had continuity of fun f : C(X, Y) β¦ f a
in two cases:
X
is a locally compact space;X
is a compact space and Y
is a metric space.In fact, it is true in general topological spaces.
@@ -96,11 +96,11 @@ def idealOfSet (s : Set X) : Ideal C(X, R) where
smul_mem' c f hf x hx := MulZeroClass.mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
#align continuous_map.ideal_of_set ContinuousMap.idealOfSet
-theorem idealOfSet_closed [LocallyCompactSpace X] [T2Space R] (s : Set X) :
+theorem idealOfSet_closed [T2Space R] (s : Set X) :
IsClosed (idealOfSet R s : Set C(X, R)) := by
simp only [idealOfSet, Submodule.coe_set_mk, Set.setOf_forall]
exact isClosed_iInter fun x => isClosed_iInter fun _ =>
- isClosed_eq (continuous_eval_const' x) continuous_const
+ isClosed_eq (continuous_eval_const x) continuous_const
#align continuous_map.ideal_of_set_closed ContinuousMap.idealOfSet_closed
variable {R}
@@ -422,7 +422,7 @@ def continuousMapEval : C(X, characterSpace π C(X, π)) where
β¨{ toFun := fun f => f x
map_add' := fun f g => rfl
map_smul' := fun z f => rfl
- cont := continuous_eval_const' x }, by
+ cont := continuous_eval_const x }, by
rw [CharacterSpace.eq_set_map_one_map_mul]; exact β¨rfl, fun f g => rflβ©β©
continuous_toFun := Continuous.subtype_mk (continuous_of_continuous_eval map_continuous) _
#align weak_dual.character_space.continuous_map_eval WeakDual.CharacterSpace.continuousMapEval
@@ -215,7 +215,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
-- Let `t := {x : X | Ξ΅ / 2 β€ βf xββ}}` which is closed and disjoint from `set_of_ideal I`.
set t := {x : X | Ξ΅ / 2 β€ βf xββ}
have ht : IsClosed t := isClosed_le continuous_const (map_continuous f).nnnorm
- have htI : Disjoint t (setOfIdeal IαΆ) := by
+ have htI : Disjoint t (setOfIdeal I)αΆ := by
refine' Set.subset_compl_iff_disjoint_left.mp fun x hx => _
simpa only [Set.mem_setOf, Set.mem_compl_iff, not_le] using
(nnnorm_eq_zero.mpr (mem_idealOfSet.mp hf hx)).trans_lt (half_pos hΞ΅)
@@ -384,7 +384,7 @@ theorem setOfIdeal_eq_compl_singleton (I : Ideal C(X, π)) [hI : I.IsMaximal]
#align continuous_map.set_of_ideal_eq_compl_singleton ContinuousMap.setOfIdeal_eq_compl_singleton
theorem ideal_isMaximal_iff (I : Ideal C(X, π)) [hI : IsClosed (I : Set C(X, π))] :
- I.IsMaximal β β x : X, idealOfSet π ({x}αΆ) = I := by
+ I.IsMaximal β β x : X, idealOfSet π {x}αΆ = I := by
refine'
β¨_, fun h =>
let β¨x, hxβ© := h
@@ -263,7 +263,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
Β· refine' β¨0, _, fun x hx => False.elim hxβ©
convert I.zero_mem
ext
- simp only [comp_apply, zero_apply, coe_mk, map_zero]
+ simp only [comp_apply, zero_apply, ContinuousMap.coe_coe, map_zero]
Β· rintro sβ sβ hs β¨g, hI, hgtβ©; exact β¨g, hI, fun x hx => hgt x (hs hx)β©
Β· rintro sβ sβ β¨gβ, hIβ, hgtββ© β¨gβ, hIβ, hgtββ©
refine' β¨gβ + gβ, _, fun x hx => _β©
@@ -286,7 +286,8 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
pow_pos (norm_pos_iff.mpr hx.1) 2β©β©
convert I.mul_mem_left (star g) hI
ext
- simp only [comp_apply, coe_mk, algebraMapClm_toFun, map_pow, mul_apply, star_apply, star_def]
+ simp only [comp_apply, ContinuousMap.coe_coe, coe_mk, algebraMapClm_toFun, map_pow,
+ mul_apply, star_apply, star_def]
simp only [normSq_eq_def', IsROrC.conj_mul, ofReal_pow]
rfl
/- Get the function `g'` which is guaranteed to exist above. By the extreme value theorem and
@@ -302,7 +303,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
refine' β¨g * g', _, hg, hgc.mono hgc'β©
convert I.mul_mem_left ((algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g) hI'
ext
- simp only [algebraMapClm_coe, comp_apply, mul_apply, coe_mk, map_mul]
+ simp only [algebraMapClm_coe, comp_apply, mul_apply, ContinuousMap.coe_coe, map_mul]
#align continuous_map.ideal_of_set_of_ideal_eq_closure ContinuousMap.idealOfSet_ofIdeal_eq_closure
theorem idealOfSet_ofIdeal_isClosed {I : Ideal C(X, π)} (hI : IsClosed (I : Set C(X, π))) :
@@ -91,7 +91,7 @@ variable (R)
which vanish on the complement of `s`. -/
def idealOfSet (s : Set X) : Ideal C(X, R) where
carrier := {f : C(X, R) | β x β sαΆ, f x = 0}
- add_mem' := @fun f g hf hg x hx => by simp [hf x hx, hg x hx, coe_add, Pi.add_apply, add_zero]
+ add_mem' {f g} hf hg x hx := by simp [hf x hx, hg x hx, coe_add, Pi.add_apply, add_zero]
zero_mem' _ _ := rfl
smul_mem' c f hf x hx := MulZeroClass.mul_zero (c x) βΈ congr_arg (fun y => c x * y) (hf x hx)
#align continuous_map.ideal_of_set ContinuousMap.idealOfSet
@@ -342,7 +342,7 @@ theorem setOfIdeal_ofSet_of_isOpen {s : Set X} (hs : IsOpen s) : setOfIdeal (ide
variable (X)
-/-- The Galois insertion `ContinuousMap.opensOfIdeal : Ideal C(X, π) β opens X` and
+/-- The Galois insertion `ContinuousMap.opensOfIdeal : Ideal C(X, π) β Opens X` and
`fun s β¦ ContinuousMap.idealOfSet βs`. -/
@[simps]
def idealOpensGI : GaloisInsertion (opensOfIdeal : Ideal C(X, π) β Opens X) fun s => idealOfSet π s
@@ -365,7 +365,6 @@ theorem idealOfSet_isMaximal_iff (s : Opens X) :
rw [Ideal.isMaximal_def]
refine' (idealOpensGI X π).isCoatom_iff (fun I hI => _) s
rw [β Ideal.isMaximal_def] at hI
- skip
exact idealOfSet_ofIdeal_isClosed inferInstance
#align continuous_map.ideal_of_set_is_maximal_iff ContinuousMap.idealOfSet_isMaximal_iff
@@ -45,7 +45,7 @@ herein called `WeakDual.CharacterSpace.homeoEval`.
* `ContinuousMap.setOfIdeal`: complement of the set on which all functions in the ideal vanish.
* `ContinuousMap.opensOfIdeal`: `ContinuousMap.setOfIdeal` as a term of `opens X`.
* `ContinuousMap.idealOpensGI`: The Galois insertion `ContinuousMap.opensOfIdeal` and
- `Ξ» s, ContinuousMap.idealOfSet βs`.
+ `fun s β¦ ContinuousMap.idealOfSet βs`.
* `WeakDual.CharacterSpace.continuousMapEval`: the natural continuous map from a locally compact
topological space `X` to the `WeakDual.characterSpace π C(X, π)` which sends `x : X` to point
evaluation at `x`, with modest hypothesis on `π`.
@@ -255,7 +255,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, π)) :
/- There is some `g' : C(X, ββ₯0)` which is strictly positive on `t` such that the composition
`βg` with the natural embedding of `ββ₯0` into `π` lies in `I`. This follows from compactness of
`t` and that we can do it in any neighborhood of a point `x β t`. Indeed, since `x β t`, then
- `fβ x β 0` for some `fβ β I` and so `Ξ» y, β(star fβ * fβ) yββ` is strictly posiive in a
+ `fβ x β 0` for some `fβ β I` and so `fun y β¦ β(star fβ * fβ) yββ` is strictly posiive in a
neighborhood of `y`. Moreover, `(β(star fβ * fβ) yββ : π) = (star fβ * fβ) y`, so composition of
this map with the natural embedding is just `star fβ * fβ β I`. -/
have : β g' : C(X, ββ₯0), (algebraMapClm ββ₯0 π : C(ββ₯0, π)).comp g' β I β§ β x β t, 0 < g' x := by
@@ -343,7 +343,7 @@ theorem setOfIdeal_ofSet_of_isOpen {s : Set X} (hs : IsOpen s) : setOfIdeal (ide
variable (X)
/-- The Galois insertion `ContinuousMap.opensOfIdeal : Ideal C(X, π) β opens X` and
-`Ξ» s, ContinuousMap.idealOfSet βs`. -/
+`fun s β¦ ContinuousMap.idealOfSet βs`. -/
@[simps]
def idealOpensGI : GaloisInsertion (opensOfIdeal : Ideal C(X, π) β Opens X) fun s => idealOfSet π s
where
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file