|
| 1 | +/- |
| 2 | +Copyright (c) 2023 Yury Kudryashov. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Yury Kudryashov |
| 5 | +-/ |
| 6 | +import Mathlib.Topology.Connected |
| 7 | +import Mathlib.Topology.CompactOpen |
| 8 | + |
| 9 | +/-! |
| 10 | +# Equivalence between `C(X, Σ i, Y i)` and `Σ i, C(X, Y i)` |
| 11 | +
|
| 12 | +If `X` is a connected topological space, then for every continuous map `f` from `X` to the disjoint |
| 13 | +union of a collection of topological spaces `Y i` there exists a unique index `i` and a continuous |
| 14 | +map from `g` to `Y i` such that `f` is the composition of the natural embedding |
| 15 | +`Sigma.mk i : Y i → Σ i, Y i` with `g`. |
| 16 | +
|
| 17 | +This defines an equivalence between `C(X, Σ i, Y i)` and `Σ i, C(X, Y i)`. In fact, this equivalence |
| 18 | +is a homeomorphism if the spaces of continuous maps are equipped with the compact-open topology. |
| 19 | +
|
| 20 | +## Implementation notes |
| 21 | +
|
| 22 | +There are two natural ways to talk about this result: one is to say that for each `f` there exist |
| 23 | +unique `i` and `g`; another one is to define a noncomputable equivalence. We choose the second way |
| 24 | +because it is easier to use an equivalence in applications. |
| 25 | +
|
| 26 | +## TODO |
| 27 | +
|
| 28 | +Some results in this file can be generalized to the case when `X` is a preconnected space. However, |
| 29 | +if `X` is empty, then any index `i` will work, so there is no 1-to-1 corespondence. |
| 30 | +
|
| 31 | +## Keywords |
| 32 | +
|
| 33 | +continuous map, sigma type, disjoint union |
| 34 | +-/ |
| 35 | + |
| 36 | +noncomputable section |
| 37 | + |
| 38 | +open scoped Topology |
| 39 | +open Filter |
| 40 | + |
| 41 | +variable {X ι : Type _} {Y : ι → Type _} [TopologicalSpace X] [∀ i, TopologicalSpace (Y i)] |
| 42 | + |
| 43 | +namespace ContinuousMap |
| 44 | + |
| 45 | +theorem embedding_sigmaMk_comp [Nonempty X] : |
| 46 | + Embedding (fun g : Σ i, C(X, Y i) ↦ (sigmaMk g.1).comp g.2) where |
| 47 | + toInducing := inducing_sigma.2 |
| 48 | + ⟨fun i ↦ (sigmaMk i).inducing_comp embedding_sigmaMk.toInducing, fun i ↦ |
| 49 | + let ⟨x⟩ := ‹Nonempty X› |
| 50 | + ⟨_, (isOpen_sigma_fst_preimage {i}).preimage (continuous_eval_const x), fun _ ↦ Iff.rfl⟩⟩ |
| 51 | + inj := by |
| 52 | + · rintro ⟨i, g⟩ ⟨i', g'⟩ h |
| 53 | + obtain ⟨rfl, hg⟩ : i = i' ∧ HEq (⇑g) (⇑g') := |
| 54 | + Function.eq_of_sigmaMk_comp <| congr_arg FunLike.coe h |
| 55 | + simpa using hg |
| 56 | + |
| 57 | +section ConnectedSpace |
| 58 | + |
| 59 | +variable [ConnectedSpace X] |
| 60 | + |
| 61 | +/-- Every a continuous map from a connected topological space to the disjoint union of a family of |
| 62 | +topological spaces is a composition of the embedding `ContinuousMap.sigmMk i : C(Y i, Σ i, Y i)` for |
| 63 | +some `i` and a continuous map `g : C(X, Y i)`. See also `Continuous.exists_lift_sigma` for a version |
| 64 | +with unbundled functions and `ContinuousMap.sigmaCodHomeomorph` for a homeomorphism defined using |
| 65 | +this fact. -/ |
| 66 | +theorem exists_lift_sigma (f : C(X, Σ i, Y i)) : ∃ i g, f = (sigmaMk i).comp g := |
| 67 | + let ⟨i, g, hg, hfg⟩ := f.continuous.exists_lift_sigma |
| 68 | + ⟨i, ⟨g, hg⟩, FunLike.ext' hfg⟩ |
| 69 | + |
| 70 | +variable (X Y) |
| 71 | + |
| 72 | +/-- Homeomorphism between the type `C(X, Σ i, Y i)` of continuous maps from a connected topological |
| 73 | +space to the disjoint union of a family of topological spaces and the disjoint union of the types of |
| 74 | +continuous maps `C(X, Y i)`. |
| 75 | +
|
| 76 | +The inverse map sends `⟨i, g⟩` to `ContinuousMap.comp (ContinuousMap.sigmaMk i) g`. -/ |
| 77 | +@[simps! symm_apply] |
| 78 | +def sigmaCodHomeomorph : C(X, Σ i, Y i) ≃ₜ Σ i, C(X, Y i) := |
| 79 | + .symm <| Equiv.toHomeomorphOfInducing |
| 80 | + (.ofBijective _ ⟨embedding_sigmaMk_comp.inj, fun f ↦ |
| 81 | + let ⟨i, g, hg⟩ := f.exists_lift_sigma; ⟨⟨i, g⟩, hg.symm⟩⟩) |
| 82 | + embedding_sigmaMk_comp.toInducing |
0 commit comments