Zulip Chat Archive

Stream: Is there code for X?

Topic: coinduced/product topologies


Heather Macbeth (Dec 20 2021 at 19:52):

Is this true?

import topology.constructions

example {X₀ X : Type*} (Y : Type*) [t₀ : topological_space X₀] [s : topological_space Y]
  (f : X₀  X) :
  @prod.topological_space _ _ (t₀.coinduced f) s
    = (@prod.topological_space _ _ t₀ s).coinduced (λ p, (f p.1, p.2)) :=
sorry

It would imply what I really want, which is

example {X₀ X Y Z : Type*} [t₀ : topological_space X₀] [topological_space Y] [topological_space Z]
  (f : X₀  X) {g : X × Y  Z} (hg : continuous (λ p : X₀ × Y, g (f p.1, p.2))) :
  let t : topological_space X := t₀.coinduced f in
  by exactI continuous g :=
sorry

but another route to the latter would be fine (we seem to be lacking lemmas for proving that a map with domain a product is continuous).

Adam Topaz (Dec 20 2021 at 20:11):

The product topology is an inf, so you can use lemmas about inf of topologies to obtain continuity.

Adam Topaz (Dec 20 2021 at 20:11):

We have docs#induced_inf and docs#coinduced_sup but no docs#coinduced_inf

Heather Macbeth (Dec 20 2021 at 20:19):

Adam Topaz said:

The product topology is an inf, so you can use lemmas about inf of topologies to obtain continuity.

Yes, but unfortunately as far as I can tell the only lemmas we have about proving continuity with respect to an inf-domain are trivial, docs#continuous_inf_dom_left and twin.

Adam Topaz (Dec 20 2021 at 20:24):

That's because a prroduct is a limit, so the universal property tells you how to map into the product, not out of it :sad:

Patrick Massot (Dec 20 2021 at 20:40):

I think this lemma is false.

Patrick Massot (Dec 20 2021 at 20:43):

Because docs#monotone.map_inf_le is the wrong way around

Patrick Massot (Dec 20 2021 at 20:53):

Note that if coinduced_inf were true then a product of quotient maps would be a quotient map, which is known to be false (product and quotients don't commute in Top).

Patrick Massot (Dec 20 2021 at 20:56):

It means you can probably cook up a counter-example using X_0 = ℚ, X = ℚ/ℤ andY = ℚ. In that case X₀ × Y → X × Y is not a quotient map.

Heather Macbeth (Dec 20 2021 at 20:57):

I got the second fact working under the condition of surjectivity of f and local compactness of Y, both of which are true in my use case -- not clear to me whether the second condition in particular is necessary, though (as opposed to just a hack to let me pass to the compact-open characterization of the product topology).

Heather Macbeth (Dec 20 2021 at 20:57):

import topology.compact_open

example {X₀ X Y Z : Type*} [t₀ : topological_space X₀] [topological_space Y] [topological_space Z]
  [locally_compact_space Y] {f : X₀  X} (hf : function.surjective f) {g : X × Y  Z}
  (hg : continuous (λ p : X₀ × Y, g (f p.1, p.2))) :
  let t : topological_space X := t₀.coinduced f in
  by exactI continuous g :=
begin
  intros, resetI,
  let Gf : X₀  C(Y, Z) := continuous_map.curry _, hg⟩,
  have hGf : continuous Gf := (continuous_map.curry _, hg⟩).continuous,
  have h₁ :  x : X, continuous (λ y, g (x, y)),
  { intros x,
    obtain x₀, rfl := hf x,
    exact (Gf x₀).continuous },
  let G : X  C(Y, Z) := λ x, _, h₁ x⟩,
  suffices : continuous G,
  { convert continuous_map.continuous_uncurry_of_continuous G, this⟩,
    ext x,
    cases x,
    simp [G] },
  have : Gf = G  f,
  { ext x,
    simp },
  rw this at hGf,
  exact continuous_coinduced_dom hGf,
end

Heather Macbeth (Dec 20 2021 at 21:01):

(This should be more nicely expressed using docs#quotient_map so I'll switch to that formulation.)

Heather Macbeth (Dec 20 2021 at 21:09):

Quotient map version (still curious about whether the local compactness of Y is needed):

import topology.compact_open

example {X₀ X Y Z : Type*} [t₀ : topological_space X₀] [topological_space X] [topological_space Y]
  [topological_space Z] [locally_compact_space Y]
  {f : X₀  X} (hf : quotient_map f) {g : X × Y  Z} (hg : continuous (λ p : X₀ × Y, g (f p.1, p.2))) :
  continuous g :=
begin
  let Gf : C(X₀, C(Y, Z)) := continuous_map.curry _, hg⟩,
  have h :  x : X, continuous (λ y, g (x, y)),
  { intros x,
    obtain x₀, rfl := hf.surjective x,
    exact (Gf x₀).continuous },
  let G : X  C(Y, Z) := λ x, _, h x⟩,
  have : continuous G,
  { rw hf.continuous_iff,
    exact Gf.continuous },
  convert continuous_map.continuous_uncurry_of_continuous G, this⟩,
  ext x,
  cases x,
  refl,
end

Patrick Massot (Dec 20 2021 at 21:12):

I'm not suprised you need assumptions on Y. The optimal assumption is probably something like weak Hausdorff compactly generated.

Heather Macbeth (Dec 20 2021 at 21:41):

Thanks! Always good to have a topologist on hand :)

Yury G. Kudryashov (Dec 20 2021 at 23:16):

/me should read before writing a reply.


Last updated: Dec 20 2023 at 11:08 UTC