Zulip Chat Archive
Stream: Is there code for X?
Topic: Continuous uniqueElim
Kevin Buzzard (Dec 24 2024 at 21:37):
This works:
import Mathlib
def Homeomorph.pUnitPiEquiv (f : PUnit → Type*) [∀ x, TopologicalSpace (f x)] :
(Π t, f t) ≃ₜ f () where
toFun a := a ()
invFun a _t := a
left_inv _ := rfl
right_inv _ := rfl
continuous_toFun := by fun_prop
continuous_invFun := by fun_prop
But this fails:
import Mathlib
def piUnique {α : Type*} [Unique α] (f : α → Type*) [∀ x, TopologicalSpace (f x)] :
(Π t, f t) ≃ₜ f default where
toFun a := a default
invFun := uniqueElim
left_inv f := by ext i; cases Unique.eq_default i; rfl
right_inv _ := rfl
continuous_toFun := by fun_prop
continuous_invFun := by fun_prop -- fails
(continuity of uniqueElim
is the issue). docs#uniqueElim is data defined with a rw
so this scares me even more :-/ This also fails:
import Mathlib
def piUnique {α : Type*} [Unique α] (f : α → Type*) [∀ x, TopologicalSpace (f x)] :
(Π t, f t) ≃ₜ f default where
__ := Equiv.piUnique _
continuous_toFun := by fun_prop
continuous_invFun := by fun_prop -- fails
Do we have tools to prove Continuous uniqueElim
or should I just bash it out?
Kevin Buzzard (Dec 24 2024 at 21:54):
Reduced it to this:
import Mathlib
lemma surely_we_have_this {α β : Type*} [TopologicalSpace α] [TopologicalSpace β] (e : α ≃ β)
(h : IsOpenMap e) : Continuous e.symm := by sorry
def piUnique {α : Type*} [Unique α] (f : α → Type*) [∀ x, TopologicalSpace (f x)] :
(Π t, f t) ≃ₜ f default where
__ := Equiv.piUnique _
continuous_toFun := by fun_prop
continuous_invFun := surely_we_have_this (Equiv.piUnique f) <| isOpenMap_eval default
Kevin Buzzard (Dec 24 2024 at 21:59):
Am I making a meal of this?
import Mathlib
lemma Equiv.continuous_symm_of_isOpenMap {α β : Type*} [TopologicalSpace α] [TopologicalSpace β]
(e : α ≃ β) (h : IsOpenMap e) : Continuous e.symm := by
rw [continuous_def]
intro U hU
specialize h U hU
rwa [← Set.image_equiv_eq_preimage_symm]
def piUnique {α : Type*} [Unique α] (f : α → Type*) [∀ x, TopologicalSpace (f x)] :
(Π t, f t) ≃ₜ f default where
__ := Equiv.piUnique _
continuous_toFun := by fun_prop
continuous_invFun := Equiv.continuous_symm_of_isOpenMap (Equiv.piUnique f) <|
isOpenMap_eval default
Kevin Buzzard (Dec 24 2024 at 22:27):
Added to #20195
Last updated: May 02 2025 at 03:31 UTC