topology.homeomorph
⟷
Mathlib.Topology.Homeomorph
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)
(last sync)
group
and comm_group
instances for π_n
(#15681)
This PR adds:
π_(n+1)
π_(n+2)
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com> Co-authored-by: Junyan Xu <junyanxumath@gmail.com> Co-authored-by: Kevin Buzzard <k.buzzard@imperial.ac.uk>
@@ -504,6 +504,7 @@ variables [decidable_eq ι] (i : ι)
continuous_inv_fun := continuous_pi $ λ j, by { dsimp only [equiv.pi_split_at],
split_ifs, subst h, exacts [continuous_fst, (continuous_apply _).comp continuous_snd] } }
+variable (β)
/-- A product of copies of a topological space can be split as the binary product of one copy and
the product of all the remaining copies. -/
@[simps] def fun_split_at : (ι → β) ≃ₜ β × ({j // j ≠ i} → β) := pi_split_at i _
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
homeomorph.symm_symm
(#18551)
I'm surprised we didn't have this lemma.
@@ -76,6 +76,8 @@ lemma to_equiv_injective : function.injective (to_equiv : α ≃ₜ β → α
@[ext] lemma ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
to_equiv_injective $ equiv.ext H
+@[simp] lemma symm_symm (h : α ≃ₜ β) : h.symm.symm = h := ext $ λ _, rfl
+
/-- Identity map as a homeomorphism. -/
@[simps apply {fully_applied := ff}]
protected def refl (α : Type*) [topological_space α] : α ≃ₜ α :=
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -953,7 +953,7 @@ theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f
rw [continuous_iff_isClosed]
intro C hC
have hC' : IsClosed (f '' C) := (hC.is_compact.image hf).IsClosed
- rwa [Equiv.image_eq_preimage] at hC'
+ rwa [Equiv.image_eq_preimage] at hC'
#align continuous.continuous_symm_of_equiv_compact_to_t2 Continuous.continuous_symm_of_equiv_compact_to_t2
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -600,7 +600,7 @@ theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘
by
refine' ⟨_, fun hf => h.is_open_map.comp hf⟩
intro hf
- rw [← Function.comp.left_id f, ← h.symm_comp_self, Function.comp.assoc]
+ rw [← Function.id_comp f, ← h.symm_comp_self, Function.comp.assoc]
exact h.symm.is_open_map.comp hf
#align homeomorph.comp_is_open_map_iff Homeomorph.comp_isOpenMap_iff
-/
@@ -611,7 +611,7 @@ theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f
by
refine' ⟨_, fun hf => hf.comp h.is_open_map⟩
intro hf
- rw [← Function.comp.right_id f, ← h.self_comp_symm, ← Function.comp.assoc]
+ rw [← Function.comp_id f, ← h.self_comp_symm, ← Function.comp.assoc]
exact hf.comp h.symm.is_open_map
#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -838,8 +838,8 @@ def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
-/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:307:22: continuitity! not supported at the moment -/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:307:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:303:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:303:22: continuitity! not supported at the moment -/
#print Homeomorph.image /-
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -336,8 +336,8 @@ noncomputable def ofEmbedding (f : α → β) (hf : Embedding f) : α ≃ₜ Set
-/
#print Homeomorph.secondCountableTopology /-
-protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopology β]
- (h : α ≃ₜ β) : TopologicalSpace.SecondCountableTopology α :=
+protected theorem secondCountableTopology [SecondCountableTopology β] (h : α ≃ₜ β) :
+ SecondCountableTopology α :=
h.Inducing.SecondCountableTopology
#align homeomorph.second_countable_topology Homeomorph.secondCountableTopology
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -344,7 +344,7 @@ protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopol
#print Homeomorph.isCompact_image /-
theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔ IsCompact s :=
- h.Embedding.isCompact_iff_isCompact_image.symm
+ h.Embedding.isCompact_iff.symm
#align homeomorph.is_compact_image Homeomorph.isCompact_image
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2019 Reid Barton. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton
-/
-import Mathbin.Logic.Equiv.Fin
-import Mathbin.Topology.DenseEmbedding
-import Mathbin.Topology.Support
+import Logic.Equiv.Fin
+import Topology.DenseEmbedding
+import Topology.Support
#align_import topology.homeomorph from "leanprover-community/mathlib"@"4c3e1721c58ef9087bbc2c8c38b540f70eda2e53"
@@ -838,8 +838,8 @@ def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
-/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:305:22: continuitity! not supported at the moment -/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:305:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:307:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:307:22: continuitity! not supported at the moment -/
#print Homeomorph.image /-
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/001ffdc42920050657fd45bd2b8bfbec8eaaeb29
@@ -460,10 +460,10 @@ protected theorem closedEmbedding (h : α ≃ₜ β) : ClosedEmbedding h :=
#align homeomorph.closed_embedding Homeomorph.closedEmbedding
-/
-#print Homeomorph.normalSpace /-
-protected theorem normalSpace [NormalSpace α] (h : α ≃ₜ β) : NormalSpace β :=
+#print Homeomorph.t4Space /-
+protected theorem t4Space [NormalSpace α] (h : α ≃ₜ β) : NormalSpace β :=
h.symm.ClosedEmbedding.NormalSpace
-#align homeomorph.normal_space Homeomorph.normalSpace
+#align homeomorph.normal_space Homeomorph.t4Space
-/
#print Homeomorph.preimage_closure /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2019 Reid Barton. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton
-
-! This file was ported from Lean 3 source module topology.homeomorph
-! leanprover-community/mathlib commit 4c3e1721c58ef9087bbc2c8c38b540f70eda2e53
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Logic.Equiv.Fin
import Mathbin.Topology.DenseEmbedding
import Mathbin.Topology.Support
+#align_import topology.homeomorph from "leanprover-community/mathlib"@"4c3e1721c58ef9087bbc2c8c38b540f70eda2e53"
+
/-!
# Homeomorphisms
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -841,8 +841,8 @@ def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
-/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:305:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:305:22: continuitity! not supported at the moment -/
#print Homeomorph.image /-
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -52,7 +52,6 @@ structure Homeomorph (α : Type _) (β : Type _) [TopologicalSpace α] [Topologi
#align homeomorph Homeomorph
-/
--- mathport name: «expr ≃ₜ »
infixl:25 " ≃ₜ " => Homeomorph
namespace Homeomorph
@@ -62,10 +61,12 @@ variable [TopologicalSpace α] [TopologicalSpace β] [TopologicalSpace γ] [Topo
instance : CoeFun (α ≃ₜ β) fun _ => α → β :=
⟨fun e => e.toEquiv⟩
+#print Homeomorph.homeomorph_mk_coe /-
@[simp]
theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
rfl
#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coe
+-/
#print Homeomorph.symm /-
/-- Inverse of a homeomorphism. -/
@@ -93,29 +94,39 @@ def Simps.symm_apply (h : α ≃ₜ β) : β → α :=
initialize_simps_projections Homeomorph (to_equiv_to_fun → apply, to_equiv_inv_fun → symm_apply,
-toEquiv)
+#print Homeomorph.coe_toEquiv /-
@[simp]
theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
rfl
#align homeomorph.coe_to_equiv Homeomorph.coe_toEquiv
+-/
+#print Homeomorph.coe_symm_toEquiv /-
@[simp]
theorem coe_symm_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv.symm = h.symm :=
rfl
#align homeomorph.coe_symm_to_equiv Homeomorph.coe_symm_toEquiv
+-/
+#print Homeomorph.toEquiv_injective /-
theorem toEquiv_injective : Function.Injective (toEquiv : α ≃ₜ β → α ≃ β)
| ⟨e, h₁, h₂⟩, ⟨e', h₁', h₂'⟩, rfl => rfl
#align homeomorph.to_equiv_injective Homeomorph.toEquiv_injective
+-/
+#print Homeomorph.ext /-
@[ext]
theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
toEquiv_injective <| Equiv.ext H
#align homeomorph.ext Homeomorph.ext
+-/
+#print Homeomorph.symm_symm /-
@[simp]
theorem symm_symm (h : α ≃ₜ β) : h.symm.symm = h :=
ext fun _ => rfl
#align homeomorph.symm_symm Homeomorph.symm_symm
+-/
#print Homeomorph.refl /-
/-- Identity map as a homeomorphism. -/
@@ -138,16 +149,20 @@ protected def trans (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) : α ≃ₜ γ
#align homeomorph.trans Homeomorph.trans
-/
+#print Homeomorph.trans_apply /-
@[simp]
theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.trans h₂ a = h₂ (h₁ a) :=
rfl
#align homeomorph.trans_apply Homeomorph.trans_apply
+-/
+#print Homeomorph.homeomorph_mk_coe_symm /-
@[simp]
theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
((Homeomorph.mk a b c).symm : β → α) = a.symm :=
rfl
#align homeomorph.homeomorph_mk_coe_symm Homeomorph.homeomorph_mk_coe_symm
+-/
#print Homeomorph.refl_symm /-
@[simp]
@@ -156,49 +171,68 @@ theorem refl_symm : (Homeomorph.refl α).symm = Homeomorph.refl α :=
#align homeomorph.refl_symm Homeomorph.refl_symm
-/
+#print Homeomorph.continuous /-
@[continuity]
protected theorem continuous (h : α ≃ₜ β) : Continuous h :=
h.continuous_toFun
#align homeomorph.continuous Homeomorph.continuous
+-/
+#print Homeomorph.continuous_symm /-
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
@[continuity]
protected theorem continuous_symm (h : α ≃ₜ β) : Continuous h.symm :=
h.continuous_invFun
#align homeomorph.continuous_symm Homeomorph.continuous_symm
+-/
+#print Homeomorph.apply_symm_apply /-
@[simp]
theorem apply_symm_apply (h : α ≃ₜ β) (x : β) : h (h.symm x) = x :=
h.toEquiv.apply_symm_apply x
#align homeomorph.apply_symm_apply Homeomorph.apply_symm_apply
+-/
+#print Homeomorph.symm_apply_apply /-
@[simp]
theorem symm_apply_apply (h : α ≃ₜ β) (x : α) : h.symm (h x) = x :=
h.toEquiv.symm_apply_apply x
#align homeomorph.symm_apply_apply Homeomorph.symm_apply_apply
+-/
+#print Homeomorph.self_trans_symm /-
@[simp]
theorem self_trans_symm (h : α ≃ₜ β) : h.trans h.symm = Homeomorph.refl α := by ext;
apply symm_apply_apply
#align homeomorph.self_trans_symm Homeomorph.self_trans_symm
+-/
+#print Homeomorph.symm_trans_self /-
@[simp]
theorem symm_trans_self (h : α ≃ₜ β) : h.symm.trans h = Homeomorph.refl β := by ext;
apply apply_symm_apply
#align homeomorph.symm_trans_self Homeomorph.symm_trans_self
+-/
+#print Homeomorph.bijective /-
protected theorem bijective (h : α ≃ₜ β) : Function.Bijective h :=
h.toEquiv.Bijective
#align homeomorph.bijective Homeomorph.bijective
+-/
+#print Homeomorph.injective /-
protected theorem injective (h : α ≃ₜ β) : Function.Injective h :=
h.toEquiv.Injective
#align homeomorph.injective Homeomorph.injective
+-/
+#print Homeomorph.surjective /-
protected theorem surjective (h : α ≃ₜ β) : Function.Surjective h :=
h.toEquiv.Surjective
#align homeomorph.surjective Homeomorph.surjective
+-/
+#print Homeomorph.changeInv /-
/-- Change the homeomorphism `f` to make the inverse function definitionally equal to `g`. -/
def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f) : α ≃ₜ β :=
have : g = f.symm :=
@@ -213,61 +247,86 @@ def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f
continuous_toFun := f.Continuous
continuous_invFun := by convert f.symm.continuous }
#align homeomorph.change_inv Homeomorph.changeInv
+-/
+#print Homeomorph.symm_comp_self /-
@[simp]
theorem symm_comp_self (h : α ≃ₜ β) : ⇑h.symm ∘ ⇑h = id :=
funext h.symm_apply_apply
#align homeomorph.symm_comp_self Homeomorph.symm_comp_self
+-/
+#print Homeomorph.self_comp_symm /-
@[simp]
theorem self_comp_symm (h : α ≃ₜ β) : ⇑h ∘ ⇑h.symm = id :=
funext h.apply_symm_apply
#align homeomorph.self_comp_symm Homeomorph.self_comp_symm
+-/
+#print Homeomorph.range_coe /-
@[simp]
theorem range_coe (h : α ≃ₜ β) : range h = univ :=
h.Surjective.range_eq
#align homeomorph.range_coe Homeomorph.range_coe
+-/
+#print Homeomorph.image_symm /-
theorem image_symm (h : α ≃ₜ β) : image h.symm = preimage h :=
funext h.symm.toEquiv.image_eq_preimage
#align homeomorph.image_symm Homeomorph.image_symm
+-/
+#print Homeomorph.preimage_symm /-
theorem preimage_symm (h : α ≃ₜ β) : preimage h.symm = image h :=
(funext h.toEquiv.image_eq_preimage).symm
#align homeomorph.preimage_symm Homeomorph.preimage_symm
+-/
+#print Homeomorph.image_preimage /-
@[simp]
theorem image_preimage (h : α ≃ₜ β) (s : Set β) : h '' (h ⁻¹' s) = s :=
h.toEquiv.image_preimage s
#align homeomorph.image_preimage Homeomorph.image_preimage
+-/
+#print Homeomorph.preimage_image /-
@[simp]
theorem preimage_image (h : α ≃ₜ β) (s : Set α) : h ⁻¹' (h '' s) = s :=
h.toEquiv.preimage_image s
#align homeomorph.preimage_image Homeomorph.preimage_image
+-/
+#print Homeomorph.inducing /-
protected theorem inducing (h : α ≃ₜ β) : Inducing h :=
inducing_of_inducing_compose h.Continuous h.symm.Continuous <| by
simp only [symm_comp_self, inducing_id]
#align homeomorph.inducing Homeomorph.inducing
+-/
+#print Homeomorph.induced_eq /-
theorem induced_eq (h : α ≃ₜ β) : TopologicalSpace.induced h ‹_› = ‹_› :=
h.Inducing.1.symm
#align homeomorph.induced_eq Homeomorph.induced_eq
+-/
+#print Homeomorph.quotientMap /-
protected theorem quotientMap (h : α ≃ₜ β) : QuotientMap h :=
QuotientMap.of_quotientMap_compose h.symm.Continuous h.Continuous <| by
simp only [self_comp_symm, QuotientMap.id]
#align homeomorph.quotient_map Homeomorph.quotientMap
+-/
+#print Homeomorph.coinduced_eq /-
theorem coinduced_eq (h : α ≃ₜ β) : TopologicalSpace.coinduced h ‹_› = ‹_› :=
h.QuotientMap.2.symm
#align homeomorph.coinduced_eq Homeomorph.coinduced_eq
+-/
+#print Homeomorph.embedding /-
protected theorem embedding (h : α ≃ₜ β) : Embedding h :=
⟨h.Inducing, h.Injective⟩
#align homeomorph.embedding Homeomorph.embedding
+-/
#print Homeomorph.ofEmbedding /-
/-- Homeomorphism given an embedding. -/
@@ -286,26 +345,35 @@ protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopol
#align homeomorph.second_countable_topology Homeomorph.secondCountableTopology
-/
+#print Homeomorph.isCompact_image /-
theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔ IsCompact s :=
h.Embedding.isCompact_iff_isCompact_image.symm
#align homeomorph.is_compact_image Homeomorph.isCompact_image
+-/
+#print Homeomorph.isCompact_preimage /-
theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹' s) ↔ IsCompact s := by
rw [← image_symm] <;> exact h.symm.is_compact_image
#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimage
+-/
+#print Homeomorph.comap_cocompact /-
@[simp]
theorem comap_cocompact (h : α ≃ₜ β) : comap h (cocompact β) = cocompact α :=
(comap_cocompact_le h.Continuous).antisymm <|
(hasBasis_cocompact.le_basis_iffₓ (hasBasis_cocompact.comap h)).2 fun K hK =>
⟨h ⁻¹' K, h.isCompact_preimage.2 hK, Subset.rfl⟩
#align homeomorph.comap_cocompact Homeomorph.comap_cocompact
+-/
+#print Homeomorph.map_cocompact /-
@[simp]
theorem map_cocompact (h : α ≃ₜ β) : map h (cocompact α) = cocompact β := by
rw [← h.comap_cocompact, map_comap_of_surjective h.surjective]
#align homeomorph.map_cocompact Homeomorph.map_cocompact
+-/
+#print Homeomorph.compactSpace /-
protected theorem compactSpace [CompactSpace α] (h : α ≃ₜ β) : CompactSpace β :=
{
isCompact_univ :=
@@ -313,113 +381,164 @@ protected theorem compactSpace [CompactSpace α] (h : α ≃ₜ β) : CompactSpa
rw [← image_univ_of_surjective h.surjective, h.is_compact_image]
apply CompactSpace.isCompact_univ }
#align homeomorph.compact_space Homeomorph.compactSpace
+-/
+#print Homeomorph.t0Space /-
protected theorem t0Space [T0Space α] (h : α ≃ₜ β) : T0Space β :=
h.symm.Embedding.T0Space
#align homeomorph.t0_space Homeomorph.t0Space
+-/
+#print Homeomorph.t1Space /-
protected theorem t1Space [T1Space α] (h : α ≃ₜ β) : T1Space β :=
h.symm.Embedding.T1Space
#align homeomorph.t1_space Homeomorph.t1Space
+-/
+#print Homeomorph.t2Space /-
protected theorem t2Space [T2Space α] (h : α ≃ₜ β) : T2Space β :=
h.symm.Embedding.T2Space
#align homeomorph.t2_space Homeomorph.t2Space
+-/
+#print Homeomorph.t3Space /-
protected theorem t3Space [T3Space α] (h : α ≃ₜ β) : T3Space β :=
h.symm.Embedding.T3Space
#align homeomorph.t3_space Homeomorph.t3Space
+-/
+#print Homeomorph.denseEmbedding /-
protected theorem denseEmbedding (h : α ≃ₜ β) : DenseEmbedding h :=
{ h.Embedding with dense := h.Surjective.DenseRange }
#align homeomorph.dense_embedding Homeomorph.denseEmbedding
+-/
+#print Homeomorph.isOpen_preimage /-
@[simp]
theorem isOpen_preimage (h : α ≃ₜ β) {s : Set β} : IsOpen (h ⁻¹' s) ↔ IsOpen s :=
h.QuotientMap.isOpen_preimage
#align homeomorph.is_open_preimage Homeomorph.isOpen_preimage
+-/
+#print Homeomorph.isOpen_image /-
@[simp]
theorem isOpen_image (h : α ≃ₜ β) {s : Set α} : IsOpen (h '' s) ↔ IsOpen s := by
rw [← preimage_symm, is_open_preimage]
#align homeomorph.is_open_image Homeomorph.isOpen_image
+-/
+#print Homeomorph.isOpenMap /-
protected theorem isOpenMap (h : α ≃ₜ β) : IsOpenMap h := fun s => h.isOpen_image.2
#align homeomorph.is_open_map Homeomorph.isOpenMap
+-/
+#print Homeomorph.isClosed_preimage /-
@[simp]
theorem isClosed_preimage (h : α ≃ₜ β) {s : Set β} : IsClosed (h ⁻¹' s) ↔ IsClosed s := by
simp only [← isOpen_compl_iff, ← preimage_compl, is_open_preimage]
#align homeomorph.is_closed_preimage Homeomorph.isClosed_preimage
+-/
+#print Homeomorph.isClosed_image /-
@[simp]
theorem isClosed_image (h : α ≃ₜ β) {s : Set α} : IsClosed (h '' s) ↔ IsClosed s := by
rw [← preimage_symm, is_closed_preimage]
#align homeomorph.is_closed_image Homeomorph.isClosed_image
+-/
+#print Homeomorph.isClosedMap /-
protected theorem isClosedMap (h : α ≃ₜ β) : IsClosedMap h := fun s => h.isClosed_image.2
#align homeomorph.is_closed_map Homeomorph.isClosedMap
+-/
+#print Homeomorph.openEmbedding /-
protected theorem openEmbedding (h : α ≃ₜ β) : OpenEmbedding h :=
openEmbedding_of_embedding_open h.Embedding h.IsOpenMap
#align homeomorph.open_embedding Homeomorph.openEmbedding
+-/
+#print Homeomorph.closedEmbedding /-
protected theorem closedEmbedding (h : α ≃ₜ β) : ClosedEmbedding h :=
closedEmbedding_of_embedding_closed h.Embedding h.IsClosedMap
#align homeomorph.closed_embedding Homeomorph.closedEmbedding
+-/
+#print Homeomorph.normalSpace /-
protected theorem normalSpace [NormalSpace α] (h : α ≃ₜ β) : NormalSpace β :=
h.symm.ClosedEmbedding.NormalSpace
#align homeomorph.normal_space Homeomorph.normalSpace
+-/
+#print Homeomorph.preimage_closure /-
theorem preimage_closure (h : α ≃ₜ β) (s : Set β) : h ⁻¹' closure s = closure (h ⁻¹' s) :=
h.IsOpenMap.preimage_closure_eq_closure_preimage h.Continuous _
#align homeomorph.preimage_closure Homeomorph.preimage_closure
+-/
+#print Homeomorph.image_closure /-
theorem image_closure (h : α ≃ₜ β) (s : Set α) : h '' closure s = closure (h '' s) := by
rw [← preimage_symm, preimage_closure]
#align homeomorph.image_closure Homeomorph.image_closure
+-/
+#print Homeomorph.preimage_interior /-
theorem preimage_interior (h : α ≃ₜ β) (s : Set β) : h ⁻¹' interior s = interior (h ⁻¹' s) :=
h.IsOpenMap.preimage_interior_eq_interior_preimage h.Continuous _
#align homeomorph.preimage_interior Homeomorph.preimage_interior
+-/
+#print Homeomorph.image_interior /-
theorem image_interior (h : α ≃ₜ β) (s : Set α) : h '' interior s = interior (h '' s) := by
rw [← preimage_symm, preimage_interior]
#align homeomorph.image_interior Homeomorph.image_interior
+-/
+#print Homeomorph.preimage_frontier /-
theorem preimage_frontier (h : α ≃ₜ β) (s : Set β) : h ⁻¹' frontier s = frontier (h ⁻¹' s) :=
h.IsOpenMap.preimage_frontier_eq_frontier_preimage h.Continuous _
#align homeomorph.preimage_frontier Homeomorph.preimage_frontier
+-/
+#print Homeomorph.image_frontier /-
theorem image_frontier (h : α ≃ₜ β) (s : Set α) : h '' frontier s = frontier (h '' s) := by
rw [← preimage_symm, preimage_frontier]
#align homeomorph.image_frontier Homeomorph.image_frontier
+-/
+#print HasCompactMulSupport.comp_homeomorph /-
@[to_additive]
theorem HasCompactMulSupport.comp_homeomorph {M} [One M] {f : β → M} (hf : HasCompactMulSupport f)
(φ : α ≃ₜ β) : HasCompactMulSupport (f ∘ φ) :=
hf.comp_closedEmbedding φ.ClosedEmbedding
#align has_compact_mul_support.comp_homeomorph HasCompactMulSupport.comp_homeomorph
#align has_compact_support.comp_homeomorph HasCompactSupport.comp_homeomorph
+-/
+#print Homeomorph.map_nhds_eq /-
@[simp]
theorem map_nhds_eq (h : α ≃ₜ β) (x : α) : map h (𝓝 x) = 𝓝 (h x) :=
h.Embedding.map_nhds_of_mem _ (by simp)
#align homeomorph.map_nhds_eq Homeomorph.map_nhds_eq
+-/
+#print Homeomorph.symm_map_nhds_eq /-
theorem symm_map_nhds_eq (h : α ≃ₜ β) (x : α) : map h.symm (𝓝 (h x)) = 𝓝 x := by
rw [h.symm.map_nhds_eq, h.symm_apply_apply]
#align homeomorph.symm_map_nhds_eq Homeomorph.symm_map_nhds_eq
+-/
+#print Homeomorph.nhds_eq_comap /-
theorem nhds_eq_comap (h : α ≃ₜ β) (x : α) : 𝓝 x = comap h (𝓝 (h x)) :=
h.Embedding.to_inducing.nhds_eq_comap x
#align homeomorph.nhds_eq_comap Homeomorph.nhds_eq_comap
+-/
+#print Homeomorph.comap_nhds_eq /-
@[simp]
theorem comap_nhds_eq (h : α ≃ₜ β) (y : β) : comap h (𝓝 y) = 𝓝 (h.symm y) := by
rw [h.nhds_eq_comap, h.apply_symm_apply]
#align homeomorph.comap_nhds_eq Homeomorph.comap_nhds_eq
+-/
#print Homeomorph.homeomorphOfContinuousOpen /-
/-- If an bijective map `e : α ≃ β` is continuous and open, then it is a homeomorphism. -/
@@ -435,37 +554,50 @@ def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsO
#align homeomorph.homeomorph_of_continuous_open Homeomorph.homeomorphOfContinuousOpen
-/
+#print Homeomorph.comp_continuousOn_iff /-
@[simp]
theorem comp_continuousOn_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) :
ContinuousOn (h ∘ f) s ↔ ContinuousOn f s :=
h.Inducing.continuousOn_iff.symm
#align homeomorph.comp_continuous_on_iff Homeomorph.comp_continuousOn_iff
+-/
+#print Homeomorph.comp_continuous_iff /-
@[simp]
theorem comp_continuous_iff (h : α ≃ₜ β) {f : γ → α} : Continuous (h ∘ f) ↔ Continuous f :=
h.Inducing.continuous_iff.symm
#align homeomorph.comp_continuous_iff Homeomorph.comp_continuous_iff
+-/
+#print Homeomorph.comp_continuous_iff' /-
@[simp]
theorem comp_continuous_iff' (h : α ≃ₜ β) {f : β → γ} : Continuous (f ∘ h) ↔ Continuous f :=
h.QuotientMap.continuous_iff.symm
#align homeomorph.comp_continuous_iff' Homeomorph.comp_continuous_iff'
+-/
+#print Homeomorph.comp_continuousAt_iff /-
theorem comp_continuousAt_iff (h : α ≃ₜ β) (f : γ → α) (x : γ) :
ContinuousAt (h ∘ f) x ↔ ContinuousAt f x :=
h.Inducing.continuousAt_iff.symm
#align homeomorph.comp_continuous_at_iff Homeomorph.comp_continuousAt_iff
+-/
+#print Homeomorph.comp_continuousAt_iff' /-
theorem comp_continuousAt_iff' (h : α ≃ₜ β) (f : β → γ) (x : α) :
ContinuousAt (f ∘ h) x ↔ ContinuousAt f (h x) :=
h.Inducing.continuousAt_iff' (by simp)
#align homeomorph.comp_continuous_at_iff' Homeomorph.comp_continuousAt_iff'
+-/
+#print Homeomorph.comp_continuousWithinAt_iff /-
theorem comp_continuousWithinAt_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) (x : γ) :
ContinuousWithinAt f s x ↔ ContinuousWithinAt (h ∘ f) s x :=
h.Inducing.continuousWithinAt_iff
#align homeomorph.comp_continuous_within_at_iff Homeomorph.comp_continuousWithinAt_iff
+-/
+#print Homeomorph.comp_isOpenMap_iff /-
@[simp]
theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘ f) ↔ IsOpenMap f :=
by
@@ -474,7 +606,9 @@ theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘
rw [← Function.comp.left_id f, ← h.symm_comp_self, Function.comp.assoc]
exact h.symm.is_open_map.comp hf
#align homeomorph.comp_is_open_map_iff Homeomorph.comp_isOpenMap_iff
+-/
+#print Homeomorph.comp_isOpenMap_iff' /-
@[simp]
theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f ∘ h) ↔ IsOpenMap f :=
by
@@ -483,6 +617,7 @@ theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f
rw [← Function.comp.right_id f, ← h.self_comp_symm, ← Function.comp.assoc]
exact hf.comp h.symm.is_open_map
#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'
+-/
#print Homeomorph.setCongr /-
/-- If two sets are equal, then they are homeomorphic. -/
@@ -494,6 +629,7 @@ def setCongr {s t : Set α} (h : s = t) : s ≃ₜ t
#align homeomorph.set_congr Homeomorph.setCongr
-/
+#print Homeomorph.sumCongr /-
/-- Sum of two homeomorphisms. -/
def sumCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : Sum α γ ≃ₜ Sum β δ
where
@@ -501,7 +637,9 @@ def sumCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : Sum α γ ≃ₜ Sum
continuous_invFun := h₁.symm.Continuous.sum_map h₂.symm.Continuous
toEquiv := h₁.toEquiv.sumCongr h₂.toEquiv
#align homeomorph.sum_congr Homeomorph.sumCongr
+-/
+#print Homeomorph.prodCongr /-
/-- Product of two homeomorphisms. -/
def prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : α × γ ≃ₜ β × δ
where
@@ -511,22 +649,28 @@ def prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : α × γ ≃ₜ β
(h₁.symm.Continuous.comp continuous_fst).prod_mk (h₂.symm.Continuous.comp continuous_snd)
toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
#align homeomorph.prod_congr Homeomorph.prodCongr
+-/
+#print Homeomorph.prodCongr_symm /-
@[simp]
theorem prodCongr_symm (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) :
(h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm :=
rfl
#align homeomorph.prod_congr_symm Homeomorph.prodCongr_symm
+-/
+#print Homeomorph.coe_prodCongr /-
@[simp]
theorem coe_prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
rfl
#align homeomorph.coe_prod_congr Homeomorph.coe_prodCongr
+-/
section
variable (α β γ)
+#print Homeomorph.prodComm /-
/-- `α × β` is homeomorphic to `β × α`. -/
def prodComm : α × β ≃ₜ β × α
where
@@ -534,17 +678,23 @@ def prodComm : α × β ≃ₜ β × α
continuous_invFun := continuous_snd.prod_mk continuous_fst
toEquiv := Equiv.prodComm α β
#align homeomorph.prod_comm Homeomorph.prodComm
+-/
+#print Homeomorph.prodComm_symm /-
@[simp]
theorem prodComm_symm : (prodComm α β).symm = prodComm β α :=
rfl
#align homeomorph.prod_comm_symm Homeomorph.prodComm_symm
+-/
+#print Homeomorph.coe_prodComm /-
@[simp]
theorem coe_prodComm : ⇑(prodComm α β) = Prod.swap :=
rfl
#align homeomorph.coe_prod_comm Homeomorph.coe_prodComm
+-/
+#print Homeomorph.prodAssoc /-
/-- `(α × β) × γ` is homeomorphic to `α × (β × γ)`. -/
def prodAssoc : (α × β) × γ ≃ₜ α × β × γ
where
@@ -556,7 +706,9 @@ def prodAssoc : (α × β) × γ ≃ₜ α × β × γ
(continuous_snd.comp continuous_snd)
toEquiv := Equiv.prodAssoc α β γ
#align homeomorph.prod_assoc Homeomorph.prodAssoc
+-/
+#print Homeomorph.prodPUnit /-
/-- `α × {*}` is homeomorphic to `α`. -/
@[simps (config := { fullyApplied := false }) apply]
def prodPUnit : α × PUnit ≃ₜ α where
@@ -564,16 +716,21 @@ def prodPUnit : α × PUnit ≃ₜ α where
continuous_toFun := continuous_fst
continuous_invFun := continuous_id.prod_mk continuous_const
#align homeomorph.prod_punit Homeomorph.prodPUnit
+-/
+#print Homeomorph.punitProd /-
/-- `{*} × α` is homeomorphic to `α`. -/
def punitProd : PUnit × α ≃ₜ α :=
(prodComm _ _).trans (prodPUnit _)
#align homeomorph.punit_prod Homeomorph.punitProd
+-/
+#print Homeomorph.coe_punitProd /-
@[simp]
theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
rfl
#align homeomorph.coe_punit_prod Homeomorph.coe_punitProd
+-/
#print Homeomorph.homeomorphOfUnique /-
/-- If both `α` and `β` have a unique element, then `α ≃ₜ β`. -/
@@ -601,12 +758,14 @@ def piCongrRight {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, Topological
#align homeomorph.Pi_congr_right Homeomorph.piCongrRight
-/
+#print Homeomorph.piCongrRight_symm /-
@[simp]
theorem piCongrRight_symm {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, TopologicalSpace (β₁ i)]
[∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) :
(piCongrRight F).symm = piCongrRight fun i => (F i).symm :=
rfl
#align homeomorph.Pi_congr_right_symm Homeomorph.piCongrRight_symm
+-/
#print Homeomorph.ulift /-
/-- `ulift α` is homeomorphic to `α`. -/
@@ -620,6 +779,7 @@ def ulift.{u, v} {α : Type u} [TopologicalSpace α] : ULift.{v, u} α ≃ₜ α
section Distrib
+#print Homeomorph.sumProdDistrib /-
/-- `(α ⊕ β) × γ` is homeomorphic to `α × γ ⊕ β × γ`. -/
def sumProdDistrib : Sum α β × γ ≃ₜ Sum (α × γ) (β × γ) :=
Homeomorph.symm <|
@@ -628,14 +788,18 @@ def sumProdDistrib : Sum α β × γ ≃ₜ Sum (α × γ) (β × γ) :=
(continuous_inr.Prod_map continuous_id)) <|
(isOpenMap_inl.Prod IsOpenMap.id).sum_elim (isOpenMap_inr.Prod IsOpenMap.id)
#align homeomorph.sum_prod_distrib Homeomorph.sumProdDistrib
+-/
+#print Homeomorph.prodSumDistrib /-
/-- `α × (β ⊕ γ)` is homeomorphic to `α × β ⊕ α × γ`. -/
def prodSumDistrib : α × Sum β γ ≃ₜ Sum (α × β) (α × γ) :=
(prodComm _ _).trans <| sumProdDistrib.trans <| sumCongr (prodComm _ _) (prodComm _ _)
#align homeomorph.prod_sum_distrib Homeomorph.prodSumDistrib
+-/
variable {ι : Type _} {σ : ι → Type _} [∀ i, TopologicalSpace (σ i)]
+#print Homeomorph.sigmaProdDistrib /-
/-- `(Σ i, σ i) × β` is homeomorphic to `Σ i, (σ i × β)`. -/
def sigmaProdDistrib : (Σ i, σ i) × β ≃ₜ Σ i, σ i × β :=
Homeomorph.symm <|
@@ -643,6 +807,7 @@ def sigmaProdDistrib : (Σ i, σ i) × β ≃ₜ Σ i, σ i × β :=
(continuous_sigma fun i => continuous_sigmaMk.fst'.prod_mk continuous_snd)
(isOpenMap_sigma.2 fun i => isOpenMap_sigmaMk.Prod IsOpenMap.id)
#align homeomorph.sigma_prod_distrib Homeomorph.sigmaProdDistrib
+-/
end Distrib
@@ -657,6 +822,7 @@ def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α)
#align homeomorph.fun_unique Homeomorph.funUnique
-/
+#print Homeomorph.piFinTwo /-
/-- Homeomorphism between dependent functions `Π i : fin 2, α i` and `α 0 × α 1`. -/
@[simps (config := { fullyApplied := false })]
def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀ i, α i) ≃ₜ α 0 × α 1
@@ -665,15 +831,19 @@ def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀
continuous_toFun := (continuous_apply 0).prod_mk (continuous_apply 1)
continuous_invFun := continuous_pi <| Fin.forall_fin_two.2 ⟨continuous_fst, continuous_snd⟩
#align homeomorph.pi_fin_two Homeomorph.piFinTwo
+-/
+#print Homeomorph.finTwoArrow /-
/-- Homeomorphism between `α² = fin 2 → α` and `α × α`. -/
@[simps (config := { fullyApplied := false })]
def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
+-/
/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
+#print Homeomorph.image /-
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
-/
@[simps]
@@ -683,6 +853,7 @@ def image (e : α ≃ₜ β) (s : Set α) : s ≃ₜ e '' s
continuous_invFun := by continuity
toEquiv := e.toEquiv.image s
#align homeomorph.image Homeomorph.image
+-/
#print Homeomorph.Set.univ /-
/-- `set.univ α` is homeomorphic to `α`. -/
@@ -696,6 +867,7 @@ def Set.univ (α : Type _) [TopologicalSpace α] : (univ : Set α) ≃ₜ α
-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Homeomorph.Set.prod /-
/-- `s ×ˢ t` is homeomorphic to `s × t`. -/
@[simps]
def Set.prod (s : Set α) (t : Set β) : ↥(s ×ˢ t) ≃ₜ s × t
@@ -706,11 +878,13 @@ def Set.prod (s : Set α) (t : Set β) : ↥(s ×ˢ t) ≃ₜ s × t
continuous_invFun :=
(continuous_subtype_val.fst'.prod_mk continuous_subtype_val.snd').subtype_mk _
#align homeomorph.set.prod Homeomorph.Set.prod
+-/
section
variable {ι : Type _}
+#print Homeomorph.piEquivPiSubtypeProd /-
/-- The topological space `Π i, β i` can be split as a product by separating the indices in ι
depending on whether they satisfy a predicate p or not.-/
@[simps]
@@ -725,9 +899,11 @@ def piEquivPiSubtypeProd (p : ι → Prop) (β : ι → Type _) [∀ i, Topologi
dsimp only [Equiv.piEquivPiSubtypeProd]; split_ifs
exacts [(continuous_apply _).comp continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_equiv_pi_subtype_prod Homeomorph.piEquivPiSubtypeProd
+-/
variable [DecidableEq ι] (i : ι)
+#print Homeomorph.piSplitAt /-
/-- A product of topological spaces can be split as the binary product of one of the spaces and
the product of all the remaining spaces. -/
@[simps]
@@ -741,15 +917,18 @@ def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
dsimp only [Equiv.piSplitAt]
split_ifs; subst h; exacts [continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_split_at Homeomorph.piSplitAt
+-/
variable (β)
+#print Homeomorph.funSplitAt /-
/-- A product of copies of a topological space can be split as the binary product of one copy and
the product of all the remaining copies. -/
@[simps]
def funSplitAt : (ι → β) ≃ₜ β × ({ j // j ≠ i } → β) :=
piSplitAt i _
#align homeomorph.fun_split_at Homeomorph.funSplitAt
+-/
end
@@ -770,6 +949,7 @@ namespace Continuous
variable [TopologicalSpace α] [TopologicalSpace β]
+#print Continuous.continuous_symm_of_equiv_compact_to_t2 /-
theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f : α ≃ β}
(hf : Continuous f) : Continuous f.symm :=
by
@@ -778,6 +958,7 @@ theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f
have hC' : IsClosed (f '' C) := (hC.is_compact.image hf).IsClosed
rwa [Equiv.image_eq_preimage] at hC'
#align continuous.continuous_symm_of_equiv_compact_to_t2 Continuous.continuous_symm_of_equiv_compact_to_t2
+-/
#print Continuous.homeoOfEquivCompactToT2 /-
/-- Continuous equivalences from a compact space to a T2 space are homeomorphisms.
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -206,7 +206,6 @@ def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f
calc
g x = f.symm (f (g x)) := (f.left_inv (g x)).symm
_ = f.symm x := by rw [hg x]
-
{ toFun := f
invFun := g
left_inv := by convert f.left_inv
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3209ddf94136d36e5e5c624b10b2a347cc9d090
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton
! This file was ported from Lean 3 source module topology.homeomorph
-! leanprover-community/mathlib commit 3b267e70a936eebb21ab546f49a8df34dd300b25
+! leanprover-community/mathlib commit 4c3e1721c58ef9087bbc2c8c38b540f70eda2e53
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -743,6 +743,8 @@ def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
split_ifs; subst h; exacts [continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_split_at Homeomorph.piSplitAt
+variable (β)
+
/-- A product of copies of a topological space can be split as the binary product of one copy and
the product of all the remaining copies. -/
@[simps]
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -430,7 +430,7 @@ def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsO
continuous_invFun := by
rw [continuous_def]
intro s hs
- convert← h₂ s hs using 1
+ convert ← h₂ s hs using 1
apply e.image_eq_preimage
toEquiv := e
#align homeomorph.homeomorph_of_continuous_open Homeomorph.homeomorphOfContinuousOpen
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -46,7 +46,7 @@ variable {α : Type _} {β : Type _} {γ : Type _} {δ : Type _}
/-- Homeomorphism between `α` and `β`, also called topological isomorphism -/
@[nolint has_nonempty_instance]
structure Homeomorph (α : Type _) (β : Type _) [TopologicalSpace α] [TopologicalSpace β] extends
- α ≃ β where
+ α ≃ β where
continuous_toFun : Continuous to_fun := by continuity
continuous_invFun : Continuous inv_fun := by continuity
#align homeomorph Homeomorph
@@ -638,7 +638,7 @@ def prodSumDistrib : α × Sum β γ ≃ₜ Sum (α × β) (α × γ) :=
variable {ι : Type _} {σ : ι → Type _} [∀ i, TopologicalSpace (σ i)]
/-- `(Σ i, σ i) × β` is homeomorphic to `Σ i, (σ i × β)`. -/
-def sigmaProdDistrib : (Σi, σ i) × β ≃ₜ Σi, σ i × β :=
+def sigmaProdDistrib : (Σ i, σ i) × β ≃ₜ Σ i, σ i × β :=
Homeomorph.symm <|
homeomorphOfContinuousOpen (Equiv.sigmaProdDistrib σ β).symm
(continuous_sigma fun i => continuous_sigmaMk.fst'.prod_mk continuous_snd)
@@ -724,7 +724,7 @@ def piEquivPiSubtypeProd (p : ι → Prop) (β : ι → Type _) [∀ i, Topologi
continuous_invFun :=
continuous_pi fun j => by
dsimp only [Equiv.piEquivPiSubtypeProd]; split_ifs
- exacts[(continuous_apply _).comp continuous_fst, (continuous_apply _).comp continuous_snd]
+ exacts [(continuous_apply _).comp continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_equiv_pi_subtype_prod Homeomorph.piEquivPiSubtypeProd
variable [DecidableEq ι] (i : ι)
@@ -740,7 +740,7 @@ def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
continuous_invFun :=
continuous_pi fun j => by
dsimp only [Equiv.piSplitAt]
- split_ifs; subst h; exacts[continuous_fst, (continuous_apply _).comp continuous_snd]
+ split_ifs; subst h; exacts [continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_split_at Homeomorph.piSplitAt
/-- A product of copies of a topological space can be split as the binary product of one copy and
@@ -775,7 +775,7 @@ theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f
rw [continuous_iff_isClosed]
intro C hC
have hC' : IsClosed (f '' C) := (hC.is_compact.image hf).IsClosed
- rwa [Equiv.image_eq_preimage] at hC'
+ rwa [Equiv.image_eq_preimage] at hC'
#align continuous.continuous_symm_of_equiv_compact_to_t2 Continuous.continuous_symm_of_equiv_compact_to_t2
#print Continuous.homeoOfEquivCompactToT2 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -37,7 +37,7 @@ directions continuous. We denote homeomorphisms with the notation `≃ₜ`.
open Set Filter
-open Topology
+open scoped Topology
variable {α : Type _} {β : Type _} {γ : Type _} {δ : Type _}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -62,9 +62,6 @@ variable [TopologicalSpace α] [TopologicalSpace β] [TopologicalSpace γ] [Topo
instance : CoeFun (α ≃ₜ β) fun _ => α → β :=
⟨fun e => e.toEquiv⟩
-/- warning: homeomorph.homeomorph_mk_coe -> Homeomorph.homeomorph_mk_coe is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coeₓ'. -/
@[simp]
theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
rfl
@@ -96,55 +93,25 @@ def Simps.symm_apply (h : α ≃ₜ β) : β → α :=
initialize_simps_projections Homeomorph (to_equiv_to_fun → apply, to_equiv_inv_fun → symm_apply,
-toEquiv)
-/- warning: homeomorph.coe_to_equiv -> Homeomorph.coe_toEquiv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.coe_to_equiv Homeomorph.coe_toEquivₓ'. -/
@[simp]
theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
rfl
#align homeomorph.coe_to_equiv Homeomorph.coe_toEquiv
-/- warning: homeomorph.coe_symm_to_equiv -> Homeomorph.coe_symm_toEquiv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (β -> α) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
-Case conversion may be inaccurate. Consider using '#align homeomorph.coe_symm_to_equiv Homeomorph.coe_symm_toEquivₓ'. -/
@[simp]
theorem coe_symm_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv.symm = h.symm :=
rfl
#align homeomorph.coe_symm_to_equiv Homeomorph.coe_symm_toEquiv
-/- warning: homeomorph.to_equiv_injective -> Homeomorph.toEquiv_injective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β], Function.Injective.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (Equiv.{succ u1, succ u2} α β) (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) (Equiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.to_equiv_injective Homeomorph.toEquiv_injectiveₓ'. -/
theorem toEquiv_injective : Function.Injective (toEquiv : α ≃ₜ β → α ≃ β)
| ⟨e, h₁, h₂⟩, ⟨e', h₁', h₂'⟩, rfl => rfl
#align homeomorph.to_equiv_injective Homeomorph.toEquiv_injective
-/- warning: homeomorph.ext -> Homeomorph.ext is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {h : Homeomorph.{u1, u2} α β _inst_1 _inst_2} {h' : Homeomorph.{u1, u2} α β _inst_1 _inst_2}, (forall (x : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h' x)) -> (Eq.{max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) h h')
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] {h : Homeomorph.{u2, u1} α β _inst_1 _inst_2} {h' : Homeomorph.{u2, u1} α β _inst_1 _inst_2}, (forall (x : α), Eq.{succ u1} β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h' x)) -> (Eq.{max (succ u2) (succ u1)} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) h h')
-Case conversion may be inaccurate. Consider using '#align homeomorph.ext Homeomorph.extₓ'. -/
@[ext]
theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
toEquiv_injective <| Equiv.ext H
#align homeomorph.ext Homeomorph.ext
-/- warning: homeomorph.symm_symm -> Homeomorph.symm_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (Homeomorph.symm.{u2, u1} β α _inst_2 _inst_1 (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h)) h
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) (Homeomorph.symm.{u1, u2} β α _inst_2 _inst_1 (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) h
-Case conversion may be inaccurate. Consider using '#align homeomorph.symm_symm Homeomorph.symm_symmₓ'. -/
@[simp]
theorem symm_symm (h : α ≃ₜ β) : h.symm.symm = h :=
ext fun _ => rfl
@@ -171,20 +138,11 @@ protected def trans (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) : α ≃ₜ γ
#align homeomorph.trans Homeomorph.trans
-/
-/- warning: homeomorph.trans_apply -> Homeomorph.trans_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h₁ : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u3} β γ _inst_2 _inst_3) (a : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Homeomorph.{u1, u3} α γ _inst_1 _inst_3) (fun (_x : Homeomorph.{u1, u3} α γ _inst_1 _inst_3) => α -> γ) (Homeomorph.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3) (Homeomorph.trans.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 h₁ h₂) a) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Homeomorph.{u2, u3} β γ _inst_2 _inst_3) (fun (_x : Homeomorph.{u2, u3} β γ _inst_2 _inst_3) => β -> γ) (Homeomorph.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3) h₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h₁ a))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h₁ : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u1} β γ _inst_2 _inst_3) (a : α), Eq.{succ u1} γ (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α (fun (_x : α) => γ) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α γ (EquivLike.toEmbeddingLike.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α γ (Homeomorph.instEquivLikeHomeomorph.{u3, u1} α γ _inst_1 _inst_3))) (Homeomorph.trans.{u3, u2, u1} α β γ _inst_1 _inst_2 _inst_3 h₁ h₂) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β (fun (_x : β) => γ) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β γ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β γ (Homeomorph.instEquivLikeHomeomorph.{u2, u1} β γ _inst_2 _inst_3))) h₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h₁ a))
-Case conversion may be inaccurate. Consider using '#align homeomorph.trans_apply Homeomorph.trans_applyₓ'. -/
@[simp]
theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.trans h₂ a = h₂ (h₁ a) :=
rfl
#align homeomorph.trans_apply Homeomorph.trans_apply
-/- warning: homeomorph.homeomorph_mk_coe_symm -> Homeomorph.homeomorph_mk_coe_symm is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe_symm Homeomorph.homeomorph_mk_coe_symmₓ'. -/
@[simp]
theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
((Homeomorph.mk a b c).symm : β → α) = a.symm :=
@@ -198,109 +156,49 @@ theorem refl_symm : (Homeomorph.refl α).symm = Homeomorph.refl α :=
#align homeomorph.refl_symm Homeomorph.refl_symm
-/
-/- warning: homeomorph.continuous -> Homeomorph.continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Continuous.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.continuous Homeomorph.continuousₓ'. -/
@[continuity]
protected theorem continuous (h : α ≃ₜ β) : Continuous h :=
h.continuous_toFun
#align homeomorph.continuous Homeomorph.continuous
-/- warning: homeomorph.continuous_symm -> Homeomorph.continuous_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Continuous.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
-Case conversion may be inaccurate. Consider using '#align homeomorph.continuous_symm Homeomorph.continuous_symmₓ'. -/
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
@[continuity]
protected theorem continuous_symm (h : α ≃ₜ β) : Continuous h.symm :=
h.continuous_invFun
#align homeomorph.continuous_symm Homeomorph.continuous_symm
-/- warning: homeomorph.apply_symm_apply -> Homeomorph.apply_symm_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : β), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h) x)) x
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : β), Eq.{succ u1} β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) x)) x
-Case conversion may be inaccurate. Consider using '#align homeomorph.apply_symm_apply Homeomorph.apply_symm_applyₓ'. -/
@[simp]
theorem apply_symm_apply (h : α ≃ₜ β) (x : β) : h (h.symm x) = x :=
h.toEquiv.apply_symm_apply x
#align homeomorph.apply_symm_apply Homeomorph.apply_symm_apply
-/- warning: homeomorph.symm_apply_apply -> Homeomorph.symm_apply_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x)) x
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x)) x
-Case conversion may be inaccurate. Consider using '#align homeomorph.symm_apply_apply Homeomorph.symm_apply_applyₓ'. -/
@[simp]
theorem symm_apply_apply (h : α ≃ₜ β) (x : α) : h.symm (h x) = x :=
h.toEquiv.symm_apply_apply x
#align homeomorph.symm_apply_apply Homeomorph.symm_apply_apply
-/- warning: homeomorph.self_trans_symm -> Homeomorph.self_trans_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (Homeomorph.{u1, u1} α α _inst_1 _inst_1) (Homeomorph.trans.{u1, u2, u1} α β α _inst_1 _inst_2 _inst_1 h (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h)) (Homeomorph.refl.{u1} α _inst_1)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (Homeomorph.{u2, u2} α α _inst_1 _inst_1) (Homeomorph.trans.{u2, u1, u2} α β α _inst_1 _inst_2 _inst_1 h (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (Homeomorph.refl.{u2} α _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.self_trans_symm Homeomorph.self_trans_symmₓ'. -/
@[simp]
theorem self_trans_symm (h : α ≃ₜ β) : h.trans h.symm = Homeomorph.refl α := by ext;
apply symm_apply_apply
#align homeomorph.self_trans_symm Homeomorph.self_trans_symm
-/- warning: homeomorph.symm_trans_self -> Homeomorph.symm_trans_self is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (Homeomorph.{u2, u2} β β _inst_2 _inst_2) (Homeomorph.trans.{u2, u1, u2} β α β _inst_2 _inst_1 _inst_2 (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h) h) (Homeomorph.refl.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Homeomorph.{u1, u1} β β _inst_2 _inst_2) (Homeomorph.trans.{u1, u2, u1} β α β _inst_2 _inst_1 _inst_2 (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) h) (Homeomorph.refl.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.symm_trans_self Homeomorph.symm_trans_selfₓ'. -/
@[simp]
theorem symm_trans_self (h : α ≃ₜ β) : h.symm.trans h = Homeomorph.refl β := by ext;
apply apply_symm_apply
#align homeomorph.symm_trans_self Homeomorph.symm_trans_self
-/- warning: homeomorph.bijective -> Homeomorph.bijective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Function.Bijective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Bijective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.bijective Homeomorph.bijectiveₓ'. -/
protected theorem bijective (h : α ≃ₜ β) : Function.Bijective h :=
h.toEquiv.Bijective
#align homeomorph.bijective Homeomorph.bijective
-/- warning: homeomorph.injective -> Homeomorph.injective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Function.Injective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Injective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.injective Homeomorph.injectiveₓ'. -/
protected theorem injective (h : α ≃ₜ β) : Function.Injective h :=
h.toEquiv.Injective
#align homeomorph.injective Homeomorph.injective
-/- warning: homeomorph.surjective -> Homeomorph.surjective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Function.Surjective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Surjective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.surjective Homeomorph.surjectiveₓ'. -/
protected theorem surjective (h : α ≃ₜ β) : Function.Surjective h :=
h.toEquiv.Surjective
#align homeomorph.surjective Homeomorph.surjective
-/- warning: homeomorph.change_inv -> Homeomorph.changeInv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (f : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (g : β -> α), (Function.RightInverse.{succ u1, succ u2} α β g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)) -> (Homeomorph.{u1, u2} α β _inst_1 _inst_2)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (f : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (g : β -> α), (Function.RightInverse.{succ u1, succ u2} α β g (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) f)) -> (Homeomorph.{u1, u2} α β _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.change_inv Homeomorph.changeInvₓ'. -/
/-- Change the homeomorphism `f` to make the inverse function definitionally equal to `g`. -/
def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f) : α ≃ₜ β :=
have : g = f.symm :=
@@ -317,129 +215,57 @@ def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f
continuous_invFun := by convert f.symm.continuous }
#align homeomorph.change_inv Homeomorph.changeInv
-/- warning: homeomorph.symm_comp_self -> Homeomorph.symm_comp_self is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (α -> α) (Function.comp.{succ u1, succ u2, succ u1} α β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) (id.{succ u1} α)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (α -> α) (Function.comp.{succ u2, succ u1, succ u2} α β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)) (id.{succ u2} α)
-Case conversion may be inaccurate. Consider using '#align homeomorph.symm_comp_self Homeomorph.symm_comp_selfₓ'. -/
@[simp]
theorem symm_comp_self (h : α ≃ₜ β) : ⇑h.symm ∘ ⇑h = id :=
funext h.symm_apply_apply
#align homeomorph.symm_comp_self Homeomorph.symm_comp_self
-/- warning: homeomorph.self_comp_symm -> Homeomorph.self_comp_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (β -> β) (Function.comp.{succ u2, succ u1, succ u2} β α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))) (id.{succ u2} β)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (β -> β) (Function.comp.{succ u1, succ u2, succ u1} β α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (id.{succ u1} β)
-Case conversion may be inaccurate. Consider using '#align homeomorph.self_comp_symm Homeomorph.self_comp_symmₓ'. -/
@[simp]
theorem self_comp_symm (h : α ≃ₜ β) : ⇑h ∘ ⇑h.symm = id :=
funext h.apply_symm_apply
#align homeomorph.self_comp_symm Homeomorph.self_comp_symm
-/- warning: homeomorph.range_coe -> Homeomorph.range_coe is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (Set.{u2} β) (Set.range.{u2, succ u1} β α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) (Set.univ.{u2} β)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Set.{u1} β) (Set.range.{u1, succ u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)) (Set.univ.{u1} β)
-Case conversion may be inaccurate. Consider using '#align homeomorph.range_coe Homeomorph.range_coeₓ'. -/
@[simp]
theorem range_coe (h : α ≃ₜ β) : range h = univ :=
h.Surjective.range_eq
#align homeomorph.range_coe Homeomorph.range_coe
-/- warning: homeomorph.image_symm -> Homeomorph.image_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u2} β) -> (Set.{u1} α)) (Set.image.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u1} β) -> (Set.{u2} α)) (Set.image.{u1, u2} β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h))
-Case conversion may be inaccurate. Consider using '#align homeomorph.image_symm Homeomorph.image_symmₓ'. -/
theorem image_symm (h : α ≃ₜ β) : image h.symm = preimage h :=
funext h.symm.toEquiv.image_eq_preimage
#align homeomorph.image_symm Homeomorph.image_symm
-/- warning: homeomorph.preimage_symm -> Homeomorph.preimage_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} ((Set.{u1} α) -> (Set.{u2} β)) (Set.preimage.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u2} α) -> (Set.{u1} β)) (Set.preimage.{u1, u2} β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h))
-Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_symm Homeomorph.preimage_symmₓ'. -/
theorem preimage_symm (h : α ≃ₜ β) : preimage h.symm = image h :=
(funext h.toEquiv.image_eq_preimage).symm
#align homeomorph.preimage_symm Homeomorph.preimage_symm
-/- warning: homeomorph.image_preimage -> Homeomorph.image_preimage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) s
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
-Case conversion may be inaccurate. Consider using '#align homeomorph.image_preimage Homeomorph.image_preimageₓ'. -/
@[simp]
theorem image_preimage (h : α ≃ₜ β) (s : Set β) : h '' (h ⁻¹' s) = s :=
h.toEquiv.image_preimage s
#align homeomorph.image_preimage Homeomorph.image_preimage
-/- warning: homeomorph.preimage_image -> Homeomorph.preimage_image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) s
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
-Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_image Homeomorph.preimage_imageₓ'. -/
@[simp]
theorem preimage_image (h : α ≃ₜ β) (s : Set α) : h ⁻¹' (h '' s) = s :=
h.toEquiv.preimage_image s
#align homeomorph.preimage_image Homeomorph.preimage_image
-/- warning: homeomorph.inducing -> Homeomorph.inducing is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Inducing.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Inducing.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.inducing Homeomorph.inducingₓ'. -/
protected theorem inducing (h : α ≃ₜ β) : Inducing h :=
inducing_of_inducing_compose h.Continuous h.symm.Continuous <| by
simp only [symm_comp_self, inducing_id]
#align homeomorph.inducing Homeomorph.inducing
-/- warning: homeomorph.induced_eq -> Homeomorph.induced_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (TopologicalSpace.{u1} α) (TopologicalSpace.induced.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) _inst_2) _inst_1
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (TopologicalSpace.{u2} α) (TopologicalSpace.induced.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) _inst_2) _inst_1
-Case conversion may be inaccurate. Consider using '#align homeomorph.induced_eq Homeomorph.induced_eqₓ'. -/
theorem induced_eq (h : α ≃ₜ β) : TopologicalSpace.induced h ‹_› = ‹_› :=
h.Inducing.1.symm
#align homeomorph.induced_eq Homeomorph.induced_eq
-/- warning: homeomorph.quotient_map -> Homeomorph.quotientMap is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), QuotientMap.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), QuotientMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.quotient_map Homeomorph.quotientMapₓ'. -/
protected theorem quotientMap (h : α ≃ₜ β) : QuotientMap h :=
QuotientMap.of_quotientMap_compose h.symm.Continuous h.Continuous <| by
simp only [self_comp_symm, QuotientMap.id]
#align homeomorph.quotient_map Homeomorph.quotientMap
-/- warning: homeomorph.coinduced_eq -> Homeomorph.coinduced_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (TopologicalSpace.{u2} β) (TopologicalSpace.coinduced.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) _inst_1) _inst_2
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (TopologicalSpace.{u1} β) (TopologicalSpace.coinduced.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) _inst_1) _inst_2
-Case conversion may be inaccurate. Consider using '#align homeomorph.coinduced_eq Homeomorph.coinduced_eqₓ'. -/
theorem coinduced_eq (h : α ≃ₜ β) : TopologicalSpace.coinduced h ‹_› = ‹_› :=
h.QuotientMap.2.symm
#align homeomorph.coinduced_eq Homeomorph.coinduced_eq
-/- warning: homeomorph.embedding -> Homeomorph.embedding is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Embedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Embedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.embedding Homeomorph.embeddingₓ'. -/
protected theorem embedding (h : α ≃ₜ β) : Embedding h :=
⟨h.Inducing, h.Injective⟩
#align homeomorph.embedding Homeomorph.embedding
@@ -461,32 +287,14 @@ protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopol
#align homeomorph.second_countable_topology Homeomorph.secondCountableTopology
-/
-/- warning: homeomorph.is_compact_image -> Homeomorph.isCompact_image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u1} α} (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Iff (IsCompact.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsCompact.{u1} α _inst_1 s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] {s : Set.{u2} α} (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Iff (IsCompact.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsCompact.{u2} α _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_compact_image Homeomorph.isCompact_imageₓ'. -/
theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔ IsCompact s :=
h.Embedding.isCompact_iff_isCompact_image.symm
#align homeomorph.is_compact_image Homeomorph.isCompact_image
-/- warning: homeomorph.is_compact_preimage -> Homeomorph.isCompact_preimage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u2} β} (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Iff (IsCompact.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsCompact.{u2} β _inst_2 s)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u2} β} (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Iff (IsCompact.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) h) s)) (IsCompact.{u2} β _inst_2 s)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimageₓ'. -/
theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹' s) ↔ IsCompact s := by
rw [← image_symm] <;> exact h.symm.is_compact_image
#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimage
-/- warning: homeomorph.comap_cocompact -> Homeomorph.comap_cocompact is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (Filter.{u1} α) (Filter.comap.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Filter.cocompact.{u2} β _inst_2)) (Filter.cocompact.{u1} α _inst_1)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (Filter.{u2} α) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Filter.cocompact.{u1} β _inst_2)) (Filter.cocompact.{u2} α _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comap_cocompact Homeomorph.comap_cocompactₓ'. -/
@[simp]
theorem comap_cocompact (h : α ≃ₜ β) : comap h (cocompact β) = cocompact α :=
(comap_cocompact_le h.Continuous).antisymm <|
@@ -494,23 +302,11 @@ theorem comap_cocompact (h : α ≃ₜ β) : comap h (cocompact β) = cocompact
⟨h ⁻¹' K, h.isCompact_preimage.2 hK, Subset.rfl⟩
#align homeomorph.comap_cocompact Homeomorph.comap_cocompact
-/- warning: homeomorph.map_cocompact -> Homeomorph.map_cocompact is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (Filter.{u2} β) (Filter.map.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Filter.cocompact.{u1} α _inst_1)) (Filter.cocompact.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Filter.{u1} β) (Filter.map.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Filter.cocompact.{u2} α _inst_1)) (Filter.cocompact.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.map_cocompact Homeomorph.map_cocompactₓ'. -/
@[simp]
theorem map_cocompact (h : α ≃ₜ β) : map h (cocompact α) = cocompact β := by
rw [← h.comap_cocompact, map_comap_of_surjective h.surjective]
#align homeomorph.map_cocompact Homeomorph.map_cocompact
-/- warning: homeomorph.compact_space -> Homeomorph.compactSpace is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_5 : CompactSpace.{u1} α _inst_1], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (CompactSpace.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_5 : CompactSpace.{u2} α _inst_1], (Homeomorph.{u2, u1} α β _inst_1 _inst_2) -> (CompactSpace.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.compact_space Homeomorph.compactSpaceₓ'. -/
protected theorem compactSpace [CompactSpace α] (h : α ≃ₜ β) : CompactSpace β :=
{
isCompact_univ :=
@@ -519,214 +315,88 @@ protected theorem compactSpace [CompactSpace α] (h : α ≃ₜ β) : CompactSpa
apply CompactSpace.isCompact_univ }
#align homeomorph.compact_space Homeomorph.compactSpace
-/- warning: homeomorph.t0_space -> Homeomorph.t0Space is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_5 : T0Space.{u1} α _inst_1], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (T0Space.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_5 : T0Space.{u2} α _inst_1], (Homeomorph.{u2, u1} α β _inst_1 _inst_2) -> (T0Space.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.t0_space Homeomorph.t0Spaceₓ'. -/
protected theorem t0Space [T0Space α] (h : α ≃ₜ β) : T0Space β :=
h.symm.Embedding.T0Space
#align homeomorph.t0_space Homeomorph.t0Space
-/- warning: homeomorph.t1_space -> Homeomorph.t1Space is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_5 : T1Space.{u1} α _inst_1], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (T1Space.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_5 : T1Space.{u2} α _inst_1], (Homeomorph.{u2, u1} α β _inst_1 _inst_2) -> (T1Space.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.t1_space Homeomorph.t1Spaceₓ'. -/
protected theorem t1Space [T1Space α] (h : α ≃ₜ β) : T1Space β :=
h.symm.Embedding.T1Space
#align homeomorph.t1_space Homeomorph.t1Space
-/- warning: homeomorph.t2_space -> Homeomorph.t2Space is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_5 : T2Space.{u1} α _inst_1], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (T2Space.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_5 : T2Space.{u2} α _inst_1], (Homeomorph.{u2, u1} α β _inst_1 _inst_2) -> (T2Space.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.t2_space Homeomorph.t2Spaceₓ'. -/
protected theorem t2Space [T2Space α] (h : α ≃ₜ β) : T2Space β :=
h.symm.Embedding.T2Space
#align homeomorph.t2_space Homeomorph.t2Space
-/- warning: homeomorph.t3_space -> Homeomorph.t3Space is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_5 : T3Space.{u1} α _inst_1], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (T3Space.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_5 : T3Space.{u2} α _inst_1], (Homeomorph.{u2, u1} α β _inst_1 _inst_2) -> (T3Space.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.t3_space Homeomorph.t3Spaceₓ'. -/
protected theorem t3Space [T3Space α] (h : α ≃ₜ β) : T3Space β :=
h.symm.Embedding.T3Space
#align homeomorph.t3_space Homeomorph.t3Space
-/- warning: homeomorph.dense_embedding -> Homeomorph.denseEmbedding is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), DenseEmbedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), DenseEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.dense_embedding Homeomorph.denseEmbeddingₓ'. -/
protected theorem denseEmbedding (h : α ≃ₜ β) : DenseEmbedding h :=
{ h.Embedding with dense := h.Surjective.DenseRange }
#align homeomorph.dense_embedding Homeomorph.denseEmbedding
-/- warning: homeomorph.is_open_preimage -> Homeomorph.isOpen_preimage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u2} β}, Iff (IsOpen.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsOpen.{u2} β _inst_2 s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u1} β}, Iff (IsOpen.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsOpen.{u1} β _inst_2 s)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_open_preimage Homeomorph.isOpen_preimageₓ'. -/
@[simp]
theorem isOpen_preimage (h : α ≃ₜ β) {s : Set β} : IsOpen (h ⁻¹' s) ↔ IsOpen s :=
h.QuotientMap.isOpen_preimage
#align homeomorph.is_open_preimage Homeomorph.isOpen_preimage
-/- warning: homeomorph.is_open_image -> Homeomorph.isOpen_image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u1} α}, Iff (IsOpen.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsOpen.{u1} α _inst_1 s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u2} α}, Iff (IsOpen.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsOpen.{u2} α _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_open_image Homeomorph.isOpen_imageₓ'. -/
@[simp]
theorem isOpen_image (h : α ≃ₜ β) {s : Set α} : IsOpen (h '' s) ↔ IsOpen s := by
rw [← preimage_symm, is_open_preimage]
#align homeomorph.is_open_image Homeomorph.isOpen_image
-/- warning: homeomorph.is_open_map -> Homeomorph.isOpenMap is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), IsOpenMap.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), IsOpenMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_open_map Homeomorph.isOpenMapₓ'. -/
protected theorem isOpenMap (h : α ≃ₜ β) : IsOpenMap h := fun s => h.isOpen_image.2
#align homeomorph.is_open_map Homeomorph.isOpenMap
-/- warning: homeomorph.is_closed_preimage -> Homeomorph.isClosed_preimage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u2} β}, Iff (IsClosed.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsClosed.{u2} β _inst_2 s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u1} β}, Iff (IsClosed.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsClosed.{u1} β _inst_2 s)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_closed_preimage Homeomorph.isClosed_preimageₓ'. -/
@[simp]
theorem isClosed_preimage (h : α ≃ₜ β) {s : Set β} : IsClosed (h ⁻¹' s) ↔ IsClosed s := by
simp only [← isOpen_compl_iff, ← preimage_compl, is_open_preimage]
#align homeomorph.is_closed_preimage Homeomorph.isClosed_preimage
-/- warning: homeomorph.is_closed_image -> Homeomorph.isClosed_image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u1} α}, Iff (IsClosed.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsClosed.{u1} α _inst_1 s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u2} α}, Iff (IsClosed.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsClosed.{u2} α _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_closed_image Homeomorph.isClosed_imageₓ'. -/
@[simp]
theorem isClosed_image (h : α ≃ₜ β) {s : Set α} : IsClosed (h '' s) ↔ IsClosed s := by
rw [← preimage_symm, is_closed_preimage]
#align homeomorph.is_closed_image Homeomorph.isClosed_image
-/- warning: homeomorph.is_closed_map -> Homeomorph.isClosedMap is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), IsClosedMap.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), IsClosedMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.is_closed_map Homeomorph.isClosedMapₓ'. -/
protected theorem isClosedMap (h : α ≃ₜ β) : IsClosedMap h := fun s => h.isClosed_image.2
#align homeomorph.is_closed_map Homeomorph.isClosedMap
-/- warning: homeomorph.open_embedding -> Homeomorph.openEmbedding is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), OpenEmbedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), OpenEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.open_embedding Homeomorph.openEmbeddingₓ'. -/
protected theorem openEmbedding (h : α ≃ₜ β) : OpenEmbedding h :=
openEmbedding_of_embedding_open h.Embedding h.IsOpenMap
#align homeomorph.open_embedding Homeomorph.openEmbedding
-/- warning: homeomorph.closed_embedding -> Homeomorph.closedEmbedding is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), ClosedEmbedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), ClosedEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align homeomorph.closed_embedding Homeomorph.closedEmbeddingₓ'. -/
protected theorem closedEmbedding (h : α ≃ₜ β) : ClosedEmbedding h :=
closedEmbedding_of_embedding_closed h.Embedding h.IsClosedMap
#align homeomorph.closed_embedding Homeomorph.closedEmbedding
-/- warning: homeomorph.normal_space -> Homeomorph.normalSpace is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_5 : NormalSpace.{u1} α _inst_1], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (NormalSpace.{u2} β _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_5 : NormalSpace.{u2} α _inst_1], (Homeomorph.{u2, u1} α β _inst_1 _inst_2) -> (NormalSpace.{u1} β _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.normal_space Homeomorph.normalSpaceₓ'. -/
protected theorem normalSpace [NormalSpace α] (h : α ≃ₜ β) : NormalSpace β :=
h.symm.ClosedEmbedding.NormalSpace
#align homeomorph.normal_space Homeomorph.normalSpace
-/- warning: homeomorph.preimage_closure -> Homeomorph.preimage_closure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (closure.{u2} β _inst_2 s)) (closure.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (closure.{u1} β _inst_2 s)) (closure.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
-Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_closure Homeomorph.preimage_closureₓ'. -/
theorem preimage_closure (h : α ≃ₜ β) (s : Set β) : h ⁻¹' closure s = closure (h ⁻¹' s) :=
h.IsOpenMap.preimage_closure_eq_closure_preimage h.Continuous _
#align homeomorph.preimage_closure Homeomorph.preimage_closure
-/- warning: homeomorph.image_closure -> Homeomorph.image_closure is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (closure.{u1} α _inst_1 s)) (closure.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (closure.{u2} α _inst_1 s)) (closure.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
-Case conversion may be inaccurate. Consider using '#align homeomorph.image_closure Homeomorph.image_closureₓ'. -/
theorem image_closure (h : α ≃ₜ β) (s : Set α) : h '' closure s = closure (h '' s) := by
rw [← preimage_symm, preimage_closure]
#align homeomorph.image_closure Homeomorph.image_closure
-/- warning: homeomorph.preimage_interior -> Homeomorph.preimage_interior is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (interior.{u2} β _inst_2 s)) (interior.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (interior.{u1} β _inst_2 s)) (interior.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
-Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_interior Homeomorph.preimage_interiorₓ'. -/
theorem preimage_interior (h : α ≃ₜ β) (s : Set β) : h ⁻¹' interior s = interior (h ⁻¹' s) :=
h.IsOpenMap.preimage_interior_eq_interior_preimage h.Continuous _
#align homeomorph.preimage_interior Homeomorph.preimage_interior
-/- warning: homeomorph.image_interior -> Homeomorph.image_interior is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (interior.{u1} α _inst_1 s)) (interior.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (interior.{u2} α _inst_1 s)) (interior.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
-Case conversion may be inaccurate. Consider using '#align homeomorph.image_interior Homeomorph.image_interiorₓ'. -/
theorem image_interior (h : α ≃ₜ β) (s : Set α) : h '' interior s = interior (h '' s) := by
rw [← preimage_symm, preimage_interior]
#align homeomorph.image_interior Homeomorph.image_interior
-/- warning: homeomorph.preimage_frontier -> Homeomorph.preimage_frontier is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (frontier.{u2} β _inst_2 s)) (frontier.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (frontier.{u1} β _inst_2 s)) (frontier.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
-Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_frontier Homeomorph.preimage_frontierₓ'. -/
theorem preimage_frontier (h : α ≃ₜ β) (s : Set β) : h ⁻¹' frontier s = frontier (h ⁻¹' s) :=
h.IsOpenMap.preimage_frontier_eq_frontier_preimage h.Continuous _
#align homeomorph.preimage_frontier Homeomorph.preimage_frontier
-/- warning: homeomorph.image_frontier -> Homeomorph.image_frontier is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (frontier.{u1} α _inst_1 s)) (frontier.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (frontier.{u2} α _inst_1 s)) (frontier.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
-Case conversion may be inaccurate. Consider using '#align homeomorph.image_frontier Homeomorph.image_frontierₓ'. -/
theorem image_frontier (h : α ≃ₜ β) (s : Set α) : h '' frontier s = frontier (h '' s) := by
rw [← preimage_symm, preimage_frontier]
#align homeomorph.image_frontier Homeomorph.image_frontier
-/- warning: has_compact_mul_support.comp_homeomorph -> HasCompactMulSupport.comp_homeomorph is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {M : Type.{u3}} [_inst_5 : One.{u3} M] {f : β -> M}, (HasCompactMulSupport.{u2, u3} β M _inst_2 _inst_5 f) -> (forall (φ : Homeomorph.{u1, u2} α β _inst_1 _inst_2), HasCompactMulSupport.{u1, u3} α M _inst_1 _inst_5 (Function.comp.{succ u1, succ u2, succ u3} α β M f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) φ)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {M : Type.{u3}} [_inst_5 : One.{u3} M] {f : β -> M}, (HasCompactMulSupport.{u2, u3} β M _inst_2 _inst_5 f) -> (forall (φ : Homeomorph.{u1, u2} α β _inst_1 _inst_2), HasCompactMulSupport.{u1, u3} α M _inst_1 _inst_5 (Function.comp.{succ u1, succ u2, succ u3} α β M f (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) φ)))
-Case conversion may be inaccurate. Consider using '#align has_compact_mul_support.comp_homeomorph HasCompactMulSupport.comp_homeomorphₓ'. -/
@[to_additive]
theorem HasCompactMulSupport.comp_homeomorph {M} [One M] {f : β → M} (hf : HasCompactMulSupport f)
(φ : α ≃ₜ β) : HasCompactMulSupport (f ∘ φ) :=
@@ -734,43 +404,19 @@ theorem HasCompactMulSupport.comp_homeomorph {M} [One M] {f : β → M} (hf : Ha
#align has_compact_mul_support.comp_homeomorph HasCompactMulSupport.comp_homeomorph
#align has_compact_support.comp_homeomorph HasCompactSupport.comp_homeomorph
-/- warning: homeomorph.map_nhds_eq -> Homeomorph.map_nhds_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} β) (Filter.map.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (nhds.{u1} α _inst_1 x)) (nhds.{u2} β _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} (Filter.{u1} β) (Filter.map.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u2} α _inst_1 x)) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x))
-Case conversion may be inaccurate. Consider using '#align homeomorph.map_nhds_eq Homeomorph.map_nhds_eqₓ'. -/
@[simp]
theorem map_nhds_eq (h : α ≃ₜ β) (x : α) : map h (𝓝 x) = 𝓝 (h x) :=
h.Embedding.map_nhds_of_mem _ (by simp)
#align homeomorph.map_nhds_eq Homeomorph.map_nhds_eq
-/- warning: homeomorph.symm_map_nhds_eq -> Homeomorph.symm_map_nhds_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} (Filter.{u1} α) (Filter.map.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h)) (nhds.{u2} β _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x))) (nhds.{u1} α _inst_1 x)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} α) (Filter.map.{u1, u2} β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x))) (nhds.{u2} α _inst_1 x)
-Case conversion may be inaccurate. Consider using '#align homeomorph.symm_map_nhds_eq Homeomorph.symm_map_nhds_eqₓ'. -/
theorem symm_map_nhds_eq (h : α ≃ₜ β) (x : α) : map h.symm (𝓝 (h x)) = 𝓝 x := by
rw [h.symm.map_nhds_eq, h.symm_apply_apply]
#align homeomorph.symm_map_nhds_eq Homeomorph.symm_map_nhds_eq
-/- warning: homeomorph.nhds_eq_comap -> Homeomorph.nhds_eq_comap is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} (Filter.{u1} α) (nhds.{u1} α _inst_1 x) (Filter.comap.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (nhds.{u2} β _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} α) (nhds.{u2} α _inst_1 x) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x)))
-Case conversion may be inaccurate. Consider using '#align homeomorph.nhds_eq_comap Homeomorph.nhds_eq_comapₓ'. -/
theorem nhds_eq_comap (h : α ≃ₜ β) (x : α) : 𝓝 x = comap h (𝓝 (h x)) :=
h.Embedding.to_inducing.nhds_eq_comap x
#align homeomorph.nhds_eq_comap Homeomorph.nhds_eq_comap
-/- warning: homeomorph.comap_nhds_eq -> Homeomorph.comap_nhds_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (y : β), Eq.{succ u1} (Filter.{u1} α) (Filter.comap.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (nhds.{u2} β _inst_2 y)) (nhds.{u1} α _inst_1 (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h) y))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (y : β), Eq.{succ u2} (Filter.{u2} α) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u1} β _inst_2 y)) (nhds.{u2} α _inst_1 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) y))
-Case conversion may be inaccurate. Consider using '#align homeomorph.comap_nhds_eq Homeomorph.comap_nhds_eqₓ'. -/
@[simp]
theorem comap_nhds_eq (h : α ≃ₜ β) (y : β) : comap h (𝓝 y) = 𝓝 (h.symm y) := by
rw [h.nhds_eq_comap, h.apply_symm_apply]
@@ -790,79 +436,37 @@ def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsO
#align homeomorph.homeomorph_of_continuous_open Homeomorph.homeomorphOfContinuousOpen
-/
-/- warning: homeomorph.comp_continuous_on_iff -> Homeomorph.comp_continuousOn_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u3} γ), Iff (ContinuousOn.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f) s) (ContinuousOn.{u3, u1} γ α _inst_3 _inst_1 f s)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u1} γ), Iff (ContinuousOn.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) s) (ContinuousOn.{u1, u3} γ α _inst_3 _inst_1 f s)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_on_iff Homeomorph.comp_continuousOn_iffₓ'. -/
@[simp]
theorem comp_continuousOn_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) :
ContinuousOn (h ∘ f) s ↔ ContinuousOn f s :=
h.Inducing.continuousOn_iff.symm
#align homeomorph.comp_continuous_on_iff Homeomorph.comp_continuousOn_iff
-/- warning: homeomorph.comp_continuous_iff -> Homeomorph.comp_continuous_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (Continuous.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f)) (Continuous.{u3, u1} γ α _inst_3 _inst_1 f)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (Continuous.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f)) (Continuous.{u1, u3} γ α _inst_3 _inst_1 f)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_iff Homeomorph.comp_continuous_iffₓ'. -/
@[simp]
theorem comp_continuous_iff (h : α ≃ₜ β) {f : γ → α} : Continuous (h ∘ f) ↔ Continuous f :=
h.Inducing.continuous_iff.symm
#align homeomorph.comp_continuous_iff Homeomorph.comp_continuous_iff
-/- warning: homeomorph.comp_continuous_iff' -> Homeomorph.comp_continuous_iff' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (Continuous.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))) (Continuous.{u2, u3} β γ _inst_2 _inst_3 f)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (Continuous.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h))) (Continuous.{u2, u1} β γ _inst_2 _inst_3 f)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_iff' Homeomorph.comp_continuous_iff'ₓ'. -/
@[simp]
theorem comp_continuous_iff' (h : α ≃ₜ β) {f : β → γ} : Continuous (f ∘ h) ↔ Continuous f :=
h.QuotientMap.continuous_iff.symm
#align homeomorph.comp_continuous_iff' Homeomorph.comp_continuous_iff'
-/- warning: homeomorph.comp_continuous_at_iff -> Homeomorph.comp_continuousAt_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : γ -> α) (x : γ), Iff (ContinuousAt.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f) x) (ContinuousAt.{u3, u1} γ α _inst_3 _inst_1 f x)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (x : γ), Iff (ContinuousAt.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) x) (ContinuousAt.{u1, u3} γ α _inst_3 _inst_1 f x)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_at_iff Homeomorph.comp_continuousAt_iffₓ'. -/
theorem comp_continuousAt_iff (h : α ≃ₜ β) (f : γ → α) (x : γ) :
ContinuousAt (h ∘ f) x ↔ ContinuousAt f x :=
h.Inducing.continuousAt_iff.symm
#align homeomorph.comp_continuous_at_iff Homeomorph.comp_continuousAt_iff
-/- warning: homeomorph.comp_continuous_at_iff' -> Homeomorph.comp_continuousAt_iff' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : β -> γ) (x : α), Iff (ContinuousAt.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) x) (ContinuousAt.{u2, u3} β γ _inst_2 _inst_3 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : β -> γ) (x : α), Iff (ContinuousAt.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h)) x) (ContinuousAt.{u2, u1} β γ _inst_2 _inst_3 f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h x))
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_at_iff' Homeomorph.comp_continuousAt_iff'ₓ'. -/
theorem comp_continuousAt_iff' (h : α ≃ₜ β) (f : β → γ) (x : α) :
ContinuousAt (f ∘ h) x ↔ ContinuousAt f (h x) :=
h.Inducing.continuousAt_iff' (by simp)
#align homeomorph.comp_continuous_at_iff' Homeomorph.comp_continuousAt_iff'
-/- warning: homeomorph.comp_continuous_within_at_iff -> Homeomorph.comp_continuousWithinAt_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u3} γ) (x : γ), Iff (ContinuousWithinAt.{u3, u1} γ α _inst_3 _inst_1 f s x) (ContinuousWithinAt.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f) s x)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u1} γ) (x : γ), Iff (ContinuousWithinAt.{u1, u3} γ α _inst_3 _inst_1 f s x) (ContinuousWithinAt.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) s x)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_within_at_iff Homeomorph.comp_continuousWithinAt_iffₓ'. -/
theorem comp_continuousWithinAt_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) (x : γ) :
ContinuousWithinAt f s x ↔ ContinuousWithinAt (h ∘ f) s x :=
h.Inducing.continuousWithinAt_iff
#align homeomorph.comp_continuous_within_at_iff Homeomorph.comp_continuousWithinAt_iff
-/- warning: homeomorph.comp_is_open_map_iff -> Homeomorph.comp_isOpenMap_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (IsOpenMap.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f)) (IsOpenMap.{u3, u1} γ α _inst_3 _inst_1 f)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (IsOpenMap.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f)) (IsOpenMap.{u1, u3} γ α _inst_3 _inst_1 f)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_is_open_map_iff Homeomorph.comp_isOpenMap_iffₓ'. -/
@[simp]
theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘ f) ↔ IsOpenMap f :=
by
@@ -872,12 +476,6 @@ theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘
exact h.symm.is_open_map.comp hf
#align homeomorph.comp_is_open_map_iff Homeomorph.comp_isOpenMap_iff
-/- warning: homeomorph.comp_is_open_map_iff' -> Homeomorph.comp_isOpenMap_iff' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (IsOpenMap.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))) (IsOpenMap.{u2, u3} β γ _inst_2 _inst_3 f)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (IsOpenMap.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h))) (IsOpenMap.{u2, u1} β γ _inst_2 _inst_3 f)
-Case conversion may be inaccurate. Consider using '#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'ₓ'. -/
@[simp]
theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f ∘ h) ↔ IsOpenMap f :=
by
@@ -897,12 +495,6 @@ def setCongr {s t : Set α} (h : s = t) : s ≃ₜ t
#align homeomorph.set_congr Homeomorph.setCongr
-/
-/- warning: homeomorph.sum_congr -> Homeomorph.sumCongr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] [_inst_4 : TopologicalSpace.{u4} δ], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) -> (Homeomorph.{max u1 u3, max u2 u4} (Sum.{u1, u3} α γ) (Sum.{u2, u4} β δ) (Sum.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Sum.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] [_inst_4 : TopologicalSpace.{u4} δ], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) -> (Homeomorph.{max u3 u1, max u4 u2} (Sum.{u1, u3} α γ) (Sum.{u2, u4} β δ) (instTopologicalSpaceSum.{u1, u3} α γ _inst_1 _inst_3) (instTopologicalSpaceSum.{u2, u4} β δ _inst_2 _inst_4))
-Case conversion may be inaccurate. Consider using '#align homeomorph.sum_congr Homeomorph.sumCongrₓ'. -/
/-- Sum of two homeomorphisms. -/
def sumCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : Sum α γ ≃ₜ Sum β δ
where
@@ -911,12 +503,6 @@ def sumCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : Sum α γ ≃ₜ Sum
toEquiv := h₁.toEquiv.sumCongr h₂.toEquiv
#align homeomorph.sum_congr Homeomorph.sumCongr
-/- warning: homeomorph.prod_congr -> Homeomorph.prodCongr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] [_inst_4 : TopologicalSpace.{u4} δ], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) -> (Homeomorph.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] [_inst_4 : TopologicalSpace.{u4} δ], (Homeomorph.{u1, u2} α β _inst_1 _inst_2) -> (Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) -> (Homeomorph.{max u3 u1, max u4 u2} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (instTopologicalSpaceProd.{u1, u3} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u4} β δ _inst_2 _inst_4))
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_congr Homeomorph.prodCongrₓ'. -/
/-- Product of two homeomorphisms. -/
def prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : α × γ ≃ₜ β × δ
where
@@ -927,24 +513,12 @@ def prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : α × γ ≃ₜ β
toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
#align homeomorph.prod_congr Homeomorph.prodCongr
-/- warning: homeomorph.prod_congr_symm -> Homeomorph.prodCongr_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] [_inst_4 : TopologicalSpace.{u4} δ] (h₁ : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u3, u4} γ δ _inst_3 _inst_4), Eq.{max (succ (max u2 u4)) (succ (max u1 u3))} (Homeomorph.{max u2 u4, max u1 u3} (Prod.{u2, u4} β δ) (Prod.{u1, u3} α γ) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3)) (Homeomorph.symm.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4) (Homeomorph.prodCongr.{u1, u2, u3, u4} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Homeomorph.prodCongr.{u2, u1, u4, u3} β α δ γ _inst_2 _inst_1 _inst_4 _inst_3 (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h₁) (Homeomorph.symm.{u3, u4} γ δ _inst_3 _inst_4 h₂))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {δ : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} α] [_inst_2 : TopologicalSpace.{u3} β] [_inst_3 : TopologicalSpace.{u2} γ] [_inst_4 : TopologicalSpace.{u1} δ] (h₁ : Homeomorph.{u4, u3} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u1} γ δ _inst_3 _inst_4), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Homeomorph.{max u3 u1, max u4 u2} (Prod.{u3, u1} β δ) (Prod.{u4, u2} α γ) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3)) (Homeomorph.symm.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4) (Homeomorph.prodCongr.{u4, u3, u2, u1} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Homeomorph.prodCongr.{u3, u4, u1, u2} β α δ γ _inst_2 _inst_1 _inst_4 _inst_3 (Homeomorph.symm.{u4, u3} α β _inst_1 _inst_2 h₁) (Homeomorph.symm.{u2, u1} γ δ _inst_3 _inst_4 h₂))
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_congr_symm Homeomorph.prodCongr_symmₓ'. -/
@[simp]
theorem prodCongr_symm (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) :
(h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm :=
rfl
#align homeomorph.prod_congr_symm Homeomorph.prodCongr_symm
-/- warning: homeomorph.coe_prod_congr -> Homeomorph.coe_prodCongr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] [_inst_4 : TopologicalSpace.{u4} δ] (h₁ : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u3, u4} γ δ _inst_3 _inst_4), Eq.{max (succ (max u1 u3)) (succ (max u2 u4))} ((Prod.{u1, u3} α γ) -> (Prod.{u2, u4} β δ)) (coeFn.{max (succ (max u1 u3)) (succ (max u2 u4)), max (succ (max u1 u3)) (succ (max u2 u4))} (Homeomorph.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4)) (fun (_x : Homeomorph.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4)) => (Prod.{u1, u3} α γ) -> (Prod.{u2, u4} β δ)) (Homeomorph.hasCoeToFun.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4)) (Homeomorph.prodCongr.{u1, u2, u3, u4} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Prod.map.{u1, u2, u3, u4} α β γ δ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h₁) (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ u4)} (Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) (fun (_x : Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) => γ -> δ) (Homeomorph.hasCoeToFun.{u3, u4} γ δ _inst_3 _inst_4) h₂))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {δ : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} α] [_inst_2 : TopologicalSpace.{u3} β] [_inst_3 : TopologicalSpace.{u2} γ] [_inst_4 : TopologicalSpace.{u1} δ] (h₁ : Homeomorph.{u4, u3} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u1} γ δ _inst_3 _inst_4), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} ((Prod.{u4, u2} α γ) -> (Prod.{u3, u1} β δ)) (FunLike.coe.{max (succ (max u4 u2)) (succ (max u3 u1)), succ (max u4 u2), succ (max u3 u1)} (Homeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (fun (_x : Prod.{u4, u2} α γ) => Prod.{u3, u1} β δ) (EmbeddingLike.toFunLike.{max (succ (max u4 u2)) (succ (max u3 u1)), succ (max u4 u2), succ (max u3 u1)} (Homeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (EquivLike.toEmbeddingLike.{max (succ (max u4 u2)) (succ (max u3 u1)), succ (max u4 u2), succ (max u3 u1)} (Homeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (Homeomorph.instEquivLikeHomeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)))) (Homeomorph.prodCongr.{u4, u3, u2, u1} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Prod.map.{u4, u3, u2, u1} α β γ δ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u4, u3} α β _inst_1 _inst_2))) h₁) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ (fun (_x : γ) => δ) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ δ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ δ (Homeomorph.instEquivLikeHomeomorph.{u2, u1} γ δ _inst_3 _inst_4))) h₂))
-Case conversion may be inaccurate. Consider using '#align homeomorph.coe_prod_congr Homeomorph.coe_prodCongrₓ'. -/
@[simp]
theorem coe_prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
rfl
@@ -954,12 +528,6 @@ section
variable (α β γ)
-/- warning: homeomorph.prod_comm -> Homeomorph.prodComm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β], Homeomorph.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1)
-but is expected to have type
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β], Homeomorph.{max u2 u1, max u1 u2} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (instTopologicalSpaceProd.{u1, u2} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u2, u1} β α _inst_2 _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_comm Homeomorph.prodCommₓ'. -/
/-- `α × β` is homeomorphic to `β × α`. -/
def prodComm : α × β ≃ₜ β × α
where
@@ -968,34 +536,16 @@ def prodComm : α × β ≃ₜ β × α
toEquiv := Equiv.prodComm α β
#align homeomorph.prod_comm Homeomorph.prodComm
-/- warning: homeomorph.prod_comm_symm -> Homeomorph.prodComm_symm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β], Eq.{max (succ (max u2 u1)) (succ (max u1 u2))} (Homeomorph.{max u2 u1, max u1 u2} (Prod.{u2, u1} β α) (Prod.{u1, u2} α β) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2)) (Homeomorph.symm.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.prodComm.{u1, u2} α β _inst_1 _inst_2)) (Homeomorph.prodComm.{u2, u1} β α _inst_2 _inst_1)
-but is expected to have type
- forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β], Eq.{max (succ u2) (succ u1)} (Homeomorph.{max u2 u1, max u2 u1} (Prod.{u1, u2} β α) (Prod.{u2, u1} α β) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2)) (Homeomorph.symm.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1) (Homeomorph.prodComm.{u2, u1} α β _inst_1 _inst_2)) (Homeomorph.prodComm.{u1, u2} β α _inst_2 _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_comm_symm Homeomorph.prodComm_symmₓ'. -/
@[simp]
theorem prodComm_symm : (prodComm α β).symm = prodComm β α :=
rfl
#align homeomorph.prod_comm_symm Homeomorph.prodComm_symm
-/- warning: homeomorph.coe_prod_comm -> Homeomorph.coe_prodComm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β], Eq.{max (succ (max u1 u2)) (succ (max u2 u1))} ((Prod.{u1, u2} α β) -> (Prod.{u2, u1} β α)) (coeFn.{max (succ (max u1 u2)) (succ (max u2 u1)), max (succ (max u1 u2)) (succ (max u2 u1))} (Homeomorph.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1)) (fun (_x : Homeomorph.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1)) => (Prod.{u1, u2} α β) -> (Prod.{u2, u1} β α)) (Homeomorph.hasCoeToFun.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1)) (Homeomorph.prodComm.{u1, u2} α β _inst_1 _inst_2)) (Prod.swap.{u1, u2} α β)
-but is expected to have type
- forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β], Eq.{max (succ u2) (succ u1)} ((Prod.{u2, u1} α β) -> (Prod.{u1, u2} β α)) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Homeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (fun (_x : Prod.{u2, u1} α β) => Prod.{u1, u2} β α) (EmbeddingLike.toFunLike.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Homeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (EquivLike.toEmbeddingLike.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Homeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (Homeomorph.instEquivLikeHomeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)))) (Homeomorph.prodComm.{u2, u1} α β _inst_1 _inst_2)) (Prod.swap.{u2, u1} α β)
-Case conversion may be inaccurate. Consider using '#align homeomorph.coe_prod_comm Homeomorph.coe_prodCommₓ'. -/
@[simp]
theorem coe_prodComm : ⇑(prodComm α β) = Prod.swap :=
rfl
#align homeomorph.coe_prod_comm Homeomorph.coe_prodComm
-/- warning: homeomorph.prod_assoc -> Homeomorph.prodAssoc is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) (γ : Type.{u3}) [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ], Homeomorph.{max (max u1 u2) u3, max u1 u2 u3} (Prod.{max u1 u2, u3} (Prod.{u1, u2} α β) γ) (Prod.{u1, max u2 u3} α (Prod.{u2, u3} β γ)) (Prod.topologicalSpace.{max u1 u2, u3} (Prod.{u1, u2} α β) γ (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) _inst_3) (Prod.topologicalSpace.{u1, max u2 u3} α (Prod.{u2, u3} β γ) _inst_1 (Prod.topologicalSpace.{u2, u3} β γ _inst_2 _inst_3))
-but is expected to have type
- forall (α : Type.{u1}) (β : Type.{u2}) (γ : Type.{u3}) [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ], Homeomorph.{max u3 u2 u1, max (max u3 u2) u1} (Prod.{max u2 u1, u3} (Prod.{u1, u2} α β) γ) (Prod.{u1, max u3 u2} α (Prod.{u2, u3} β γ)) (instTopologicalSpaceProd.{max u1 u2, u3} (Prod.{u1, u2} α β) γ (instTopologicalSpaceProd.{u1, u2} α β _inst_1 _inst_2) _inst_3) (instTopologicalSpaceProd.{u1, max u2 u3} α (Prod.{u2, u3} β γ) _inst_1 (instTopologicalSpaceProd.{u2, u3} β γ _inst_2 _inst_3))
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_assoc Homeomorph.prodAssocₓ'. -/
/-- `(α × β) × γ` is homeomorphic to `α × (β × γ)`. -/
def prodAssoc : (α × β) × γ ≃ₜ α × β × γ
where
@@ -1008,12 +558,6 @@ def prodAssoc : (α × β) × γ ≃ₜ α × β × γ
toEquiv := Equiv.prodAssoc α β γ
#align homeomorph.prod_assoc Homeomorph.prodAssoc
-/- warning: homeomorph.prod_punit -> Homeomorph.prodPUnit is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{max u1 u2, u1} (Prod.{u1, u2} α PUnit.{succ u2}) α (Prod.topologicalSpace.{u1, u2} α PUnit.{succ u2} _inst_1 PUnit.topologicalSpace.{u2}) _inst_1
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{max u2 u1, u1} (Prod.{u1, u2} α PUnit.{succ u2}) α (instTopologicalSpaceProd.{u1, u2} α PUnit.{succ u2} _inst_1 instTopologicalSpacePUnit.{u2}) _inst_1
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_punit Homeomorph.prodPUnitₓ'. -/
/-- `α × {*}` is homeomorphic to `α`. -/
@[simps (config := { fullyApplied := false }) apply]
def prodPUnit : α × PUnit ≃ₜ α where
@@ -1022,23 +566,11 @@ def prodPUnit : α × PUnit ≃ₜ α where
continuous_invFun := continuous_id.prod_mk continuous_const
#align homeomorph.prod_punit Homeomorph.prodPUnit
-/- warning: homeomorph.punit_prod -> Homeomorph.punitProd is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.topologicalSpace.{u2, u1} PUnit.{succ u2} α PUnit.topologicalSpace.{u2} _inst_1) _inst_1
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{max u1 u2, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (instTopologicalSpaceProd.{u2, u1} PUnit.{succ u2} α instTopologicalSpacePUnit.{u2} _inst_1) _inst_1
-Case conversion may be inaccurate. Consider using '#align homeomorph.punit_prod Homeomorph.punitProdₓ'. -/
/-- `{*} × α` is homeomorphic to `α`. -/
def punitProd : PUnit × α ≃ₜ α :=
(prodComm _ _).trans (prodPUnit _)
#align homeomorph.punit_prod Homeomorph.punitProd
-/- warning: homeomorph.coe_punit_prod -> Homeomorph.coe_punitProd is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Eq.{max (succ (max u2 u1)) (succ u1)} ((Prod.{u2, u1} PUnit.{succ u2} α) -> α) (coeFn.{max (succ (max u2 u1)) (succ u1), max (succ (max u2 u1)) (succ u1)} (Homeomorph.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.topologicalSpace.{u2, u1} PUnit.{succ u2} α PUnit.topologicalSpace.{u2} _inst_1) _inst_1) (fun (_x : Homeomorph.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.topologicalSpace.{u2, u1} PUnit.{succ u2} α PUnit.topologicalSpace.{u2} _inst_1) _inst_1) => (Prod.{u2, u1} PUnit.{succ u2} α) -> α) (Homeomorph.hasCoeToFun.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.topologicalSpace.{u2, u1} PUnit.{succ u2} α PUnit.topologicalSpace.{u2} _inst_1) _inst_1) (Homeomorph.punitProd.{u1, u2} α _inst_1)) (Prod.snd.{u2, u1} PUnit.{succ u2} α)
-but is expected to have type
- forall (α : Type.{u2}) [_inst_1 : TopologicalSpace.{u2} α], Eq.{max (succ u2) (succ u1)} ((Prod.{u1, u2} PUnit.{succ u1} α) -> α) (FunLike.coe.{max (succ (max u2 u1)) (succ u2), succ (max u2 u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) (fun (_x : Prod.{u1, u2} PUnit.{succ u1} α) => α) (EmbeddingLike.toFunLike.{max (succ (max u2 u1)) (succ u2), succ (max u2 u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (EquivLike.toEmbeddingLike.{max (succ (max u2 u1)) (succ u2), succ (max u2 u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (Homeomorph.instEquivLikeHomeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1))) (Homeomorph.punitProd.{u2, u1} α _inst_1)) (Prod.snd.{u1, u2} PUnit.{succ u1} α)
-Case conversion may be inaccurate. Consider using '#align homeomorph.coe_punit_prod Homeomorph.coe_punitProdₓ'. -/
@[simp]
theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
rfl
@@ -1070,12 +602,6 @@ def piCongrRight {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, Topological
#align homeomorph.Pi_congr_right Homeomorph.piCongrRight
-/
-/- warning: homeomorph.Pi_congr_right_symm -> Homeomorph.piCongrRight_symm is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {β₁ : ι -> Type.{u2}} {β₂ : ι -> Type.{u3}} [_inst_5 : forall (i : ι), TopologicalSpace.{u2} (β₁ i)] [_inst_6 : forall (i : ι), TopologicalSpace.{u3} (β₂ i)] (F : forall (i : ι), Homeomorph.{u2, u3} (β₁ i) (β₂ i) (_inst_5 i) (_inst_6 i)), Eq.{max (succ (max u1 u3)) (succ (max u1 u2))} (Homeomorph.{max u1 u3, max u1 u2} (forall (i : ι), β₂ i) (forall (i : ι), β₁ i) (Pi.topologicalSpace.{u1, u3} ι (fun (i : ι) => β₂ i) (fun (a : ι) => _inst_6 a)) (Pi.topologicalSpace.{u1, u2} ι (fun (i : ι) => β₁ i) (fun (a : ι) => _inst_5 a))) (Homeomorph.symm.{max u1 u2, max u1 u3} (forall (i : ι), β₁ i) (forall (i : ι), β₂ i) (Pi.topologicalSpace.{u1, u2} ι (fun (i : ι) => β₁ i) (fun (a : ι) => _inst_5 a)) (Pi.topologicalSpace.{u1, u3} ι (fun (i : ι) => β₂ i) (fun (a : ι) => _inst_6 a)) (Homeomorph.piCongrRight.{u1, u2, u3} ι (fun (i : ι) => β₁ i) (fun (i : ι) => β₂ i) (fun (i : ι) => _inst_5 i) (fun (i : ι) => _inst_6 i) F)) (Homeomorph.piCongrRight.{u1, u3, u2} ι (fun (i : ι) => β₂ i) (fun (i : ι) => β₁ i) (fun (a : ι) => _inst_6 a) (fun (a : ι) => _inst_5 a) (fun (i : ι) => Homeomorph.symm.{u2, u3} (β₁ i) (β₂ i) (_inst_5 i) (_inst_6 i) (F i)))
-but is expected to have type
- forall {ι : Type.{u3}} {β₁ : ι -> Type.{u2}} {β₂ : ι -> Type.{u1}} [_inst_5 : forall (i : ι), TopologicalSpace.{u2} (β₁ i)] [_inst_6 : forall (i : ι), TopologicalSpace.{u1} (β₂ i)] (F : forall (i : ι), Homeomorph.{u2, u1} (β₁ i) (β₂ i) (_inst_5 i) (_inst_6 i)), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (Homeomorph.{max u3 u1, max u3 u2} (forall (i : ι), β₂ i) (forall (i : ι), β₁ i) (Pi.topologicalSpace.{u3, u1} ι (fun (i : ι) => β₂ i) (fun (a : ι) => _inst_6 a)) (Pi.topologicalSpace.{u3, u2} ι (fun (i : ι) => β₁ i) (fun (a : ι) => _inst_5 a))) (Homeomorph.symm.{max u3 u2, max u3 u1} (forall (i : ι), β₁ i) (forall (i : ι), β₂ i) (Pi.topologicalSpace.{u3, u2} ι (fun (i : ι) => β₁ i) (fun (a : ι) => _inst_5 a)) (Pi.topologicalSpace.{u3, u1} ι (fun (i : ι) => β₂ i) (fun (a : ι) => _inst_6 a)) (Homeomorph.piCongrRight.{u3, u2, u1} ι (fun (i : ι) => β₁ i) (fun (i : ι) => β₂ i) (fun (i : ι) => _inst_5 i) (fun (i : ι) => _inst_6 i) F)) (Homeomorph.piCongrRight.{u3, u1, u2} ι (fun (i : ι) => β₂ i) (fun (i : ι) => β₁ i) (fun (a : ι) => _inst_6 a) (fun (a : ι) => _inst_5 a) (fun (i : ι) => Homeomorph.symm.{u2, u1} (β₁ i) (β₂ i) (_inst_5 i) (_inst_6 i) (F i)))
-Case conversion may be inaccurate. Consider using '#align homeomorph.Pi_congr_right_symm Homeomorph.piCongrRight_symmₓ'. -/
@[simp]
theorem piCongrRight_symm {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, TopologicalSpace (β₁ i)]
[∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) :
@@ -1095,12 +621,6 @@ def ulift.{u, v} {α : Type u} [TopologicalSpace α] : ULift.{v, u} α ≃ₜ α
section Distrib
-/- warning: homeomorph.sum_prod_distrib -> Homeomorph.sumProdDistrib is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ], Homeomorph.{max (max u1 u2) u3, max (max u1 u3) u2 u3} (Prod.{max u1 u2, u3} (Sum.{u1, u2} α β) γ) (Sum.{max u1 u3, max u2 u3} (Prod.{u1, u3} α γ) (Prod.{u2, u3} β γ)) (Prod.topologicalSpace.{max u1 u2, u3} (Sum.{u1, u2} α β) γ (Sum.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) _inst_3) (Sum.topologicalSpace.{max u1 u3, max u2 u3} (Prod.{u1, u3} α γ) (Prod.{u2, u3} β γ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u3} β γ _inst_2 _inst_3))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ], Homeomorph.{max u3 u2 u1, max (max u3 u2) u3 u1} (Prod.{max u2 u1, u3} (Sum.{u1, u2} α β) γ) (Sum.{max u3 u1, max u3 u2} (Prod.{u1, u3} α γ) (Prod.{u2, u3} β γ)) (instTopologicalSpaceProd.{max u1 u2, u3} (Sum.{u1, u2} α β) γ (instTopologicalSpaceSum.{u1, u2} α β _inst_1 _inst_2) _inst_3) (instTopologicalSpaceSum.{max u1 u3, max u2 u3} (Prod.{u1, u3} α γ) (Prod.{u2, u3} β γ) (instTopologicalSpaceProd.{u1, u3} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u2, u3} β γ _inst_2 _inst_3))
-Case conversion may be inaccurate. Consider using '#align homeomorph.sum_prod_distrib Homeomorph.sumProdDistribₓ'. -/
/-- `(α ⊕ β) × γ` is homeomorphic to `α × γ ⊕ β × γ`. -/
def sumProdDistrib : Sum α β × γ ≃ₜ Sum (α × γ) (β × γ) :=
Homeomorph.symm <|
@@ -1110,12 +630,6 @@ def sumProdDistrib : Sum α β × γ ≃ₜ Sum (α × γ) (β × γ) :=
(isOpenMap_inl.Prod IsOpenMap.id).sum_elim (isOpenMap_inr.Prod IsOpenMap.id)
#align homeomorph.sum_prod_distrib Homeomorph.sumProdDistrib
-/- warning: homeomorph.prod_sum_distrib -> Homeomorph.prodSumDistrib is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ], Homeomorph.{max u1 u2 u3, max (max u1 u2) u1 u3} (Prod.{u1, max u2 u3} α (Sum.{u2, u3} β γ)) (Sum.{max u1 u2, max u1 u3} (Prod.{u1, u2} α β) (Prod.{u1, u3} α γ)) (Prod.topologicalSpace.{u1, max u2 u3} α (Sum.{u2, u3} β γ) _inst_1 (Sum.topologicalSpace.{u2, u3} β γ _inst_2 _inst_3)) (Sum.topologicalSpace.{max u1 u2, max u1 u3} (Prod.{u1, u2} α β) (Prod.{u1, u3} α γ) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ], Homeomorph.{max (max u3 u2) u1, max (max u3 u1) u2 u1} (Prod.{u1, max u3 u2} α (Sum.{u2, u3} β γ)) (Sum.{max u2 u1, max u3 u1} (Prod.{u1, u2} α β) (Prod.{u1, u3} α γ)) (instTopologicalSpaceProd.{u1, max u2 u3} α (Sum.{u2, u3} β γ) _inst_1 (instTopologicalSpaceSum.{u2, u3} β γ _inst_2 _inst_3)) (instTopologicalSpaceSum.{max u1 u2, max u1 u3} (Prod.{u1, u2} α β) (Prod.{u1, u3} α γ) (instTopologicalSpaceProd.{u1, u2} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u3} α γ _inst_1 _inst_3))
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_sum_distrib Homeomorph.prodSumDistribₓ'. -/
/-- `α × (β ⊕ γ)` is homeomorphic to `α × β ⊕ α × γ`. -/
def prodSumDistrib : α × Sum β γ ≃ₜ Sum (α × β) (α × γ) :=
(prodComm _ _).trans <| sumProdDistrib.trans <| sumCongr (prodComm _ _) (prodComm _ _)
@@ -1123,12 +637,6 @@ def prodSumDistrib : α × Sum β γ ≃ₜ Sum (α × β) (α × γ) :=
variable {ι : Type _} {σ : ι → Type _} [∀ i, TopologicalSpace (σ i)]
-/- warning: homeomorph.sigma_prod_distrib -> Homeomorph.sigmaProdDistrib is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} β] {ι : Type.{u2}} {σ : ι -> Type.{u3}} [_inst_5 : forall (i : ι), TopologicalSpace.{u3} (σ i)], Homeomorph.{max (max u2 u3) u1, max u2 u3 u1} (Prod.{max u2 u3, u1} (Sigma.{u2, u3} ι (fun (i : ι) => σ i)) β) (Sigma.{u2, max u3 u1} ι (fun (i : ι) => Prod.{u3, u1} (σ i) β)) (Prod.topologicalSpace.{max u2 u3, u1} (Sigma.{u2, u3} ι (fun (i : ι) => σ i)) β (Sigma.topologicalSpace.{u2, u3} ι (fun (i : ι) => σ i) (fun (a : ι) => _inst_5 a)) _inst_2) (Sigma.topologicalSpace.{u2, max u3 u1} ι (fun (i : ι) => Prod.{u3, u1} (σ i) β) (fun (a : ι) => Prod.topologicalSpace.{u3, u1} (σ a) β (_inst_5 a) _inst_2))
-but is expected to have type
- forall {β : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} β] {ι : Type.{u2}} {σ : ι -> Type.{u3}} [_inst_5 : forall (i : ι), TopologicalSpace.{u3} (σ i)], Homeomorph.{max u1 u3 u2, max (max u1 u3) u2} (Prod.{max u3 u2, u1} (Sigma.{u2, u3} ι (fun (i : ι) => σ i)) β) (Sigma.{u2, max u1 u3} ι (fun (i : ι) => Prod.{u3, u1} (σ i) β)) (instTopologicalSpaceProd.{max u2 u3, u1} (Sigma.{u2, u3} ι (fun (i : ι) => σ i)) β (instTopologicalSpaceSigma.{u2, u3} ι (fun (i : ι) => σ i) (fun (a : ι) => _inst_5 a)) _inst_2) (instTopologicalSpaceSigma.{u2, max u1 u3} ι (fun (i : ι) => Prod.{u3, u1} (σ i) β) (fun (a : ι) => instTopologicalSpaceProd.{u3, u1} (σ a) β (_inst_5 a) _inst_2))
-Case conversion may be inaccurate. Consider using '#align homeomorph.sigma_prod_distrib Homeomorph.sigmaProdDistribₓ'. -/
/-- `(Σ i, σ i) × β` is homeomorphic to `Σ i, (σ i × β)`. -/
def sigmaProdDistrib : (Σi, σ i) × β ≃ₜ Σi, σ i × β :=
Homeomorph.symm <|
@@ -1150,12 +658,6 @@ def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α)
#align homeomorph.fun_unique Homeomorph.funUnique
-/
-/- warning: homeomorph.pi_fin_two -> Homeomorph.piFinTwo is a dubious translation:
-lean 3 declaration is
- forall (α : (Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> Type.{u1}) [_inst_5 : forall (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))), TopologicalSpace.{u1} (α i)], Homeomorph.{u1, u1} (forall (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))), α i) (Prod.{u1, u1} (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) Homeomorph.piFinTwo._proof_1))))) (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (One.one.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasOneOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) Homeomorph.piFinTwo._proof_2)))))) (Pi.topologicalSpace.{0, u1} (Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => α i) (fun (a : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => _inst_5 a)) (Prod.topologicalSpace.{u1, u1} (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) Homeomorph.piFinTwo._proof_1))))) (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (One.one.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasOneOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) Homeomorph.piFinTwo._proof_2))))) (_inst_5 (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) Homeomorph.piFinTwo._proof_1))))) (_inst_5 (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (One.one.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasOneOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) Homeomorph.piFinTwo._proof_2))))))
-but is expected to have type
- forall (α : (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) -> Type.{u1}) [_inst_5 : forall (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))), TopologicalSpace.{u1} (α i)], Homeomorph.{u1, u1} (forall (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))), α i) (Prod.{u1, u1} (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))))) (Pi.topologicalSpace.{0, u1} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => α i) (fun (a : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => _inst_5 a)) (instTopologicalSpaceProd.{u1, u1} (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (_inst_5 (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (_inst_5 (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))
-Case conversion may be inaccurate. Consider using '#align homeomorph.pi_fin_two Homeomorph.piFinTwoₓ'. -/
/-- Homeomorphism between dependent functions `Π i : fin 2, α i` and `α 0 × α 1`. -/
@[simps (config := { fullyApplied := false })]
def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀ i, α i) ≃ₜ α 0 × α 1
@@ -1165,24 +667,12 @@ def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀
continuous_invFun := continuous_pi <| Fin.forall_fin_two.2 ⟨continuous_fst, continuous_snd⟩
#align homeomorph.pi_fin_two Homeomorph.piFinTwo
-/- warning: homeomorph.fin_two_arrow -> Homeomorph.finTwoArrow is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{u1, u1} ((Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> α) (Prod.{u1, u1} α α) (Pi.topologicalSpace.{0, u1} (Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (fun (ᾰ : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => α) (fun (a : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => _inst_1)) (Prod.topologicalSpace.{u1, u1} α α _inst_1 _inst_1)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{u1, u1} ((Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) -> α) (Prod.{u1, u1} α α) (Pi.topologicalSpace.{0, u1} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (fun (ᾰ : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => α) (fun (a : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => _inst_1)) (instTopologicalSpaceProd.{u1, u1} α α _inst_1 _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.fin_two_arrow Homeomorph.finTwoArrowₓ'. -/
/-- Homeomorphism between `α² = fin 2 → α` and `α × α`. -/
@[simps (config := { fullyApplied := false })]
def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
-/- warning: homeomorph.image -> Homeomorph.image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (e : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Homeomorph.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) e) s)) (Subtype.topologicalSpace.{u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) _inst_1) (Subtype.topologicalSpace.{u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) e) s)) _inst_2)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (e : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Homeomorph.{u1, u2} (Set.Elem.{u1} α s) (Set.Elem.{u2} β (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) (instTopologicalSpaceSubtype.{u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) _inst_1) (instTopologicalSpaceSubtype.{u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) _inst_2)
-Case conversion may be inaccurate. Consider using '#align homeomorph.image Homeomorph.imageₓ'. -/
/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
@@ -1206,12 +696,6 @@ def Set.univ (α : Type _) [TopologicalSpace α] : (univ : Set α) ≃ₜ α
#align homeomorph.set.univ Homeomorph.Set.univ
-/
-/- warning: homeomorph.set.prod -> Homeomorph.Set.prod is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (s : Set.{u1} α) (t : Set.{u2} β), Homeomorph.{max u1 u2, max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Set.{max u1 u2} (Prod.{u1, u2} α β)) Type.{max u1 u2} (Set.hasCoeToSort.{max u1 u2} (Prod.{u1, u2} α β)) (Set.prod.{u1, u2} α β s t)) (Prod.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) t)) (Subtype.topologicalSpace.{max u1 u2} (Prod.{u1, u2} α β) (fun (x : Prod.{u1, u2} α β) => Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α β) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.hasMem.{max u1 u2} (Prod.{u1, u2} α β)) x (Set.prod.{u1, u2} α β s t)) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2)) (Prod.topologicalSpace.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) t) (Subtype.topologicalSpace.{u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) _inst_1) (Subtype.topologicalSpace.{u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x t) _inst_2))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (s : Set.{u1} α) (t : Set.{u2} β), Homeomorph.{max u1 u2, max u2 u1} (Set.Elem.{max u1 u2} (Prod.{u1, u2} α β) (Set.prod.{u1, u2} α β s t)) (Prod.{u1, u2} (Set.Elem.{u1} α s) (Set.Elem.{u2} β t)) (instTopologicalSpaceSubtype.{max u1 u2} (Prod.{u1, u2} α β) (fun (x : Prod.{u1, u2} α β) => Membership.mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α β) (Set.{max u1 u2} (Prod.{u1, u2} α β)) (Set.instMembershipSet.{max u1 u2} (Prod.{u1, u2} α β)) x (Set.prod.{u1, u2} α β s t)) (instTopologicalSpaceProd.{u1, u2} α β _inst_1 _inst_2)) (instTopologicalSpaceProd.{u1, u2} (Set.Elem.{u1} α s) (Set.Elem.{u2} β t) (instTopologicalSpaceSubtype.{u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) _inst_1) (instTopologicalSpaceSubtype.{u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x t) _inst_2))
-Case conversion may be inaccurate. Consider using '#align homeomorph.set.prod Homeomorph.Set.prodₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- `s ×ˢ t` is homeomorphic to `s × t`. -/
@[simps]
@@ -1228,12 +712,6 @@ section
variable {ι : Type _}
-/- warning: homeomorph.pi_equiv_pi_subtype_prod -> Homeomorph.piEquivPiSubtypeProd is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} (p : ι -> Prop) (β : ι -> Type.{u2}) [_inst_5 : forall (i : ι), TopologicalSpace.{u2} (β i)] [_inst_6 : DecidablePred.{succ u1} ι p], Homeomorph.{max u1 u2, max u1 u2} (forall (i : ι), β i) (Prod.{max u1 u2, max u1 u2} (forall (i : Subtype.{succ u1} ι (fun (x : ι) => p x)), β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeSubtype.{succ u1} ι (fun (x : ι) => p x))))) i)) (forall (i : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))), β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeSubtype.{succ u1} ι (fun (x : ι) => Not (p x)))))) i))) (Pi.topologicalSpace.{u1, u2} ι (fun (i : ι) => β i) (fun (a : ι) => _inst_5 a)) (Prod.topologicalSpace.{max u1 u2, max u1 u2} (forall (i : Subtype.{succ u1} ι (fun (x : ι) => p x)), β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeSubtype.{succ u1} ι (fun (x : ι) => p x))))) i)) (forall (i : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))), β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeSubtype.{succ u1} ι (fun (x : ι) => Not (p x)))))) i)) (Pi.topologicalSpace.{u1, u2} (Subtype.{succ u1} ι (fun (x : ι) => p x)) (fun (i : Subtype.{succ u1} ι (fun (x : ι) => p x)) => β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeSubtype.{succ u1} ι (fun (x : ι) => p x))))) i)) (fun (a : Subtype.{succ u1} ι (fun (x : ι) => p x)) => _inst_5 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => p x)) ι (coeSubtype.{succ u1} ι (fun (x : ι) => p x))))) a))) (Pi.topologicalSpace.{u1, u2} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) (fun (i : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) => β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeSubtype.{succ u1} ι (fun (x : ι) => Not (p x)))))) i)) (fun (a : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) => _inst_5 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) ι (coeSubtype.{succ u1} ι (fun (x : ι) => Not (p x)))))) a))))
-but is expected to have type
- forall {ι : Type.{u1}} (p : ι -> Prop) (β : ι -> Type.{u2}) [_inst_5 : forall (i : ι), TopologicalSpace.{u2} (β i)] [_inst_6 : DecidablePred.{succ u1} ι p], Homeomorph.{max u1 u2, max u1 u2} (forall (i : ι), β i) (Prod.{max u1 u2, max u1 u2} (forall (i : Subtype.{succ u1} ι (fun (x : ι) => p x)), β (Subtype.val.{succ u1} ι (fun (x : ι) => p x) i)) (forall (i : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))), β (Subtype.val.{succ u1} ι (fun (x : ι) => Not (p x)) i))) (Pi.topologicalSpace.{u1, u2} ι (fun (i : ι) => β i) (fun (a : ι) => _inst_5 a)) (instTopologicalSpaceProd.{max u1 u2, max u1 u2} (forall (i : Subtype.{succ u1} ι (fun (x : ι) => p x)), β (Subtype.val.{succ u1} ι (fun (x : ι) => p x) i)) (forall (i : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))), β (Subtype.val.{succ u1} ι (fun (x : ι) => Not (p x)) i)) (Pi.topologicalSpace.{u1, u2} (Subtype.{succ u1} ι (fun (x : ι) => p x)) (fun (i : Subtype.{succ u1} ι (fun (x : ι) => p x)) => β (Subtype.val.{succ u1} ι (fun (x : ι) => p x) i)) (fun (a : Subtype.{succ u1} ι (fun (x : ι) => p x)) => _inst_5 (Subtype.val.{succ u1} ι (fun (x : ι) => p x) a))) (Pi.topologicalSpace.{u1, u2} (Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) (fun (i : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) => β (Subtype.val.{succ u1} ι (fun (x : ι) => Not (p x)) i)) (fun (a : Subtype.{succ u1} ι (fun (x : ι) => Not (p x))) => _inst_5 (Subtype.val.{succ u1} ι (fun (x : ι) => Not (p x)) a))))
-Case conversion may be inaccurate. Consider using '#align homeomorph.pi_equiv_pi_subtype_prod Homeomorph.piEquivPiSubtypeProdₓ'. -/
/-- The topological space `Π i, β i` can be split as a product by separating the indices in ι
depending on whether they satisfy a predicate p or not.-/
@[simps]
@@ -1251,12 +729,6 @@ def piEquivPiSubtypeProd (p : ι → Prop) (β : ι → Type _) [∀ i, Topologi
variable [DecidableEq ι] (i : ι)
-/- warning: homeomorph.pi_split_at -> Homeomorph.piSplitAt is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} [_inst_5 : DecidableEq.{succ u1} ι] (i : ι) (β : ι -> Type.{u2}) [_inst_6 : forall (j : ι), TopologicalSpace.{u2} (β j)], Homeomorph.{max u1 u2, max u1 u2} (forall (j : ι), β j) (Prod.{u2, max u1 u2} (β i) (forall (j : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)), β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeSubtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i))))) j))) (Pi.topologicalSpace.{u1, u2} ι (fun (j : ι) => β j) (fun (a : ι) => _inst_6 a)) (Prod.topologicalSpace.{u2, max u1 u2} (β i) (forall (j : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)), β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeSubtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i))))) j)) (_inst_6 i) (Pi.topologicalSpace.{u1, u2} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) (fun (j : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) => β ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeSubtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i))))) j)) (fun (a : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) => _inst_6 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeBase.{succ u1, succ u1} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) ι (coeSubtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i))))) a))))
-but is expected to have type
- forall {ι : Type.{u1}} [_inst_5 : DecidableEq.{succ u1} ι] (i : ι) (β : ι -> Type.{u2}) [_inst_6 : forall (j : ι), TopologicalSpace.{u2} (β j)], Homeomorph.{max u1 u2, max u1 u2} (forall (j : ι), β j) (Prod.{u2, max u1 u2} (β i) (forall (j : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)), β (Subtype.val.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i) j))) (Pi.topologicalSpace.{u1, u2} ι (fun (j : ι) => β j) (fun (a : ι) => _inst_6 a)) (instTopologicalSpaceProd.{u2, max u1 u2} (β i) (forall (j : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)), β (Subtype.val.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i) j)) (_inst_6 i) (Pi.topologicalSpace.{u1, u2} (Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) (fun (j : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) => β (Subtype.val.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i) j)) (fun (a : Subtype.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i)) => _inst_6 (Subtype.val.{succ u1} ι (fun (j : ι) => Ne.{succ u1} ι j i) a))))
-Case conversion may be inaccurate. Consider using '#align homeomorph.pi_split_at Homeomorph.piSplitAtₓ'. -/
/-- A product of topological spaces can be split as the binary product of one of the spaces and
the product of all the remaining spaces. -/
@[simps]
@@ -1271,12 +743,6 @@ def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
split_ifs; subst h; exacts[continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_split_at Homeomorph.piSplitAt
-/- warning: homeomorph.fun_split_at -> Homeomorph.funSplitAt is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} β] {ι : Type.{u2}} [_inst_5 : DecidableEq.{succ u2} ι] (i : ι), Homeomorph.{max u2 u1, max u2 u1} (ι -> β) (Prod.{u1, max u2 u1} β ((Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) -> β)) (Pi.topologicalSpace.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (a : ι) => _inst_2)) (Prod.topologicalSpace.{u1, max u2 u1} β ((Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) -> β) _inst_2 (Pi.topologicalSpace.{u2, u1} (Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) (fun (ᾰ : Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) => β) (fun (a : Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) => _inst_2)))
-but is expected to have type
- forall {β : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} β] {ι : Type.{u2}} [_inst_5 : DecidableEq.{succ u2} ι] (i : ι), Homeomorph.{max u1 u2, max u1 u2} (ι -> β) (Prod.{u1, max u1 u2} β ((Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) -> β)) (Pi.topologicalSpace.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (a : ι) => _inst_2)) (instTopologicalSpaceProd.{u1, max u1 u2} β ((Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) -> β) _inst_2 (Pi.topologicalSpace.{u2, u1} (Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) (fun (ᾰ : Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) => β) (fun (a : Subtype.{succ u2} ι (fun (j : ι) => Ne.{succ u2} ι j i)) => _inst_2)))
-Case conversion may be inaccurate. Consider using '#align homeomorph.fun_split_at Homeomorph.funSplitAtₓ'. -/
/-- A product of copies of a topological space can be split as the binary product of one copy and
the product of all the remaining copies. -/
@[simps]
@@ -1303,12 +769,6 @@ namespace Continuous
variable [TopologicalSpace α] [TopologicalSpace β]
-/- warning: continuous.continuous_symm_of_equiv_compact_to_t2 -> Continuous.continuous_symm_of_equiv_compact_to_t2 is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : CompactSpace.{u1} α _inst_1] [_inst_4 : T2Space.{u2} β _inst_2] {f : Equiv.{succ u1, succ u2} α β}, (Continuous.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f)) -> (Continuous.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : CompactSpace.{u2} α _inst_1] [_inst_4 : T2Space.{u1} β _inst_2] {f : Equiv.{succ u2, succ u1} α β}, (Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f)) -> (Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β f)))
-Case conversion may be inaccurate. Consider using '#align continuous.continuous_symm_of_equiv_compact_to_t2 Continuous.continuous_symm_of_equiv_compact_to_t2ₓ'. -/
theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f : α ≃ β}
(hf : Continuous f) : Continuous f.symm :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -250,9 +250,7 @@ but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (Homeomorph.{u2, u2} α α _inst_1 _inst_1) (Homeomorph.trans.{u2, u1, u2} α β α _inst_1 _inst_2 _inst_1 h (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (Homeomorph.refl.{u2} α _inst_1)
Case conversion may be inaccurate. Consider using '#align homeomorph.self_trans_symm Homeomorph.self_trans_symmₓ'. -/
@[simp]
-theorem self_trans_symm (h : α ≃ₜ β) : h.trans h.symm = Homeomorph.refl α :=
- by
- ext
+theorem self_trans_symm (h : α ≃ₜ β) : h.trans h.symm = Homeomorph.refl α := by ext;
apply symm_apply_apply
#align homeomorph.self_trans_symm Homeomorph.self_trans_symm
@@ -263,9 +261,7 @@ but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Homeomorph.{u1, u1} β β _inst_2 _inst_2) (Homeomorph.trans.{u1, u2, u1} β α β _inst_2 _inst_1 _inst_2 (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) h) (Homeomorph.refl.{u1} β _inst_2)
Case conversion may be inaccurate. Consider using '#align homeomorph.symm_trans_self Homeomorph.symm_trans_selfₓ'. -/
@[simp]
-theorem symm_trans_self (h : α ≃ₜ β) : h.symm.trans h = Homeomorph.refl β :=
- by
- ext
+theorem symm_trans_self (h : α ≃ₜ β) : h.symm.trans h = Homeomorph.refl β := by ext;
apply apply_symm_apply
#align homeomorph.symm_trans_self Homeomorph.symm_trans_self
@@ -1272,9 +1268,7 @@ def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
continuous_invFun :=
continuous_pi fun j => by
dsimp only [Equiv.piSplitAt]
- split_ifs
- subst h
- exacts[continuous_fst, (continuous_apply _).comp continuous_snd]
+ split_ifs; subst h; exacts[continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_split_at Homeomorph.piSplitAt
/- warning: homeomorph.fun_split_at -> Homeomorph.funSplitAt is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -63,10 +63,7 @@ instance : CoeFun (α ≃ₜ β) fun _ => α → β :=
⟨fun e => e.toEquiv⟩
/- warning: homeomorph.homeomorph_mk_coe -> Homeomorph.homeomorph_mk_coe is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u1) (succ u2)} ((fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (α -> β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
+<too large>
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coeₓ'. -/
@[simp]
theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
@@ -186,10 +183,7 @@ theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.
#align homeomorph.trans_apply Homeomorph.trans_apply
/- warning: homeomorph.homeomorph_mk_coe_symm -> Homeomorph.homeomorph_mk_coe_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u2) (succ u1)} ((fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β a))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (β -> α) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
+<too large>
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe_symm Homeomorph.homeomorph_mk_coe_symmₓ'. -/
@[simp]
theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -1193,8 +1193,8 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (e : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Homeomorph.{u1, u2} (Set.Elem.{u1} α s) (Set.Elem.{u2} β (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) (instTopologicalSpaceSubtype.{u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) _inst_1) (instTopologicalSpaceSubtype.{u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) _inst_2)
Case conversion may be inaccurate. Consider using '#align homeomorph.image Homeomorph.imageₓ'. -/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:301:22: continuitity! not supported at the moment -/
-/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:301:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
+/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:304:22: continuitity! not supported at the moment -/
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
-/
@[simps]
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -66,7 +66,7 @@ instance : CoeFun (α ≃ₜ β) fun _ => α → β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u1) (succ u2)} ((fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) a)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (α -> β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (α -> β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coeₓ'. -/
@[simp]
theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
@@ -103,7 +103,7 @@ initialize_simps_projections Homeomorph (to_equiv_to_fun → apply, to_equiv_inv
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_to_equiv Homeomorph.coe_toEquivₓ'. -/
@[simp]
theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
@@ -114,7 +114,7 @@ theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (β -> α) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_symm_to_equiv Homeomorph.coe_symm_toEquivₓ'. -/
@[simp]
theorem coe_symm_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv.symm = h.symm :=
@@ -189,7 +189,7 @@ theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u2) (succ u1)} ((fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β a))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (β -> α) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (β -> α) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe_symm Homeomorph.homeomorph_mk_coe_symmₓ'. -/
@[simp]
theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
@@ -1319,7 +1319,7 @@ variable [TopologicalSpace α] [TopologicalSpace β]
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : CompactSpace.{u1} α _inst_1] [_inst_4 : T2Space.{u2} β _inst_2] {f : Equiv.{succ u1, succ u2} α β}, (Continuous.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f)) -> (Continuous.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : CompactSpace.{u2} α _inst_1] [_inst_4 : T2Space.{u1} β _inst_2] {f : Equiv.{succ u2, succ u1} α β}, (Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f)) -> (Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β f)))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : CompactSpace.{u2} α _inst_1] [_inst_4 : T2Space.{u1} β _inst_2] {f : Equiv.{succ u2, succ u1} α β}, (Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f)) -> (Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β f)))
Case conversion may be inaccurate. Consider using '#align continuous.continuous_symm_of_equiv_compact_to_t2 Continuous.continuous_symm_of_equiv_compact_to_t2ₓ'. -/
theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f : α ≃ β}
(hf : Continuous f) : Continuous f.symm :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/172bf2812857f5e56938cc148b7a539f52f84ca9
@@ -1018,19 +1018,19 @@ def prodAssoc : (α × β) × γ ≃ₜ α × β × γ
toEquiv := Equiv.prodAssoc α β γ
#align homeomorph.prod_assoc Homeomorph.prodAssoc
-/- warning: homeomorph.prod_punit -> Homeomorph.prodPunit is a dubious translation:
+/- warning: homeomorph.prod_punit -> Homeomorph.prodPUnit is a dubious translation:
lean 3 declaration is
forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{max u1 u2, u1} (Prod.{u1, u2} α PUnit.{succ u2}) α (Prod.topologicalSpace.{u1, u2} α PUnit.{succ u2} _inst_1 PUnit.topologicalSpace.{u2}) _inst_1
but is expected to have type
forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Homeomorph.{max u2 u1, u1} (Prod.{u1, u2} α PUnit.{succ u2}) α (instTopologicalSpaceProd.{u1, u2} α PUnit.{succ u2} _inst_1 instTopologicalSpacePUnit.{u2}) _inst_1
-Case conversion may be inaccurate. Consider using '#align homeomorph.prod_punit Homeomorph.prodPunitₓ'. -/
+Case conversion may be inaccurate. Consider using '#align homeomorph.prod_punit Homeomorph.prodPUnitₓ'. -/
/-- `α × {*}` is homeomorphic to `α`. -/
@[simps (config := { fullyApplied := false }) apply]
-def prodPunit : α × PUnit ≃ₜ α where
+def prodPUnit : α × PUnit ≃ₜ α where
toEquiv := Equiv.prodPUnit α
continuous_toFun := continuous_fst
continuous_invFun := continuous_id.prod_mk continuous_const
-#align homeomorph.prod_punit Homeomorph.prodPunit
+#align homeomorph.prod_punit Homeomorph.prodPUnit
/- warning: homeomorph.punit_prod -> Homeomorph.punitProd is a dubious translation:
lean 3 declaration is
@@ -1040,7 +1040,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align homeomorph.punit_prod Homeomorph.punitProdₓ'. -/
/-- `{*} × α` is homeomorphic to `α`. -/
def punitProd : PUnit × α ≃ₜ α :=
- (prodComm _ _).trans (prodPunit _)
+ (prodComm _ _).trans (prodPUnit _)
#align homeomorph.punit_prod Homeomorph.punitProd
/- warning: homeomorph.coe_punit_prod -> Homeomorph.coe_punitProd is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -794,7 +794,7 @@ def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsO
continuous_invFun := by
rw [continuous_def]
intro s hs
- convert ← h₂ s hs using 1
+ convert← h₂ s hs using 1
apply e.image_eq_preimage
toEquiv := e
#align homeomorph.homeomorph_of_continuous_open Homeomorph.homeomorphOfContinuousOpen
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -66,7 +66,7 @@ instance : CoeFun (α ≃ₜ β) fun _ => α → β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u1) (succ u2)} ((fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) a)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (α -> β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coeₓ'. -/
@[simp]
theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
@@ -103,7 +103,7 @@ initialize_simps_projections Homeomorph (to_equiv_to_fun → apply, to_equiv_inv
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_to_equiv Homeomorph.coe_toEquivₓ'. -/
@[simp]
theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
@@ -114,7 +114,7 @@ theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (β -> α) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_symm_to_equiv Homeomorph.coe_symm_toEquivₓ'. -/
@[simp]
theorem coe_symm_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv.symm = h.symm :=
@@ -135,7 +135,7 @@ theorem toEquiv_injective : Function.Injective (toEquiv : α ≃ₜ β → α
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {h : Homeomorph.{u1, u2} α β _inst_1 _inst_2} {h' : Homeomorph.{u1, u2} α β _inst_1 _inst_2}, (forall (x : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h' x)) -> (Eq.{max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) h h')
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] {h : Homeomorph.{u2, u1} α β _inst_1 _inst_2} {h' : Homeomorph.{u2, u1} α β _inst_1 _inst_2}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h' x)) -> (Eq.{max (succ u2) (succ u1)} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) h h')
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] {h : Homeomorph.{u2, u1} α β _inst_1 _inst_2} {h' : Homeomorph.{u2, u1} α β _inst_1 _inst_2}, (forall (x : α), Eq.{succ u1} β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h' x)) -> (Eq.{max (succ u2) (succ u1)} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) h h')
Case conversion may be inaccurate. Consider using '#align homeomorph.ext Homeomorph.extₓ'. -/
@[ext]
theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
@@ -178,7 +178,7 @@ protected def trans (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) : α ≃ₜ γ
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h₁ : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u3} β γ _inst_2 _inst_3) (a : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Homeomorph.{u1, u3} α γ _inst_1 _inst_3) (fun (_x : Homeomorph.{u1, u3} α γ _inst_1 _inst_3) => α -> γ) (Homeomorph.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3) (Homeomorph.trans.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 h₁ h₂) a) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Homeomorph.{u2, u3} β γ _inst_2 _inst_3) (fun (_x : Homeomorph.{u2, u3} β γ _inst_2 _inst_3) => β -> γ) (Homeomorph.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3) h₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h₁ a))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h₁ : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u1} β γ _inst_2 _inst_3) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => γ) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => γ) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α γ (EquivLike.toEmbeddingLike.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α γ (Homeomorph.instEquivLikeHomeomorph.{u3, u1} α γ _inst_1 _inst_3))) (Homeomorph.trans.{u3, u2, u1} α β γ _inst_1 _inst_2 _inst_3 h₁ h₂) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => γ) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β γ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β γ (Homeomorph.instEquivLikeHomeomorph.{u2, u1} β γ _inst_2 _inst_3))) h₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h₁ a))
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h₁ : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u1} β γ _inst_2 _inst_3) (a : α), Eq.{succ u1} γ (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α (fun (_x : α) => γ) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α γ (EquivLike.toEmbeddingLike.{max (succ u3) (succ u1), succ u3, succ u1} (Homeomorph.{u3, u1} α γ _inst_1 _inst_3) α γ (Homeomorph.instEquivLikeHomeomorph.{u3, u1} α γ _inst_1 _inst_3))) (Homeomorph.trans.{u3, u2, u1} α β γ _inst_1 _inst_2 _inst_3 h₁ h₂) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β (fun (_x : β) => γ) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β γ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} β γ _inst_2 _inst_3) β γ (Homeomorph.instEquivLikeHomeomorph.{u2, u1} β γ _inst_2 _inst_3))) h₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h₁ a))
Case conversion may be inaccurate. Consider using '#align homeomorph.trans_apply Homeomorph.trans_applyₓ'. -/
@[simp]
theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.trans h₂ a = h₂ (h₁ a) :=
@@ -189,7 +189,7 @@ theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u2) (succ u1)} ((fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β a))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (β -> α) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe_symm Homeomorph.homeomorph_mk_coe_symmₓ'. -/
@[simp]
theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
@@ -208,7 +208,7 @@ theorem refl_symm : (Homeomorph.refl α).symm = Homeomorph.refl α :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Continuous.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.continuous Homeomorph.continuousₓ'. -/
@[continuity]
protected theorem continuous (h : α ≃ₜ β) : Continuous h :=
@@ -219,7 +219,7 @@ protected theorem continuous (h : α ≃ₜ β) : Continuous h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Continuous.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
Case conversion may be inaccurate. Consider using '#align homeomorph.continuous_symm Homeomorph.continuous_symmₓ'. -/
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
@[continuity]
@@ -231,7 +231,7 @@ protected theorem continuous_symm (h : α ≃ₜ β) : Continuous h.symm :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : β), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h) x)) x
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (a : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) x)) x
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : β), Eq.{succ u1} β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) x)) x
Case conversion may be inaccurate. Consider using '#align homeomorph.apply_symm_apply Homeomorph.apply_symm_applyₓ'. -/
@[simp]
theorem apply_symm_apply (h : α ≃ₜ β) (x : β) : h (h.symm x) = x :=
@@ -242,7 +242,7 @@ theorem apply_symm_apply (h : α ≃ₜ β) (x : β) : h (h.symm x) = x :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x)) x
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (a : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x)) x
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x)) x
Case conversion may be inaccurate. Consider using '#align homeomorph.symm_apply_apply Homeomorph.symm_apply_applyₓ'. -/
@[simp]
theorem symm_apply_apply (h : α ≃ₜ β) (x : α) : h.symm (h x) = x :=
@@ -279,7 +279,7 @@ theorem symm_trans_self (h : α ≃ₜ β) : h.symm.trans h = Homeomorph.refl β
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Function.Bijective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Bijective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Bijective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.bijective Homeomorph.bijectiveₓ'. -/
protected theorem bijective (h : α ≃ₜ β) : Function.Bijective h :=
h.toEquiv.Bijective
@@ -289,7 +289,7 @@ protected theorem bijective (h : α ≃ₜ β) : Function.Bijective h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Function.Injective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Injective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Injective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.injective Homeomorph.injectiveₓ'. -/
protected theorem injective (h : α ≃ₜ β) : Function.Injective h :=
h.toEquiv.Injective
@@ -299,7 +299,7 @@ protected theorem injective (h : α ≃ₜ β) : Function.Injective h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Function.Surjective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Surjective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Function.Surjective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.surjective Homeomorph.surjectiveₓ'. -/
protected theorem surjective (h : α ≃ₜ β) : Function.Surjective h :=
h.toEquiv.Surjective
@@ -309,7 +309,7 @@ protected theorem surjective (h : α ≃ₜ β) : Function.Surjective h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (f : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (g : β -> α), (Function.RightInverse.{succ u1, succ u2} α β g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)) -> (Homeomorph.{u1, u2} α β _inst_1 _inst_2)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (f : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (g : β -> α), (Function.RightInverse.{succ u1, succ u2} α β g (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) f)) -> (Homeomorph.{u1, u2} α β _inst_1 _inst_2)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (f : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (g : β -> α), (Function.RightInverse.{succ u1, succ u2} α β g (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) f)) -> (Homeomorph.{u1, u2} α β _inst_1 _inst_2)
Case conversion may be inaccurate. Consider using '#align homeomorph.change_inv Homeomorph.changeInvₓ'. -/
/-- Change the homeomorphism `f` to make the inverse function definitionally equal to `g`. -/
def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f) : α ≃ₜ β :=
@@ -331,7 +331,7 @@ def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (α -> α) (Function.comp.{succ u1, succ u2, succ u1} α β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) (id.{succ u1} α)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (α -> α) (Function.comp.{succ u2, succ u1, succ u2} α β α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)) (id.{succ u2} α)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (α -> α) (Function.comp.{succ u2, succ u1, succ u2} α β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)) (id.{succ u2} α)
Case conversion may be inaccurate. Consider using '#align homeomorph.symm_comp_self Homeomorph.symm_comp_selfₓ'. -/
@[simp]
theorem symm_comp_self (h : α ≃ₜ β) : ⇑h.symm ∘ ⇑h = id :=
@@ -342,7 +342,7 @@ theorem symm_comp_self (h : α ≃ₜ β) : ⇑h.symm ∘ ⇑h = id :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (β -> β) (Function.comp.{succ u2, succ u1, succ u2} β α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))) (id.{succ u2} β)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (β -> β) (Function.comp.{succ u1, succ u2, succ u1} β α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (id.{succ u1} β)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (β -> β) (Function.comp.{succ u1, succ u2, succ u1} β α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (id.{succ u1} β)
Case conversion may be inaccurate. Consider using '#align homeomorph.self_comp_symm Homeomorph.self_comp_symmₓ'. -/
@[simp]
theorem self_comp_symm (h : α ≃ₜ β) : ⇑h ∘ ⇑h.symm = id :=
@@ -353,7 +353,7 @@ theorem self_comp_symm (h : α ≃ₜ β) : ⇑h ∘ ⇑h.symm = id :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (Set.{u2} β) (Set.range.{u2, succ u1} β α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) (Set.univ.{u2} β)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Set.{u1} β) (Set.range.{u1, succ u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)) (Set.univ.{u1} β)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Set.{u1} β) (Set.range.{u1, succ u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)) (Set.univ.{u1} β)
Case conversion may be inaccurate. Consider using '#align homeomorph.range_coe Homeomorph.range_coeₓ'. -/
@[simp]
theorem range_coe (h : α ≃ₜ β) : range h = univ :=
@@ -364,7 +364,7 @@ theorem range_coe (h : α ≃ₜ β) : range h = univ :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u2} β) -> (Set.{u1} α)) (Set.image.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u1} β) -> (Set.{u2} α)) (Set.image.{u1, u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u1} β) -> (Set.{u2} α)) (Set.image.{u1, u2} β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h))
Case conversion may be inaccurate. Consider using '#align homeomorph.image_symm Homeomorph.image_symmₓ'. -/
theorem image_symm (h : α ≃ₜ β) : image h.symm = preimage h :=
funext h.symm.toEquiv.image_eq_preimage
@@ -374,7 +374,7 @@ theorem image_symm (h : α ≃ₜ β) : image h.symm = preimage h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} ((Set.{u1} α) -> (Set.{u2} β)) (Set.preimage.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u2} α) -> (Set.{u1} β)) (Set.preimage.{u1, u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u2} α) -> (Set.{u1} β)) (Set.preimage.{u1, u2} β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h))
Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_symm Homeomorph.preimage_symmₓ'. -/
theorem preimage_symm (h : α ≃ₜ β) : preimage h.symm = image h :=
(funext h.toEquiv.image_eq_preimage).symm
@@ -384,7 +384,7 @@ theorem preimage_symm (h : α ≃ₜ β) : preimage h.symm = image h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) s
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
Case conversion may be inaccurate. Consider using '#align homeomorph.image_preimage Homeomorph.image_preimageₓ'. -/
@[simp]
theorem image_preimage (h : α ≃ₜ β) (s : Set β) : h '' (h ⁻¹' s) = s :=
@@ -395,7 +395,7 @@ theorem image_preimage (h : α ≃ₜ β) (s : Set β) : h '' (h ⁻¹' s) = s :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) s
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_image Homeomorph.preimage_imageₓ'. -/
@[simp]
theorem preimage_image (h : α ≃ₜ β) (s : Set α) : h ⁻¹' (h '' s) = s :=
@@ -406,7 +406,7 @@ theorem preimage_image (h : α ≃ₜ β) (s : Set α) : h ⁻¹' (h '' s) = s :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Inducing.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Inducing.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Inducing.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.inducing Homeomorph.inducingₓ'. -/
protected theorem inducing (h : α ≃ₜ β) : Inducing h :=
inducing_of_inducing_compose h.Continuous h.symm.Continuous <| by
@@ -417,7 +417,7 @@ protected theorem inducing (h : α ≃ₜ β) : Inducing h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (TopologicalSpace.{u1} α) (TopologicalSpace.induced.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) _inst_2) _inst_1
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (TopologicalSpace.{u2} α) (TopologicalSpace.induced.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) _inst_2) _inst_1
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (TopologicalSpace.{u2} α) (TopologicalSpace.induced.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) _inst_2) _inst_1
Case conversion may be inaccurate. Consider using '#align homeomorph.induced_eq Homeomorph.induced_eqₓ'. -/
theorem induced_eq (h : α ≃ₜ β) : TopologicalSpace.induced h ‹_› = ‹_› :=
h.Inducing.1.symm
@@ -427,7 +427,7 @@ theorem induced_eq (h : α ≃ₜ β) : TopologicalSpace.induced h ‹_› = ‹
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), QuotientMap.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), QuotientMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), QuotientMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.quotient_map Homeomorph.quotientMapₓ'. -/
protected theorem quotientMap (h : α ≃ₜ β) : QuotientMap h :=
QuotientMap.of_quotientMap_compose h.symm.Continuous h.Continuous <| by
@@ -438,7 +438,7 @@ protected theorem quotientMap (h : α ≃ₜ β) : QuotientMap h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (TopologicalSpace.{u2} β) (TopologicalSpace.coinduced.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) _inst_1) _inst_2
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (TopologicalSpace.{u1} β) (TopologicalSpace.coinduced.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) _inst_1) _inst_2
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (TopologicalSpace.{u1} β) (TopologicalSpace.coinduced.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) _inst_1) _inst_2
Case conversion may be inaccurate. Consider using '#align homeomorph.coinduced_eq Homeomorph.coinduced_eqₓ'. -/
theorem coinduced_eq (h : α ≃ₜ β) : TopologicalSpace.coinduced h ‹_› = ‹_› :=
h.QuotientMap.2.symm
@@ -448,7 +448,7 @@ theorem coinduced_eq (h : α ≃ₜ β) : TopologicalSpace.coinduced h ‹_› =
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Embedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Embedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Embedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.embedding Homeomorph.embeddingₓ'. -/
protected theorem embedding (h : α ≃ₜ β) : Embedding h :=
⟨h.Inducing, h.Injective⟩
@@ -475,7 +475,7 @@ protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopol
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u1} α} (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Iff (IsCompact.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsCompact.{u1} α _inst_1 s)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] {s : Set.{u2} α} (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Iff (IsCompact.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsCompact.{u2} α _inst_1 s)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] {s : Set.{u2} α} (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Iff (IsCompact.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsCompact.{u2} α _inst_1 s)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_compact_image Homeomorph.isCompact_imageₓ'. -/
theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔ IsCompact s :=
h.Embedding.isCompact_iff_isCompact_image.symm
@@ -485,7 +485,7 @@ theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u2} β} (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Iff (IsCompact.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsCompact.{u2} β _inst_2 s)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u2} β} (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Iff (IsCompact.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) h) s)) (IsCompact.{u2} β _inst_2 s)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u2} β} (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Iff (IsCompact.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) h) s)) (IsCompact.{u2} β _inst_2 s)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimageₓ'. -/
theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹' s) ↔ IsCompact s := by
rw [← image_symm] <;> exact h.symm.is_compact_image
@@ -495,7 +495,7 @@ theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹'
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (Filter.{u1} α) (Filter.comap.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Filter.cocompact.{u2} β _inst_2)) (Filter.cocompact.{u1} α _inst_1)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (Filter.{u2} α) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Filter.cocompact.{u1} β _inst_2)) (Filter.cocompact.{u2} α _inst_1)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (Filter.{u2} α) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Filter.cocompact.{u1} β _inst_2)) (Filter.cocompact.{u2} α _inst_1)
Case conversion may be inaccurate. Consider using '#align homeomorph.comap_cocompact Homeomorph.comap_cocompactₓ'. -/
@[simp]
theorem comap_cocompact (h : α ≃ₜ β) : comap h (cocompact β) = cocompact α :=
@@ -508,7 +508,7 @@ theorem comap_cocompact (h : α ≃ₜ β) : comap h (cocompact β) = cocompact
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (Filter.{u2} β) (Filter.map.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Filter.cocompact.{u1} α _inst_1)) (Filter.cocompact.{u2} β _inst_2)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Filter.{u1} β) (Filter.map.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Filter.cocompact.{u2} α _inst_1)) (Filter.cocompact.{u1} β _inst_2)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Filter.{u1} β) (Filter.map.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (Filter.cocompact.{u2} α _inst_1)) (Filter.cocompact.{u1} β _inst_2)
Case conversion may be inaccurate. Consider using '#align homeomorph.map_cocompact Homeomorph.map_cocompactₓ'. -/
@[simp]
theorem map_cocompact (h : α ≃ₜ β) : map h (cocompact α) = cocompact β := by
@@ -573,7 +573,7 @@ protected theorem t3Space [T3Space α] (h : α ≃ₜ β) : T3Space β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), DenseEmbedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), DenseEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), DenseEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.dense_embedding Homeomorph.denseEmbeddingₓ'. -/
protected theorem denseEmbedding (h : α ≃ₜ β) : DenseEmbedding h :=
{ h.Embedding with dense := h.Surjective.DenseRange }
@@ -583,7 +583,7 @@ protected theorem denseEmbedding (h : α ≃ₜ β) : DenseEmbedding h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u2} β}, Iff (IsOpen.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsOpen.{u2} β _inst_2 s)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u1} β}, Iff (IsOpen.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsOpen.{u1} β _inst_2 s)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u1} β}, Iff (IsOpen.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsOpen.{u1} β _inst_2 s)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_open_preimage Homeomorph.isOpen_preimageₓ'. -/
@[simp]
theorem isOpen_preimage (h : α ≃ₜ β) {s : Set β} : IsOpen (h ⁻¹' s) ↔ IsOpen s :=
@@ -594,7 +594,7 @@ theorem isOpen_preimage (h : α ≃ₜ β) {s : Set β} : IsOpen (h ⁻¹' s)
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u1} α}, Iff (IsOpen.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsOpen.{u1} α _inst_1 s)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u2} α}, Iff (IsOpen.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsOpen.{u2} α _inst_1 s)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u2} α}, Iff (IsOpen.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsOpen.{u2} α _inst_1 s)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_open_image Homeomorph.isOpen_imageₓ'. -/
@[simp]
theorem isOpen_image (h : α ≃ₜ β) {s : Set α} : IsOpen (h '' s) ↔ IsOpen s := by
@@ -605,7 +605,7 @@ theorem isOpen_image (h : α ≃ₜ β) {s : Set α} : IsOpen (h '' s) ↔ IsOpe
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), IsOpenMap.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), IsOpenMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), IsOpenMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_open_map Homeomorph.isOpenMapₓ'. -/
protected theorem isOpenMap (h : α ≃ₜ β) : IsOpenMap h := fun s => h.isOpen_image.2
#align homeomorph.is_open_map Homeomorph.isOpenMap
@@ -614,7 +614,7 @@ protected theorem isOpenMap (h : α ≃ₜ β) : IsOpenMap h := fun s => h.isOpe
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u2} β}, Iff (IsClosed.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsClosed.{u2} β _inst_2 s)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u1} β}, Iff (IsClosed.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsClosed.{u1} β _inst_2 s)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u1} β}, Iff (IsClosed.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsClosed.{u1} β _inst_2 s)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_closed_preimage Homeomorph.isClosed_preimageₓ'. -/
@[simp]
theorem isClosed_preimage (h : α ≃ₜ β) {s : Set β} : IsClosed (h ⁻¹' s) ↔ IsClosed s := by
@@ -625,7 +625,7 @@ theorem isClosed_preimage (h : α ≃ₜ β) {s : Set β} : IsClosed (h ⁻¹' s
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {s : Set.{u1} α}, Iff (IsClosed.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) (IsClosed.{u1} α _inst_1 s)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u2} α}, Iff (IsClosed.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsClosed.{u2} α _inst_1 s)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) {s : Set.{u2} α}, Iff (IsClosed.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s)) (IsClosed.{u2} α _inst_1 s)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_closed_image Homeomorph.isClosed_imageₓ'. -/
@[simp]
theorem isClosed_image (h : α ≃ₜ β) {s : Set α} : IsClosed (h '' s) ↔ IsClosed s := by
@@ -636,7 +636,7 @@ theorem isClosed_image (h : α ≃ₜ β) {s : Set α} : IsClosed (h '' s) ↔ I
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), IsClosedMap.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), IsClosedMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), IsClosedMap.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.is_closed_map Homeomorph.isClosedMapₓ'. -/
protected theorem isClosedMap (h : α ≃ₜ β) : IsClosedMap h := fun s => h.isClosed_image.2
#align homeomorph.is_closed_map Homeomorph.isClosedMap
@@ -645,7 +645,7 @@ protected theorem isClosedMap (h : α ≃ₜ β) : IsClosedMap h := fun s => h.i
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), OpenEmbedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), OpenEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), OpenEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.open_embedding Homeomorph.openEmbeddingₓ'. -/
protected theorem openEmbedding (h : α ≃ₜ β) : OpenEmbedding h :=
openEmbedding_of_embedding_open h.Embedding h.IsOpenMap
@@ -655,7 +655,7 @@ protected theorem openEmbedding (h : α ≃ₜ β) : OpenEmbedding h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), ClosedEmbedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), ClosedEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), ClosedEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.closed_embedding Homeomorph.closedEmbeddingₓ'. -/
protected theorem closedEmbedding (h : α ≃ₜ β) : ClosedEmbedding h :=
closedEmbedding_of_embedding_closed h.Embedding h.IsClosedMap
@@ -675,7 +675,7 @@ protected theorem normalSpace [NormalSpace α] (h : α ≃ₜ β) : NormalSpace
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (closure.{u2} β _inst_2 s)) (closure.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (closure.{u1} β _inst_2 s)) (closure.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (closure.{u1} β _inst_2 s)) (closure.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_closure Homeomorph.preimage_closureₓ'. -/
theorem preimage_closure (h : α ≃ₜ β) (s : Set β) : h ⁻¹' closure s = closure (h ⁻¹' s) :=
h.IsOpenMap.preimage_closure_eq_closure_preimage h.Continuous _
@@ -685,7 +685,7 @@ theorem preimage_closure (h : α ≃ₜ β) (s : Set β) : h ⁻¹' closure s =
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (closure.{u1} α _inst_1 s)) (closure.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (closure.{u2} α _inst_1 s)) (closure.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (closure.{u2} α _inst_1 s)) (closure.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
Case conversion may be inaccurate. Consider using '#align homeomorph.image_closure Homeomorph.image_closureₓ'. -/
theorem image_closure (h : α ≃ₜ β) (s : Set α) : h '' closure s = closure (h '' s) := by
rw [← preimage_symm, preimage_closure]
@@ -695,7 +695,7 @@ theorem image_closure (h : α ≃ₜ β) (s : Set α) : h '' closure s = closure
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (interior.{u2} β _inst_2 s)) (interior.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (interior.{u1} β _inst_2 s)) (interior.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (interior.{u1} β _inst_2 s)) (interior.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_interior Homeomorph.preimage_interiorₓ'. -/
theorem preimage_interior (h : α ≃ₜ β) (s : Set β) : h ⁻¹' interior s = interior (h ⁻¹' s) :=
h.IsOpenMap.preimage_interior_eq_interior_preimage h.Continuous _
@@ -705,7 +705,7 @@ theorem preimage_interior (h : α ≃ₜ β) (s : Set β) : h ⁻¹' interior s
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (interior.{u1} α _inst_1 s)) (interior.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (interior.{u2} α _inst_1 s)) (interior.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (interior.{u2} α _inst_1 s)) (interior.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
Case conversion may be inaccurate. Consider using '#align homeomorph.image_interior Homeomorph.image_interiorₓ'. -/
theorem image_interior (h : α ≃ₜ β) (s : Set α) : h '' interior s = interior (h '' s) := by
rw [← preimage_symm, preimage_interior]
@@ -715,7 +715,7 @@ theorem image_interior (h : α ≃ₜ β) (s : Set α) : h '' interior s = inter
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (frontier.{u2} β _inst_2 s)) (frontier.{u1} α _inst_1 (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (frontier.{u1} β _inst_2 s)) (frontier.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (frontier.{u1} β _inst_2 s)) (frontier.{u2} α _inst_1 (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
Case conversion may be inaccurate. Consider using '#align homeomorph.preimage_frontier Homeomorph.preimage_frontierₓ'. -/
theorem preimage_frontier (h : α ≃ₜ β) (s : Set β) : h ⁻¹' frontier s = frontier (h ⁻¹' s) :=
h.IsOpenMap.preimage_frontier_eq_frontier_preimage h.Continuous _
@@ -725,7 +725,7 @@ theorem preimage_frontier (h : α ≃ₜ β) (s : Set β) : h ⁻¹' frontier s
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (frontier.{u1} α _inst_1 s)) (frontier.{u2} β _inst_2 (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (frontier.{u2} α _inst_1 s)) (frontier.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (frontier.{u2} α _inst_1 s)) (frontier.{u1} β _inst_2 (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) s))
Case conversion may be inaccurate. Consider using '#align homeomorph.image_frontier Homeomorph.image_frontierₓ'. -/
theorem image_frontier (h : α ≃ₜ β) (s : Set α) : h '' frontier s = frontier (h '' s) := by
rw [← preimage_symm, preimage_frontier]
@@ -735,7 +735,7 @@ theorem image_frontier (h : α ≃ₜ β) (s : Set α) : h '' frontier s = front
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {M : Type.{u3}} [_inst_5 : One.{u3} M] {f : β -> M}, (HasCompactMulSupport.{u2, u3} β M _inst_2 _inst_5 f) -> (forall (φ : Homeomorph.{u1, u2} α β _inst_1 _inst_2), HasCompactMulSupport.{u1, u3} α M _inst_1 _inst_5 (Function.comp.{succ u1, succ u2, succ u3} α β M f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) φ)))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {M : Type.{u3}} [_inst_5 : One.{u3} M] {f : β -> M}, (HasCompactMulSupport.{u2, u3} β M _inst_2 _inst_5 f) -> (forall (φ : Homeomorph.{u1, u2} α β _inst_1 _inst_2), HasCompactMulSupport.{u1, u3} α M _inst_1 _inst_5 (Function.comp.{succ u1, succ u2, succ u3} α β M f (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) φ)))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {M : Type.{u3}} [_inst_5 : One.{u3} M] {f : β -> M}, (HasCompactMulSupport.{u2, u3} β M _inst_2 _inst_5 f) -> (forall (φ : Homeomorph.{u1, u2} α β _inst_1 _inst_2), HasCompactMulSupport.{u1, u3} α M _inst_1 _inst_5 (Function.comp.{succ u1, succ u2, succ u3} α β M f (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) φ)))
Case conversion may be inaccurate. Consider using '#align has_compact_mul_support.comp_homeomorph HasCompactMulSupport.comp_homeomorphₓ'. -/
@[to_additive]
theorem HasCompactMulSupport.comp_homeomorph {M} [One M] {f : β → M} (hf : HasCompactMulSupport f)
@@ -748,7 +748,7 @@ theorem HasCompactMulSupport.comp_homeomorph {M} [One M] {f : β → M} (hf : Ha
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} β) (Filter.map.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (nhds.{u1} α _inst_1 x)) (nhds.{u2} β _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} (Filter.{u1} β) (Filter.map.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u2} α _inst_1 x)) (nhds.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) x) _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} (Filter.{u1} β) (Filter.map.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u2} α _inst_1 x)) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x))
Case conversion may be inaccurate. Consider using '#align homeomorph.map_nhds_eq Homeomorph.map_nhds_eqₓ'. -/
@[simp]
theorem map_nhds_eq (h : α ≃ₜ β) (x : α) : map h (𝓝 x) = 𝓝 (h x) :=
@@ -759,7 +759,7 @@ theorem map_nhds_eq (h : α ≃ₜ β) (x : α) : map h (𝓝 x) = 𝓝 (h x) :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} (Filter.{u1} α) (Filter.map.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h)) (nhds.{u2} β _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x))) (nhds.{u1} α _inst_1 x)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} α) (Filter.map.{u1, u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x))) (nhds.{u2} α _inst_1 x)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} α) (Filter.map.{u1, u2} β α (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x))) (nhds.{u2} α _inst_1 x)
Case conversion may be inaccurate. Consider using '#align homeomorph.symm_map_nhds_eq Homeomorph.symm_map_nhds_eqₓ'. -/
theorem symm_map_nhds_eq (h : α ≃ₜ β) (x : α) : map h.symm (𝓝 (h x)) = 𝓝 x := by
rw [h.symm.map_nhds_eq, h.symm_apply_apply]
@@ -769,7 +769,7 @@ theorem symm_map_nhds_eq (h : α ≃ₜ β) (x : α) : map h.symm (𝓝 (h x)) =
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} (Filter.{u1} α) (nhds.{u1} α _inst_1 x) (Filter.comap.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (nhds.{u2} β _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} α) (nhds.{u2} α _inst_1 x) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x)))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} (Filter.{u2} α) (nhds.{u2} α _inst_1 x) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u1} β _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h x)))
Case conversion may be inaccurate. Consider using '#align homeomorph.nhds_eq_comap Homeomorph.nhds_eq_comapₓ'. -/
theorem nhds_eq_comap (h : α ≃ₜ β) (x : α) : 𝓝 x = comap h (𝓝 (h x)) :=
h.Embedding.to_inducing.nhds_eq_comap x
@@ -779,7 +779,7 @@ theorem nhds_eq_comap (h : α ≃ₜ β) (x : α) : 𝓝 x = comap h (𝓝 (h x)
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (y : β), Eq.{succ u1} (Filter.{u1} α) (Filter.comap.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (nhds.{u2} β _inst_2 y)) (nhds.{u1} α _inst_1 (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h) y))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (y : β), Eq.{succ u2} (Filter.{u2} α) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u1} β _inst_2 y)) (nhds.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) y) _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) y))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2) (y : β), Eq.{succ u2} (Filter.{u2} α) (Filter.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h) (nhds.{u1} β _inst_2 y)) (nhds.{u2} α _inst_1 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => α) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h) y))
Case conversion may be inaccurate. Consider using '#align homeomorph.comap_nhds_eq Homeomorph.comap_nhds_eqₓ'. -/
@[simp]
theorem comap_nhds_eq (h : α ≃ₜ β) (y : β) : comap h (𝓝 y) = 𝓝 (h.symm y) := by
@@ -804,7 +804,7 @@ def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsO
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u3} γ), Iff (ContinuousOn.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f) s) (ContinuousOn.{u3, u1} γ α _inst_3 _inst_1 f s)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u1} γ), Iff (ContinuousOn.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) s) (ContinuousOn.{u1, u3} γ α _inst_3 _inst_1 f s)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u1} γ), Iff (ContinuousOn.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) s) (ContinuousOn.{u1, u3} γ α _inst_3 _inst_1 f s)
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_on_iff Homeomorph.comp_continuousOn_iffₓ'. -/
@[simp]
theorem comp_continuousOn_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) :
@@ -816,7 +816,7 @@ theorem comp_continuousOn_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (Continuous.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f)) (Continuous.{u3, u1} γ α _inst_3 _inst_1 f)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (Continuous.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f)) (Continuous.{u1, u3} γ α _inst_3 _inst_1 f)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (Continuous.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f)) (Continuous.{u1, u3} γ α _inst_3 _inst_1 f)
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_iff Homeomorph.comp_continuous_iffₓ'. -/
@[simp]
theorem comp_continuous_iff (h : α ≃ₜ β) {f : γ → α} : Continuous (h ∘ f) ↔ Continuous f :=
@@ -827,7 +827,7 @@ theorem comp_continuous_iff (h : α ≃ₜ β) {f : γ → α} : Continuous (h
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (Continuous.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))) (Continuous.{u2, u3} β γ _inst_2 _inst_3 f)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (Continuous.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h))) (Continuous.{u2, u1} β γ _inst_2 _inst_3 f)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (Continuous.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h))) (Continuous.{u2, u1} β γ _inst_2 _inst_3 f)
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_iff' Homeomorph.comp_continuous_iff'ₓ'. -/
@[simp]
theorem comp_continuous_iff' (h : α ≃ₜ β) {f : β → γ} : Continuous (f ∘ h) ↔ Continuous f :=
@@ -838,7 +838,7 @@ theorem comp_continuous_iff' (h : α ≃ₜ β) {f : β → γ} : Continuous (f
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : γ -> α) (x : γ), Iff (ContinuousAt.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f) x) (ContinuousAt.{u3, u1} γ α _inst_3 _inst_1 f x)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (x : γ), Iff (ContinuousAt.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) x) (ContinuousAt.{u1, u3} γ α _inst_3 _inst_1 f x)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (x : γ), Iff (ContinuousAt.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) x) (ContinuousAt.{u1, u3} γ α _inst_3 _inst_1 f x)
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_at_iff Homeomorph.comp_continuousAt_iffₓ'. -/
theorem comp_continuousAt_iff (h : α ≃ₜ β) (f : γ → α) (x : γ) :
ContinuousAt (h ∘ f) x ↔ ContinuousAt f x :=
@@ -849,7 +849,7 @@ theorem comp_continuousAt_iff (h : α ≃ₜ β) (f : γ → α) (x : γ) :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : β -> γ) (x : α), Iff (ContinuousAt.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) x) (ContinuousAt.{u2, u3} β γ _inst_2 _inst_3 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x))
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : β -> γ) (x : α), Iff (ContinuousAt.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h)) x) (ContinuousAt.{u2, u1} β γ _inst_2 _inst_3 f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h x))
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : β -> γ) (x : α), Iff (ContinuousAt.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h)) x) (ContinuousAt.{u2, u1} β γ _inst_2 _inst_3 f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h x))
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_at_iff' Homeomorph.comp_continuousAt_iff'ₓ'. -/
theorem comp_continuousAt_iff' (h : α ≃ₜ β) (f : β → γ) (x : α) :
ContinuousAt (f ∘ h) x ↔ ContinuousAt f (h x) :=
@@ -860,7 +860,7 @@ theorem comp_continuousAt_iff' (h : α ≃ₜ β) (f : β → γ) (x : α) :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u3} γ) (x : γ), Iff (ContinuousWithinAt.{u3, u1} γ α _inst_3 _inst_1 f s x) (ContinuousWithinAt.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f) s x)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u1} γ) (x : γ), Iff (ContinuousWithinAt.{u1, u3} γ α _inst_3 _inst_1 f s x) (ContinuousWithinAt.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) s x)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) (f : γ -> α) (s : Set.{u1} γ) (x : γ), Iff (ContinuousWithinAt.{u1, u3} γ α _inst_3 _inst_1 f s x) (ContinuousWithinAt.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f) s x)
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_continuous_within_at_iff Homeomorph.comp_continuousWithinAt_iffₓ'. -/
theorem comp_continuousWithinAt_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) (x : γ) :
ContinuousWithinAt f s x ↔ ContinuousWithinAt (h ∘ f) s x :=
@@ -871,7 +871,7 @@ theorem comp_continuousWithinAt_iff (h : α ≃ₜ β) (f : γ → α) (s : Set
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (IsOpenMap.{u3, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u3, succ u1, succ u2} γ α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) f)) (IsOpenMap.{u3, u1} γ α _inst_3 _inst_1 f)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (IsOpenMap.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f)) (IsOpenMap.{u1, u3} γ α _inst_3 _inst_1 f)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : γ -> α}, Iff (IsOpenMap.{u1, u2} γ β _inst_3 _inst_2 (Function.comp.{succ u1, succ u3, succ u2} γ α β (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h) f)) (IsOpenMap.{u1, u3} γ α _inst_3 _inst_1 f)
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_is_open_map_iff Homeomorph.comp_isOpenMap_iffₓ'. -/
@[simp]
theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘ f) ↔ IsOpenMap f :=
@@ -886,7 +886,7 @@ theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (IsOpenMap.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))) (IsOpenMap.{u2, u3} β γ _inst_2 _inst_3 f)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (IsOpenMap.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h))) (IsOpenMap.{u2, u1} β γ _inst_2 _inst_3 f)
+ forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u1} γ] (h : Homeomorph.{u3, u2} α β _inst_1 _inst_2) {f : β -> γ}, Iff (IsOpenMap.{u3, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u3, succ u2, succ u1} α β γ f (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (Homeomorph.{u3, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u3, u2} α β _inst_1 _inst_2))) h))) (IsOpenMap.{u2, u1} β γ _inst_2 _inst_3 f)
Case conversion may be inaccurate. Consider using '#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'ₓ'. -/
@[simp]
theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f ∘ h) ↔ IsOpenMap f :=
@@ -953,7 +953,7 @@ theorem prodCongr_symm (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TopologicalSpace.{u3} γ] [_inst_4 : TopologicalSpace.{u4} δ] (h₁ : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u3, u4} γ δ _inst_3 _inst_4), Eq.{max (succ (max u1 u3)) (succ (max u2 u4))} ((Prod.{u1, u3} α γ) -> (Prod.{u2, u4} β δ)) (coeFn.{max (succ (max u1 u3)) (succ (max u2 u4)), max (succ (max u1 u3)) (succ (max u2 u4))} (Homeomorph.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4)) (fun (_x : Homeomorph.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4)) => (Prod.{u1, u3} α γ) -> (Prod.{u2, u4} β δ)) (Homeomorph.hasCoeToFun.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.topologicalSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.topologicalSpace.{u2, u4} β δ _inst_2 _inst_4)) (Homeomorph.prodCongr.{u1, u2, u3, u4} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Prod.map.{u1, u2, u3, u4} α β γ δ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h₁) (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ u4)} (Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) (fun (_x : Homeomorph.{u3, u4} γ δ _inst_3 _inst_4) => γ -> δ) (Homeomorph.hasCoeToFun.{u3, u4} γ δ _inst_3 _inst_4) h₂))
but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {δ : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} α] [_inst_2 : TopologicalSpace.{u3} β] [_inst_3 : TopologicalSpace.{u2} γ] [_inst_4 : TopologicalSpace.{u1} δ] (h₁ : Homeomorph.{u4, u3} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u1} γ δ _inst_3 _inst_4), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (forall (ᾰ : Prod.{u4, u2} α γ), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u4, u2} α γ) => Prod.{u3, u1} β δ) ᾰ) (FunLike.coe.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1), max (succ u4) (succ u2), max (succ u3) (succ u1)} (Homeomorph.{max u2 u4, max u1 u3} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (fun (_x : Prod.{u4, u2} α γ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u4, u2} α γ) => Prod.{u3, u1} β δ) _x) (EmbeddingLike.toFunLike.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1), max (succ u4) (succ u2), max (succ u3) (succ u1)} (Homeomorph.{max u2 u4, max u1 u3} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (EquivLike.toEmbeddingLike.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1), max (succ u4) (succ u2), max (succ u3) (succ u1)} (Homeomorph.{max u2 u4, max u1 u3} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (Homeomorph.instEquivLikeHomeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)))) (Homeomorph.prodCongr.{u4, u3, u2, u1} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Prod.map.{u4, u3, u2, u1} α β γ δ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u4, u3} α β _inst_1 _inst_2))) h₁) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ (fun (_x : γ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : γ) => δ) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ δ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ δ (Homeomorph.instEquivLikeHomeomorph.{u2, u1} γ δ _inst_3 _inst_4))) h₂))
+ forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {δ : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} α] [_inst_2 : TopologicalSpace.{u3} β] [_inst_3 : TopologicalSpace.{u2} γ] [_inst_4 : TopologicalSpace.{u1} δ] (h₁ : Homeomorph.{u4, u3} α β _inst_1 _inst_2) (h₂ : Homeomorph.{u2, u1} γ δ _inst_3 _inst_4), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} ((Prod.{u4, u2} α γ) -> (Prod.{u3, u1} β δ)) (FunLike.coe.{max (succ (max u4 u2)) (succ (max u3 u1)), succ (max u4 u2), succ (max u3 u1)} (Homeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (fun (_x : Prod.{u4, u2} α γ) => Prod.{u3, u1} β δ) (EmbeddingLike.toFunLike.{max (succ (max u4 u2)) (succ (max u3 u1)), succ (max u4 u2), succ (max u3 u1)} (Homeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (EquivLike.toEmbeddingLike.{max (succ (max u4 u2)) (succ (max u3 u1)), succ (max u4 u2), succ (max u3 u1)} (Homeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (Homeomorph.instEquivLikeHomeomorph.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instTopologicalSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instTopologicalSpaceProd.{u3, u1} β δ _inst_2 _inst_4)))) (Homeomorph.prodCongr.{u4, u3, u2, u1} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Prod.map.{u4, u3, u2, u1} α β γ δ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u4) (succ u3), succ u4, succ u3} (Homeomorph.{u4, u3} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u4, u3} α β _inst_1 _inst_2))) h₁) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ (fun (_x : γ) => δ) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ δ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} γ δ _inst_3 _inst_4) γ δ (Homeomorph.instEquivLikeHomeomorph.{u2, u1} γ δ _inst_3 _inst_4))) h₂))
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_prod_congr Homeomorph.coe_prodCongrₓ'. -/
@[simp]
theorem coe_prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
@@ -993,7 +993,7 @@ theorem prodComm_symm : (prodComm α β).symm = prodComm β α :=
lean 3 declaration is
forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β], Eq.{max (succ (max u1 u2)) (succ (max u2 u1))} ((Prod.{u1, u2} α β) -> (Prod.{u2, u1} β α)) (coeFn.{max (succ (max u1 u2)) (succ (max u2 u1)), max (succ (max u1 u2)) (succ (max u2 u1))} (Homeomorph.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1)) (fun (_x : Homeomorph.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1)) => (Prod.{u1, u2} α β) -> (Prod.{u2, u1} β α)) (Homeomorph.hasCoeToFun.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u1} β α _inst_2 _inst_1)) (Homeomorph.prodComm.{u1, u2} α β _inst_1 _inst_2)) (Prod.swap.{u1, u2} α β)
but is expected to have type
- forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β], Eq.{max (succ u2) (succ u1)} (forall (ᾰ : Prod.{u2, u1} α β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u2, u1} α β) => Prod.{u1, u2} β α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{max u1 u2, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (fun (_x : Prod.{u2, u1} α β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u2, u1} α β) => Prod.{u1, u2} β α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{max u1 u2, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{max u1 u2, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (Homeomorph.instEquivLikeHomeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)))) (Homeomorph.prodComm.{u2, u1} α β _inst_1 _inst_2)) (Prod.swap.{u2, u1} α β)
+ forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β], Eq.{max (succ u2) (succ u1)} ((Prod.{u2, u1} α β) -> (Prod.{u1, u2} β α)) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Homeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (fun (_x : Prod.{u2, u1} α β) => Prod.{u1, u2} β α) (EmbeddingLike.toFunLike.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Homeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (EquivLike.toEmbeddingLike.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Homeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (Homeomorph.instEquivLikeHomeomorph.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instTopologicalSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instTopologicalSpaceProd.{u1, u2} β α _inst_2 _inst_1)))) (Homeomorph.prodComm.{u2, u1} α β _inst_1 _inst_2)) (Prod.swap.{u2, u1} α β)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_prod_comm Homeomorph.coe_prodCommₓ'. -/
@[simp]
theorem coe_prodComm : ⇑(prodComm α β) = Prod.swap :=
@@ -1047,7 +1047,7 @@ def punitProd : PUnit × α ≃ₜ α :=
lean 3 declaration is
forall (α : Type.{u1}) [_inst_1 : TopologicalSpace.{u1} α], Eq.{max (succ (max u2 u1)) (succ u1)} ((Prod.{u2, u1} PUnit.{succ u2} α) -> α) (coeFn.{max (succ (max u2 u1)) (succ u1), max (succ (max u2 u1)) (succ u1)} (Homeomorph.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.topologicalSpace.{u2, u1} PUnit.{succ u2} α PUnit.topologicalSpace.{u2} _inst_1) _inst_1) (fun (_x : Homeomorph.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.topologicalSpace.{u2, u1} PUnit.{succ u2} α PUnit.topologicalSpace.{u2} _inst_1) _inst_1) => (Prod.{u2, u1} PUnit.{succ u2} α) -> α) (Homeomorph.hasCoeToFun.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.topologicalSpace.{u2, u1} PUnit.{succ u2} α PUnit.topologicalSpace.{u2} _inst_1) _inst_1) (Homeomorph.punitProd.{u1, u2} α _inst_1)) (Prod.snd.{u2, u1} PUnit.{succ u2} α)
but is expected to have type
- forall (α : Type.{u2}) [_inst_1 : TopologicalSpace.{u2} α], Eq.{max (succ u2) (succ u1)} (forall (ᾰ : Prod.{u1, u2} PUnit.{succ u1} α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u1, u2} PUnit.{succ u1} α) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) (fun (_x : Prod.{u1, u2} PUnit.{succ u1} α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u1, u2} PUnit.{succ u1} α) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (Homeomorph.instEquivLikeHomeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1))) (Homeomorph.punitProd.{u2, u1} α _inst_1)) (Prod.snd.{u1, u2} PUnit.{succ u1} α)
+ forall (α : Type.{u2}) [_inst_1 : TopologicalSpace.{u2} α], Eq.{max (succ u2) (succ u1)} ((Prod.{u1, u2} PUnit.{succ u1} α) -> α) (FunLike.coe.{max (succ (max u2 u1)) (succ u2), succ (max u2 u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) (fun (_x : Prod.{u1, u2} PUnit.{succ u1} α) => α) (EmbeddingLike.toFunLike.{max (succ (max u2 u1)) (succ u2), succ (max u2 u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (EquivLike.toEmbeddingLike.{max (succ (max u2 u1)) (succ u2), succ (max u2 u1), succ u2} (Homeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (Homeomorph.instEquivLikeHomeomorph.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instTopologicalSpaceProd.{u1, u2} PUnit.{succ u1} α instTopologicalSpacePUnit.{u1} _inst_1) _inst_1))) (Homeomorph.punitProd.{u2, u1} α _inst_1)) (Prod.snd.{u1, u2} PUnit.{succ u1} α)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_punit_prod Homeomorph.coe_punitProdₓ'. -/
@[simp]
theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
@@ -1191,7 +1191,7 @@ def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (e : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Homeomorph.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) e) s)) (Subtype.topologicalSpace.{u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) _inst_1) (Subtype.topologicalSpace.{u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) e) s)) _inst_2)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (e : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Homeomorph.{u1, u2} (Set.Elem.{u1} α s) (Set.Elem.{u2} β (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) (instTopologicalSpaceSubtype.{u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) _inst_1) (instTopologicalSpaceSubtype.{u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) _inst_2)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (e : Homeomorph.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Homeomorph.{u1, u2} (Set.Elem.{u1} α s) (Set.Elem.{u2} β (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) (instTopologicalSpaceSubtype.{u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) _inst_1) (instTopologicalSpaceSubtype.{u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => β) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u1, u2} α β _inst_1 _inst_2))) e) s)) _inst_2)
Case conversion may be inaccurate. Consider using '#align homeomorph.image Homeomorph.imageₓ'. -/
/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:301:22: continuitity! not supported at the moment -/
/- ./././Mathport/Syntax/Translate/Tactic/Mathlib/Misc2.lean:301:22: continuitity! not supported at the moment -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -66,7 +66,7 @@ instance : CoeFun (α ≃ₜ β) fun _ => α → β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u1) (succ u2)} ((fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) a)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coeₓ'. -/
@[simp]
theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
@@ -103,7 +103,7 @@ initialize_simps_projections Homeomorph (to_equiv_to_fun → apply, to_equiv_inv
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (fun (_x : Homeomorph.{u1, u2} α β _inst_1 _inst_2) => α -> β) (Homeomorph.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) α β (Homeomorph.instEquivLikeHomeomorph.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_to_equiv Homeomorph.coe_toEquivₓ'. -/
@[simp]
theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
@@ -114,7 +114,7 @@ theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (β -> α) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β (Homeomorph.toEquiv.{u1, u2} α β _inst_1 _inst_2 h))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (Homeomorph.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h))
Case conversion may be inaccurate. Consider using '#align homeomorph.coe_symm_to_equiv Homeomorph.coe_symm_toEquivₓ'. -/
@[simp]
theorem coe_symm_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv.symm = h.symm :=
@@ -189,7 +189,7 @@ theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : autoParamₓ.{0} (Continuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))) (c : autoParamₓ.{0} (Continuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 111 (OfNat.mk.{0} Nat 111 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 117 (OfNat.mk.{0} Nat 117 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 121 (OfNat.mk.{0} Nat 121 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 39 (OfNat.mk.{0} Nat 39 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 110 (OfNat.mk.{0} Nat 110 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 114 (OfNat.mk.{0} Nat 114 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 118 (OfNat.mk.{0} Nat 118 (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 101 (OfNat.mk.{0} Nat 101 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Name.mk_string (String.str (String.str (String.str (String.str (String.str (String.str String.empty (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 97 (OfNat.mk.{0} Nat 97 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 116 (OfNat.mk.{0} Nat 116 (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 105 (OfNat.mk.{0} Nat 105 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Char.ofNat (OfNat.ofNat.{0} Nat 99 (OfNat.mk.{0} Nat 99 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) Name.anonymous)))), Eq.{max (succ u2) (succ u1)} ((fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Homeomorph.{u2, u1} β α _inst_2 _inst_1) (fun (_x : Homeomorph.{u2, u1} β α _inst_2 _inst_1) => β -> α) (Homeomorph.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 (Homeomorph.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β a))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : Continuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : Continuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (Homeomorph.{u1, u2} β α _inst_2 _inst_1) β α (Homeomorph.instEquivLikeHomeomorph.{u1, u2} β α _inst_2 _inst_1))) (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 (Homeomorph.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
Case conversion may be inaccurate. Consider using '#align homeomorph.homeomorph_mk_coe_symm Homeomorph.homeomorph_mk_coe_symmₓ'. -/
@[simp]
theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
@@ -1319,7 +1319,7 @@ variable [TopologicalSpace α] [TopologicalSpace β]
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : CompactSpace.{u1} α _inst_1] [_inst_4 : T2Space.{u2} β _inst_2] {f : Equiv.{succ u1, succ u2} α β}, (Continuous.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f)) -> (Continuous.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : CompactSpace.{u2} α _inst_1] [_inst_4 : T2Space.{u1} β _inst_2] {f : Equiv.{succ u2, succ u1} α β}, (Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f)) -> (Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β f)))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : CompactSpace.{u2} α _inst_1] [_inst_4 : T2Space.{u1} β _inst_2] {f : Equiv.{succ u2, succ u1} α β}, (Continuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f)) -> (Continuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β f)))
Case conversion may be inaccurate. Consider using '#align continuous.continuous_symm_of_equiv_compact_to_t2 Continuous.continuous_symm_of_equiv_compact_to_t2ₓ'. -/
theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f : α ≃ β}
(hf : Continuous f) : Continuous f.symm :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -83,13 +83,11 @@ protected def symm (h : α ≃ₜ β) : β ≃ₜ α
#align homeomorph.symm Homeomorph.symm
-/
-#print Homeomorph.Simps.apply /-
/-- See Note [custom simps projection]. We need to specify this projection explicitly in this case,
because it is a composition of multiple projections. -/
def Simps.apply (h : α ≃ₜ β) : α → β :=
h
#align homeomorph.simps.apply Homeomorph.Simps.apply
--/
#print Homeomorph.Simps.symm_apply /-
/-- See Note [custom simps projection] -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -144,6 +144,12 @@ theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
toEquiv_injective <| Equiv.ext H
#align homeomorph.ext Homeomorph.ext
+/- warning: homeomorph.symm_symm -> Homeomorph.symm_symm is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] (h : Homeomorph.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (Homeomorph.{u1, u2} α β _inst_1 _inst_2) (Homeomorph.symm.{u2, u1} β α _inst_2 _inst_1 (Homeomorph.symm.{u1, u2} α β _inst_1 _inst_2 h)) h
+but is expected to have type
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : TopologicalSpace.{u1} β] (h : Homeomorph.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (Homeomorph.{u2, u1} α β _inst_1 _inst_2) (Homeomorph.symm.{u1, u2} β α _inst_2 _inst_1 (Homeomorph.symm.{u2, u1} α β _inst_1 _inst_2 h)) h
+Case conversion may be inaccurate. Consider using '#align homeomorph.symm_symm Homeomorph.symm_symmₓ'. -/
@[simp]
theorem symm_symm (h : α ≃ₜ β) : h.symm.symm = h :=
ext fun _ => rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton
! This file was ported from Lean 3 source module topology.homeomorph
-! leanprover-community/mathlib commit 0ebfdb71919ac6ca5d7fbc61a082fa2519556818
+! leanprover-community/mathlib commit 3b267e70a936eebb21ab546f49a8df34dd300b25
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -144,6 +144,11 @@ theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
toEquiv_injective <| Equiv.ext H
#align homeomorph.ext Homeomorph.ext
+@[simp]
+theorem symm_symm (h : α ≃ₜ β) : h.symm.symm = h :=
+ ext fun _ => rfl
+#align homeomorph.symm_symm Homeomorph.symm_symm
+
#print Homeomorph.refl /-
/-- Identity map as a homeomorphism. -/
@[simps (config := { fullyApplied := false }) apply]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -793,8 +793,9 @@ def piSplitAt (Y : ι → Type*) [∀ j, TopologicalSpace (Y j)] :
continuous_pi fun j => by
dsimp only [Equiv.piSplitAt]
split_ifs with h
- subst h
- exacts [continuous_fst, (continuous_apply _).comp continuous_snd]
+ · subst h
+ exact continuous_fst
+ · exact (continuous_apply _).comp continuous_snd
#align homeomorph.pi_split_at Homeomorph.piSplitAt
variable (Y)
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -765,7 +765,7 @@ section
variable {ι : Type*}
/-- The topological space `Π i, Y i` can be split as a product by separating the indices in ι
- depending on whether they satisfy a predicate p or not.-/
+ depending on whether they satisfy a predicate p or not. -/
@[simps!]
def piEquivPiSubtypeProd (p : ι → Prop) (Y : ι → Type*) [∀ i, TopologicalSpace (Y i)]
[DecidablePred p] : (∀ i, Y i) ≃ₜ (∀ i : { x // p x }, Y i) × ∀ i : { x // ¬p x }, Y i
Add a theorem Homeomorph.locallyCompactSpace
that if the codomain of a homeomorphism is a locally compact space, then the domain is also a locally compact space.
@@ -467,6 +467,13 @@ theorem locallyConnectedSpace [i : LocallyConnectedSpace Y] (h : X ≃ₜ Y) :
refine locallyConnectedSpace_of_connected_bases _ _ this fun _ _ hs ↦ ?_
exact hs.2.2.2.image _ h.symm.continuous.continuousOn
+/-- The codomain of a homeomorphism is a locally compact space if and only if
+the domain is a locally compact space. -/
+theorem locallyCompactSpace_iff (h : X ≃ₜ Y) :
+ LocallyCompactSpace X ↔ LocallyCompactSpace Y := by
+ exact ⟨fun _ => h.symm.openEmbedding.locallyCompactSpace,
+ fun _ => h.closedEmbedding.locallyCompactSpace⟩
+
/-- If a bijective map `e : X ≃ Y` is continuous and open, then it is a homeomorphism. -/
def homeomorphOfContinuousOpen (e : X ≃ Y) (h₁ : Continuous e) (h₂ : IsOpenMap e) : X ≃ₜ Y where
continuous_toFun := h₁
λ
by fun
(#11301)
Per the style guidelines, λ
is disallowed in mathlib.
This is close to exhaustive; I left some tactic code alone when it seemed to me that tactic could be upstreamed soon.
Notes
=>
to ↦
.Mathlib/Order/SupClosed
.λ x,
, which I also replaced.@@ -810,20 +810,20 @@ variable {Z : Type*} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace
@[simps toEquiv]
def toHomeomorph (e : X ≃ Y) (he : ∀ s, IsOpen (e ⁻¹' s) ↔ IsOpen s) : X ≃ₜ Y where
toEquiv := e
- continuous_toFun := continuous_def.2 λ s ↦ (he _).2
- continuous_invFun := continuous_def.2 λ s ↦ by convert (he _).1; simp
+ continuous_toFun := continuous_def.2 fun s ↦ (he _).2
+ continuous_invFun := continuous_def.2 fun s ↦ by convert (he _).1; simp
@[simp] lemma coe_toHomeomorph (e : X ≃ Y) (he) : ⇑(e.toHomeomorph he) = e := rfl
lemma toHomeomorph_apply (e : X ≃ Y) (he) (x : X) : e.toHomeomorph he x = e x := rfl
@[simp] lemma toHomeomorph_refl :
- (Equiv.refl X).toHomeomorph (λ _s ↦ Iff.rfl) = Homeomorph.refl _ := rfl
+ (Equiv.refl X).toHomeomorph (fun _s ↦ Iff.rfl) = Homeomorph.refl _ := rfl
@[simp] lemma toHomeomorph_symm (e : X ≃ Y) (he) :
- (e.toHomeomorph he).symm = e.symm.toHomeomorph λ s ↦ by convert (he _).symm; simp := rfl
+ (e.toHomeomorph he).symm = e.symm.toHomeomorph fun s ↦ by convert (he _).symm; simp := rfl
lemma toHomeomorph_trans (e : X ≃ Y) (f : Y ≃ Z) (he hf) :
- (e.trans f).toHomeomorph (λ _s ↦ (he _).trans (hf _)) =
+ (e.trans f).toHomeomorph (fun _s ↦ (he _).trans (hf _)) =
(e.toHomeomorph he).trans (f.toHomeomorph hf) := rfl
/-- An inducing equiv between topological spaces is a homeomorphism. -/
@@ -667,7 +667,7 @@ def piCongr {ι₁ ι₂ : Type*} {Y₁ : ι₁ → Type*} {Y₂ : ι₂ → Typ
(e : ι₁ ≃ ι₂) (F : ∀ i₁, Y₁ i₁ ≃ₜ Y₂ (e i₁)) : (∀ i₁, Y₁ i₁) ≃ₜ ∀ i₂, Y₂ i₂ :=
(Homeomorph.piCongrRight F).trans (Homeomorph.piCongrLeft e)
--- Porting note: TODO: align the order of universes with `Equiv.ulift`
+-- Porting note (#11215): TODO: align the order of universes with `Equiv.ulift`
/-- `ULift X` is homeomorphic to `X`. -/
def ulift.{u, v} {X : Type u} [TopologicalSpace X] : ULift.{v, u} X ≃ₜ X where
continuous_toFun := continuous_uLift_down
@@ -729,7 +729,7 @@ def finTwoArrow : (Fin 2 → X) ≃ₜ X × X :=
-/
@[simps!]
def image (e : X ≃ₜ Y) (s : Set X) : s ≃ₜ e '' s where
- -- Porting note: todo: by continuity!
+ -- Porting note (#11215): TODO: by continuity!
continuous_toFun := e.continuous.continuousOn.restrict_mapsTo (mapsTo_image _ _)
continuous_invFun := (e.symm.continuous.comp continuous_subtype_val).codRestrict _
toEquiv := e.toEquiv.image s
@@ -827,7 +827,7 @@ lemma toHomeomorph_trans (e : X ≃ Y) (f : Y ≃ Z) (he hf) :
(e.toHomeomorph he).trans (f.toHomeomorph hf) := rfl
/-- An inducing equiv between topological spaces is a homeomorphism. -/
-@[simps toEquiv] -- Porting note: TODO: was `@[simps]`
+@[simps toEquiv] -- Porting note (#11215): TODO: was `@[simps]`
def toHomeomorphOfInducing (f : X ≃ Y) (hf : Inducing f) : X ≃ₜ Y :=
{ f with
continuous_toFun := hf.continuous
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -667,7 +667,7 @@ def piCongr {ι₁ ι₂ : Type*} {Y₁ : ι₁ → Type*} {Y₂ : ι₂ → Typ
(e : ι₁ ≃ ι₂) (F : ∀ i₁, Y₁ i₁ ≃ₜ Y₂ (e i₁)) : (∀ i₁, Y₁ i₁) ≃ₜ ∀ i₂, Y₂ i₂ :=
(Homeomorph.piCongrRight F).trans (Homeomorph.piCongrLeft e)
--- porting note: TODO: align the order of universes with `Equiv.ulift`
+-- Porting note: TODO: align the order of universes with `Equiv.ulift`
/-- `ULift X` is homeomorphic to `X`. -/
def ulift.{u, v} {X : Type u} [TopologicalSpace X] : ULift.{v, u} X ≃ₜ X where
continuous_toFun := continuous_uLift_down
@@ -729,7 +729,7 @@ def finTwoArrow : (Fin 2 → X) ≃ₜ X × X :=
-/
@[simps!]
def image (e : X ≃ₜ Y) (s : Set X) : s ≃ₜ e '' s where
- -- porting note: todo: by continuity!
+ -- Porting note: todo: by continuity!
continuous_toFun := e.continuous.continuousOn.restrict_mapsTo (mapsTo_image _ _)
continuous_invFun := (e.symm.continuous.comp continuous_subtype_val).codRestrict _
toEquiv := e.toEquiv.image s
@@ -827,7 +827,7 @@ lemma toHomeomorph_trans (e : X ≃ Y) (f : Y ≃ Z) (he hf) :
(e.toHomeomorph he).trans (f.toHomeomorph hf) := rfl
/-- An inducing equiv between topological spaces is a homeomorphism. -/
-@[simps toEquiv] -- porting note: TODO: was `@[simps]`
+@[simps toEquiv] -- Porting note: TODO: was `@[simps]`
def toHomeomorphOfInducing (f : X ≃ Y) (hf : Inducing f) : X ≃ₜ Y :=
{ f with
continuous_toFun := hf.continuous
@@ -852,7 +852,7 @@ theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace X] [T2Space Y] {f :
This is not true when T2 is weakened to T1
(see `Continuous.homeoOfEquivCompactToT2.t1_counterexample`). -/
-@[simps toEquiv] -- porting note: was `@[simps]`
+@[simps toEquiv] -- Porting note: was `@[simps]`
def homeoOfEquivCompactToT2 [CompactSpace X] [T2Space Y] {f : X ≃ Y} (hf : Continuous f) : X ≃ₜ Y :=
{ f with
continuous_toFun := hf
Continuous.image_connectedComponentIn_subset
(#9983)
and a version for homeomorphisms. From sphere-eversion; I'm just submitting things upstream.
@@ -318,6 +318,13 @@ theorem isConnected_preimage {s : Set Y} (h : X ≃ₜ Y) :
IsConnected (h ⁻¹' s) ↔ IsConnected s := by
rw [← image_symm, isConnected_image]
+theorem image_connectedComponentIn {s : Set X} (h : X ≃ₜ Y) {x : X} (hx : x ∈ s) :
+ h '' connectedComponentIn s x = connectedComponentIn (h '' s) (h x) := by
+ refine (h.continuous.image_connectedComponentIn_subset hx).antisymm ?_
+ have := h.symm.continuous.image_connectedComponentIn_subset (mem_image_of_mem h hx)
+ rwa [image_subset_iff, h.preimage_symm, h.image_symm, h.preimage_image, h.symm_apply_apply]
+ at this
+
@[simp]
theorem comap_cocompact (h : X ≃ₜ Y) : comap h (cocompact Y) = cocompact X :=
(comap_cocompact_le h.continuous).antisymm <|
Homeomorph.subtype
for lifting homeomorphisms to subtypes (#9959)
This extends Equiv.subtypeEquiv
, which promotes e : α ≃ β
to e.subtypeEquiv _ : {a : α // p a} ≃ {b : β // q b}
, to homeomorphisms.
We also add a missing lemma linking Equiv.subtypeEquiv
to Subtype.map
, and update the definition to use Subtype.map
also.
@@ -518,6 +518,26 @@ theorem comp_isOpenMap_iff' (h : X ≃ₜ Y) {f : Y → Z} : IsOpenMap (f ∘ h)
exact hf.comp h.symm.isOpenMap
#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'
+/-- A homeomorphism `h : X ≃ₜ Y` lifts to a homeomorphism between subtypes corresponding to
+predicates `p : X → Prop` and `q : Y → Prop` so long as `p = q ∘ h`. -/
+@[simps!]
+def subtype {p : X → Prop} {q : Y → Prop} (h : X ≃ₜ Y) (h_iff : ∀ x, p x ↔ q (h x)) :
+ {x // p x} ≃ₜ {y // q y} where
+ continuous_toFun := by simpa [Equiv.coe_subtypeEquiv_eq_map] using h.continuous.subtype_map _
+ continuous_invFun := by simpa [Equiv.coe_subtypeEquiv_eq_map] using
+ h.symm.continuous.subtype_map _
+ __ := h.subtypeEquiv h_iff
+
+@[simp]
+lemma subtype_toEquiv {p : X → Prop} {q : Y → Prop} (h : X ≃ₜ Y) (h_iff : ∀ x, p x ↔ q (h x)) :
+ (h.subtype h_iff).toEquiv = h.toEquiv.subtypeEquiv h_iff :=
+ rfl
+
+/-- A homeomorphism `h : X ≃ₜ Y` lifts to a homeomorphism between sets `s : Set X` and `t : Set Y`
+whenever `h` maps `s` onto `t`. -/
+abbrev sets {s : Set X} {t : Set Y} (h : X ≃ₜ Y) (h_eq : s = h ⁻¹' t) : s ≃ₜ t :=
+ h.subtype <| Set.ext_iff.mp h_eq
+
/-- If two sets are equal, then they are homeomorphic. -/
def setCongr {s t : Set X} (h : s = t) : s ≃ₜ t where
continuous_toFun := continuous_inclusion h.subset
@@ -6,6 +6,7 @@ Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Re
import Mathlib.Logic.Equiv.Fin
import Mathlib.Topology.DenseEmbedding
import Mathlib.Topology.Support
+import Mathlib.Topology.Connected.LocallyConnected
#align_import topology.homeomorph from "leanprover-community/mathlib"@"4c3e1721c58ef9087bbc2c8c38b540f70eda2e53"
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>
@@ -61,9 +61,9 @@ instance : EquivLike (X ≃ₜ Y) X Y where
inv := fun h => h.toEquiv.symm
left_inv := fun h => h.left_inv
right_inv := fun h => h.right_inv
- coe_injective' := fun _ _ H _ => toEquiv_injective <| FunLike.ext' H
+ coe_injective' := fun _ _ H _ => toEquiv_injective <| DFunLike.ext' H
-instance : CoeFun (X ≃ₜ Y) fun _ ↦ X → Y := ⟨FunLike.coe⟩
+instance : CoeFun (X ≃ₜ Y) fun _ ↦ X → Y := ⟨DFunLike.coe⟩
@[simp] theorem homeomorph_mk_coe (a : X ≃ Y) (b c) : (Homeomorph.mk a b c : X → Y) = a :=
rfl
@@ -106,7 +106,7 @@ theorem coe_symm_toEquiv (h : X ≃ₜ Y) : ⇑h.toEquiv.symm = h.symm :=
@[ext]
theorem ext {h h' : X ≃ₜ Y} (H : ∀ x, h x = h' x) : h = h' :=
- FunLike.ext _ _ H
+ DFunLike.ext _ _ H
#align homeomorph.ext Homeomorph.ext
/-- Identity map as a homeomorphism. -/
Function.left_id
and Function.comp.left_id
into Function.id_comp
.Function.right_id
and Function.comp.right_id
into Function.comp_id
.Function.comp_const_right
and Function.comp_const
into Function.comp_const
, use explicit arguments.Function.const_comp
to Mathlib.Init.Function
, use explicit arguments.@@ -505,7 +505,7 @@ theorem comp_continuousWithinAt_iff (h : X ≃ₜ Y) (f : Z → X) (s : Set Z) (
theorem comp_isOpenMap_iff (h : X ≃ₜ Y) {f : Z → X} : IsOpenMap (h ∘ f) ↔ IsOpenMap f := by
refine' ⟨_, fun hf => h.isOpenMap.comp hf⟩
intro hf
- rw [← Function.comp.left_id f, ← h.symm_comp_self, Function.comp.assoc]
+ rw [← Function.id_comp f, ← h.symm_comp_self, Function.comp.assoc]
exact h.symm.isOpenMap.comp hf
#align homeomorph.comp_is_open_map_iff Homeomorph.comp_isOpenMap_iff
@@ -513,7 +513,7 @@ theorem comp_isOpenMap_iff (h : X ≃ₜ Y) {f : Z → X} : IsOpenMap (h ∘ f)
theorem comp_isOpenMap_iff' (h : X ≃ₜ Y) {f : Y → Z} : IsOpenMap (f ∘ h) ↔ IsOpenMap f := by
refine' ⟨_, fun hf => hf.comp h.isOpenMap⟩
intro hf
- rw [← Function.comp.right_id f, ← h.self_comp_symm, ← Function.comp.assoc]
+ rw [← Function.comp_id f, ← h.self_comp_symm, ← Function.comp.assoc]
exact hf.comp h.symm.isOpenMap
#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'
@@ -234,6 +234,9 @@ theorem preimage_image (h : X ≃ₜ Y) (s : Set X) : h ⁻¹' (h '' s) = s :=
h.toEquiv.preimage_image s
#align homeomorph.preimage_image Homeomorph.preimage_image
+lemma image_compl (h : X ≃ₜ Y) (s : Set X) : h '' (sᶜ) = (h '' s)ᶜ :=
+ h.toEquiv.image_compl s
+
protected theorem inducing (h : X ≃ₜ Y) : Inducing h :=
inducing_of_inducing_compose h.continuous h.symm.continuous <| by
simp only [symm_comp_self, inducing_id]
@@ -427,6 +430,11 @@ theorem map_nhds_eq (h : X ≃ₜ Y) (x : X) : map h (𝓝 x) = 𝓝 (h x) :=
h.embedding.map_nhds_of_mem _ (by simp)
#align homeomorph.map_nhds_eq Homeomorph.map_nhds_eq
+@[simp]
+theorem map_punctured_nhds_eq (h : X ≃ₜ Y) (x : X) : map h (𝓝[≠] x) = 𝓝[≠] (h x) := by
+ convert h.embedding.map_nhdsWithin_eq ({x}ᶜ) x
+ rw [h.image_compl, Set.image_singleton]
+
theorem symm_map_nhds_eq (h : X ≃ₜ Y) (x : X) : map h.symm (𝓝 (h x)) = 𝓝 x := by
rw [h.symm.map_nhds_eq, h.symm_apply_apply]
#align homeomorph.symm_map_nhds_eq Homeomorph.symm_map_nhds_eq
Nonempty
arguments (#9377)
Finset.Nonempty.image_iff
to Finset.image_nonempty
, deprecate the old version;Set.nonempty_image_iff
to Set.image_nonempty
, deprecate the old version;Finset.Nonempty
arguments here and there;Nonempty s
instead of Nonempty (s.image f)
or Nonempty (s.map f)
.@@ -307,7 +307,7 @@ theorem isPreconnected_preimage {s : Set Y} (h : X ≃ₜ Y) :
@[simp]
theorem isConnected_image {s : Set X} (h : X ≃ₜ Y) :
IsConnected (h '' s) ↔ IsConnected s :=
- nonempty_image_iff.and h.isPreconnected_image
+ image_nonempty.and h.isPreconnected_image
@[simp]
theorem isConnected_preimage {s : Set Y} (h : X ≃ₜ Y) :
PartialEquiv
, Homeomorph
, PartialHomeomorph
(#9430)
Items 4-5 in reference Zulip
Also added symm
and trans
definitions for PartialEquiv
, Homeomorph
, and PartialHomeomorph
.
@@ -74,6 +74,7 @@ protected def empty [IsEmpty X] [IsEmpty Y] : X ≃ₜ Y where
__ := Equiv.equivOfIsEmpty X Y
/-- Inverse of a homeomorphism. -/
+@[symm]
protected def symm (h : X ≃ₜ Y) : Y ≃ₜ X where
continuous_toFun := h.continuous_invFun
continuous_invFun := h.continuous_toFun
@@ -117,6 +118,7 @@ protected def refl (X : Type*) [TopologicalSpace X] : X ≃ₜ X where
#align homeomorph.refl Homeomorph.refl
/-- Composition of two homeomorphisms. -/
+@[trans]
protected def trans (h₁ : X ≃ₜ Y) (h₂ : Y ≃ₜ Z) : X ≃ₜ Z where
continuous_toFun := h₂.continuous_toFun.comp h₁.continuous_toFun
continuous_invFun := h₁.continuous_invFun.comp h₂.continuous_invFun
@@ -598,7 +598,7 @@ end
@[simps! apply toEquiv]
def piCongrLeft {ι ι' : Type*} {Y : ι' → Type*} [∀ j, TopologicalSpace (Y j)]
(e : ι ≃ ι') : (∀ i, Y (e i)) ≃ₜ ∀ j, Y j where
- continuous_toFun := continuous_pi <| e.forall_congr_left.mp <| fun i ↦ by
+ continuous_toFun := continuous_pi <| e.forall_congr_left.mp fun i ↦ by
simpa only [Equiv.toFun_as_coe, Equiv.piCongrLeft_apply_apply] using continuous_apply i
continuous_invFun := Pi.continuous_precomp' e
toEquiv := Equiv.piCongrLeft _ e
@@ -69,6 +69,10 @@ instance : CoeFun (X ≃ₜ Y) fun _ ↦ X → Y := ⟨FunLike.coe⟩
rfl
#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coe
+/-- The unique homeomorphism between two empty types. -/
+protected def empty [IsEmpty X] [IsEmpty Y] : X ≃ₜ Y where
+ __ := Equiv.equivOfIsEmpty X Y
+
/-- Inverse of a homeomorphism. -/
protected def symm (h : X ≃ₜ Y) : Y ≃ₜ X where
continuous_toFun := h.continuous_invFun
@@ -79,6 +79,9 @@ protected def symm (h : X ≃ₜ Y) : Y ≃ₜ X where
@[simp] theorem symm_symm (h : X ≃ₜ Y) : h.symm.symm = h := rfl
#align homeomorph.symm_symm Homeomorph.symm_symm
+theorem symm_bijective : Function.Bijective (Homeomorph.symm : (X ≃ₜ Y) → Y ≃ₜ X) :=
+ Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
+
/-- See Note [custom simps projection] -/
def Simps.symm_apply (h : X ≃ₜ Y) : Y → X :=
h.symm
Use .asFn
and .lemmasOnly
as simps
configuration options.
For reference, these are defined here:
@@ -102,7 +102,7 @@ theorem ext {h h' : X ≃ₜ Y} (H : ∀ x, h x = h' x) : h = h' :=
#align homeomorph.ext Homeomorph.ext
/-- Identity map as a homeomorphism. -/
-@[simps! (config := { fullyApplied := false }) apply]
+@[simps! (config := .asFn) apply]
protected def refl (X : Type*) [TopologicalSpace X] : X ≃ₜ X where
continuous_toFun := continuous_id
continuous_invFun := continuous_id
@@ -561,7 +561,7 @@ def prodAssoc : (X × Y) × Z ≃ₜ X × Y × Z where
#align homeomorph.prod_assoc Homeomorph.prodAssoc
/-- `X × {*}` is homeomorphic to `X`. -/
-@[simps! (config := { fullyApplied := false }) apply]
+@[simps! (config := .asFn) apply]
def prodPUnit : X × PUnit ≃ₜ X where
toEquiv := Equiv.prodPUnit X
continuous_toFun := continuous_fst
@@ -659,7 +659,7 @@ def sigmaProdDistrib : (Σi, X i) × Y ≃ₜ Σi, X i × Y :=
end Distrib
/-- If `ι` has a unique element, then `ι → X` is homeomorphic to `X`. -/
-@[simps! (config := { fullyApplied := false })]
+@[simps! (config := .asFn)]
def funUnique (ι X : Type*) [Unique ι] [TopologicalSpace X] : (ι → X) ≃ₜ X where
toEquiv := Equiv.funUnique ι X
continuous_toFun := continuous_apply _
@@ -667,7 +667,7 @@ def funUnique (ι X : Type*) [Unique ι] [TopologicalSpace X] : (ι → X) ≃
#align homeomorph.fun_unique Homeomorph.funUnique
/-- Homeomorphism between dependent functions `Π i : Fin 2, X i` and `X 0 × X 1`. -/
-@[simps! (config := { fullyApplied := false })]
+@[simps! (config := .asFn)]
def piFinTwo.{u} (X : Fin 2 → Type u) [∀ i, TopologicalSpace (X i)] : (∀ i, X i) ≃ₜ X 0 × X 1 where
toEquiv := piFinTwoEquiv X
continuous_toFun := (continuous_apply 0).prod_mk (continuous_apply 1)
@@ -675,7 +675,7 @@ def piFinTwo.{u} (X : Fin 2 → Type u) [∀ i, TopologicalSpace (X i)] : (∀ i
#align homeomorph.pi_fin_two Homeomorph.piFinTwo
/-- Homeomorphism between `X² = Fin 2 → X` and `X × X`. -/
-@[simps! (config := { fullyApplied := false })]
+@[simps! (config := .asFn)]
def finTwoArrow : (Fin 2 → X) ≃ₜ X × X :=
{ piFinTwo fun _ => X with toEquiv := finTwoArrowEquiv X }
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
@@ -691,7 +691,7 @@ def image (e : X ≃ₜ Y) (s : Set X) : s ≃ₜ e '' s where
#align homeomorph.image Homeomorph.image
/-- `Set.univ X` is homeomorphic to `X`. -/
-@[simps! (config := { fullyApplied := false })]
+@[simps! (config := .asFn)]
def Set.univ (X : Type*) [TopologicalSpace X] : (univ : Set X) ≃ₜ X where
toEquiv := Equiv.Set.univ X
continuous_toFun := continuous_subtype_val
All the other properties of topological spaces like T0Space or RegularSpace are in the root namespace. Many files were opening TopologicalSpace
just for the sake of shortening TopologicalSpace.SecondCountableTopology
...
@@ -254,8 +254,8 @@ noncomputable def ofEmbedding (f : X → Y) (hf : Embedding f) : X ≃ₜ Set.ra
toEquiv := Equiv.ofInjective f hf.inj
#align homeomorph.of_embedding Homeomorph.ofEmbedding
-protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopology Y]
- (h : X ≃ₜ Y) : TopologicalSpace.SecondCountableTopology X :=
+protected theorem secondCountableTopology [SecondCountableTopology Y]
+ (h : X ≃ₜ Y) : SecondCountableTopology X :=
h.inducing.secondCountableTopology
#align homeomorph.second_countable_topology Homeomorph.secondCountableTopology
Equiv.toFun_as_coe_apply
(#7902)
This simp
lemma was added during the port but tagged as probably unnecessary after fixing https://github.com/leanprover/lean4/issues/1937. This PR confirms it is indeed no longer necessary. The only proofs that needed fixing were the one explicitly calling the new simp lemma.
The porting note can go too.
@@ -592,7 +592,7 @@ end
def piCongrLeft {ι ι' : Type*} {Y : ι' → Type*} [∀ j, TopologicalSpace (Y j)]
(e : ι ≃ ι') : (∀ i, Y (e i)) ≃ₜ ∀ j, Y j where
continuous_toFun := continuous_pi <| e.forall_congr_left.mp <| fun i ↦ by
- simpa only [Equiv.toFun_as_coe_apply, Equiv.piCongrLeft_apply_apply] using continuous_apply i
+ simpa only [Equiv.toFun_as_coe, Equiv.piCongrLeft_apply_apply] using continuous_apply i
continuous_invFun := Pi.continuous_precomp' e
toEquiv := Equiv.piCongrLeft _ e
Define sigma-compact subsets of a topological space and show their basic properties.
Relate them to sigma-compact space: a set is sigma-compact iff it is a sigma-compact space (w.r.t. the subspace topology).
In a later PR, we'll show that sigma-compact measure zero sets are nowhere dense.
Co-authored-by: David Loeffler <d.loeffler.01@cantab.net> Co-authored-by: grunweg <grunweg@posteo.de>
@@ -262,7 +262,7 @@ protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopol
/-- If `h : X → Y` is a homeomorphism, `h(s)` is compact iff `s` is. -/
@[simp]
theorem isCompact_image {s : Set X} (h : X ≃ₜ Y) : IsCompact (h '' s) ↔ IsCompact s :=
- h.embedding.isCompact_iff_isCompact_image.symm
+ h.embedding.isCompact_iff.symm
#align homeomorph.is_compact_image Homeomorph.isCompact_image
/-- If `h : X → Y` is a homeomorphism, `h⁻¹(s)` is compact iff `s` is. -/
@@ -271,6 +271,18 @@ theorem isCompact_preimage {s : Set Y} (h : X ≃ₜ Y) : IsCompact (h ⁻¹' s)
rw [← image_symm]; exact h.symm.isCompact_image
#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimage
+/-- If `h : X → Y` is a homeomorphism, `s` is σ-compact iff `h(s)` is. -/
+@[simp]
+theorem isSigmaCompact_image {s : Set X} (h : X ≃ₜ Y) :
+ IsSigmaCompact (h '' s) ↔ IsSigmaCompact s :=
+ h.embedding.isSigmaCompact_iff.symm
+
+/-- If `h : X → Y` is a homeomorphism, `h⁻¹(s)` is σ-compact iff `s` is. -/
+@[simp]
+theorem isSigmaCompact_preimage {s : Set Y} (h : X ≃ₜ Y) :
+ IsSigmaCompact (h ⁻¹' s) ↔ IsSigmaCompact s := by
+ rw [← image_symm]; exact h.symm.isSigmaCompact_image
+
@[simp]
theorem isPreconnected_image {s : Set X} (h : X ≃ₜ Y) :
IsPreconnected (h '' s) ↔ IsPreconnected s :=
@@ -17,8 +17,8 @@ directions continuous. We denote homeomorphisms with the notation `≃ₜ`.
# Main definitions
-* `Homeomorph α β`: The type of homeomorphisms from `α` to `β`.
- This type can be denoted using the following notation: `α ≃ₜ β`.
+* `Homeomorph X Y`: The type of homeomorphisms from `X` to `Y`.
+ This type can be denoted using the following notation: `X ≃ₜ Y`.
# Main results
@@ -32,12 +32,12 @@ open Set Filter
open Topology
-variable {α : Type*} {β : Type*} {γ : Type*} {δ : Type*}
+variable {X : Type*} {Y : Type*} {Z : Type*}
-- not all spaces are homeomorphic to each other
-/-- Homeomorphism between `α` and `β`, also called topological isomorphism -/
-structure Homeomorph (α : Type*) (β : Type*) [TopologicalSpace α] [TopologicalSpace β]
- extends α ≃ β where
+/-- Homeomorphism between `X` and `Y`, also called topological isomorphism -/
+structure Homeomorph (X : Type*) (Y : Type*) [TopologicalSpace X] [TopologicalSpace Y]
+ extends X ≃ Y where
/-- The forward map of a homeomorphism is a continuous function. -/
continuous_toFun : Continuous toFun := by continuity
/-- The inverse map of a homeomorphism is a continuous function. -/
@@ -49,139 +49,140 @@ infixl:25 " ≃ₜ " => Homeomorph
namespace Homeomorph
-variable [TopologicalSpace α] [TopologicalSpace β] [TopologicalSpace γ] [TopologicalSpace δ]
+variable [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
+ {X' Y' : Type*} [TopologicalSpace X'] [TopologicalSpace Y']
-theorem toEquiv_injective : Function.Injective (toEquiv : α ≃ₜ β → α ≃ β)
+theorem toEquiv_injective : Function.Injective (toEquiv : X ≃ₜ Y → X ≃ Y)
| ⟨_, _, _⟩, ⟨_, _, _⟩, rfl => rfl
#align homeomorph.to_equiv_injective Homeomorph.toEquiv_injective
-instance : EquivLike (α ≃ₜ β) α β where
+instance : EquivLike (X ≃ₜ Y) X Y where
coe := fun h => h.toEquiv
inv := fun h => h.toEquiv.symm
left_inv := fun h => h.left_inv
right_inv := fun h => h.right_inv
coe_injective' := fun _ _ H _ => toEquiv_injective <| FunLike.ext' H
-instance : CoeFun (α ≃ₜ β) fun _ ↦ α → β := ⟨FunLike.coe⟩
+instance : CoeFun (X ≃ₜ Y) fun _ ↦ X → Y := ⟨FunLike.coe⟩
-@[simp]
-theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
+@[simp] theorem homeomorph_mk_coe (a : X ≃ Y) (b c) : (Homeomorph.mk a b c : X → Y) = a :=
rfl
#align homeomorph.homeomorph_mk_coe Homeomorph.homeomorph_mk_coe
/-- Inverse of a homeomorphism. -/
-protected def symm (h : α ≃ₜ β) : β ≃ₜ α where
+protected def symm (h : X ≃ₜ Y) : Y ≃ₜ X where
continuous_toFun := h.continuous_invFun
continuous_invFun := h.continuous_toFun
toEquiv := h.toEquiv.symm
#align homeomorph.symm Homeomorph.symm
-@[simp] theorem symm_symm (h : α ≃ₜ β) : h.symm.symm = h := rfl
+@[simp] theorem symm_symm (h : X ≃ₜ Y) : h.symm.symm = h := rfl
#align homeomorph.symm_symm Homeomorph.symm_symm
/-- See Note [custom simps projection] -/
-def Simps.symm_apply (h : α ≃ₜ β) : β → α :=
+def Simps.symm_apply (h : X ≃ₜ Y) : Y → X :=
h.symm
#align homeomorph.simps.symm_apply Homeomorph.Simps.symm_apply
initialize_simps_projections Homeomorph (toFun → apply, invFun → symm_apply)
@[simp]
-theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
+theorem coe_toEquiv (h : X ≃ₜ Y) : ⇑h.toEquiv = h :=
rfl
#align homeomorph.coe_to_equiv Homeomorph.coe_toEquiv
@[simp]
-theorem coe_symm_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv.symm = h.symm :=
+theorem coe_symm_toEquiv (h : X ≃ₜ Y) : ⇑h.toEquiv.symm = h.symm :=
rfl
#align homeomorph.coe_symm_to_equiv Homeomorph.coe_symm_toEquiv
@[ext]
-theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
+theorem ext {h h' : X ≃ₜ Y} (H : ∀ x, h x = h' x) : h = h' :=
FunLike.ext _ _ H
#align homeomorph.ext Homeomorph.ext
/-- Identity map as a homeomorphism. -/
@[simps! (config := { fullyApplied := false }) apply]
-protected def refl (α : Type*) [TopologicalSpace α] : α ≃ₜ α where
+protected def refl (X : Type*) [TopologicalSpace X] : X ≃ₜ X where
continuous_toFun := continuous_id
continuous_invFun := continuous_id
- toEquiv := Equiv.refl α
+ toEquiv := Equiv.refl X
#align homeomorph.refl Homeomorph.refl
/-- Composition of two homeomorphisms. -/
-protected def trans (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) : α ≃ₜ γ where
+protected def trans (h₁ : X ≃ₜ Y) (h₂ : Y ≃ₜ Z) : X ≃ₜ Z where
continuous_toFun := h₂.continuous_toFun.comp h₁.continuous_toFun
continuous_invFun := h₁.continuous_invFun.comp h₂.continuous_invFun
toEquiv := Equiv.trans h₁.toEquiv h₂.toEquiv
#align homeomorph.trans Homeomorph.trans
@[simp]
-theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.trans h₂ a = h₂ (h₁ a) :=
+theorem trans_apply (h₁ : X ≃ₜ Y) (h₂ : Y ≃ₜ Z) (x : X) : h₁.trans h₂ x = h₂ (h₁ x) :=
rfl
#align homeomorph.trans_apply Homeomorph.trans_apply
-@[simp] theorem symm_trans_apply (f : α ≃ₜ β) (g : β ≃ₜ γ) (a : γ) :
- (f.trans g).symm a = f.symm (g.symm a) := rfl
+@[simp]
+theorem symm_trans_apply (f : X ≃ₜ Y) (g : Y ≃ₜ Z) (z : Z) :
+ (f.trans g).symm z = f.symm (g.symm z) := rfl
@[simp]
-theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
- ((Homeomorph.mk a b c).symm : β → α) = a.symm :=
+theorem homeomorph_mk_coe_symm (a : X ≃ Y) (b c) :
+ ((Homeomorph.mk a b c).symm : Y → X) = a.symm :=
rfl
#align homeomorph.homeomorph_mk_coe_symm Homeomorph.homeomorph_mk_coe_symm
@[simp]
-theorem refl_symm : (Homeomorph.refl α).symm = Homeomorph.refl α :=
+theorem refl_symm : (Homeomorph.refl X).symm = Homeomorph.refl X :=
rfl
#align homeomorph.refl_symm Homeomorph.refl_symm
@[continuity]
-protected theorem continuous (h : α ≃ₜ β) : Continuous h :=
+protected theorem continuous (h : X ≃ₜ Y) : Continuous h :=
h.continuous_toFun
#align homeomorph.continuous Homeomorph.continuous
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
@[continuity]
-protected theorem continuous_symm (h : α ≃ₜ β) : Continuous h.symm :=
+protected theorem continuous_symm (h : X ≃ₜ Y) : Continuous h.symm :=
h.continuous_invFun
#align homeomorph.continuous_symm Homeomorph.continuous_symm
@[simp]
-theorem apply_symm_apply (h : α ≃ₜ β) (x : β) : h (h.symm x) = x :=
- h.toEquiv.apply_symm_apply x
+theorem apply_symm_apply (h : X ≃ₜ Y) (y : Y) : h (h.symm y) = y :=
+ h.toEquiv.apply_symm_apply y
#align homeomorph.apply_symm_apply Homeomorph.apply_symm_apply
@[simp]
-theorem symm_apply_apply (h : α ≃ₜ β) (x : α) : h.symm (h x) = x :=
+theorem symm_apply_apply (h : X ≃ₜ Y) (x : X) : h.symm (h x) = x :=
h.toEquiv.symm_apply_apply x
#align homeomorph.symm_apply_apply Homeomorph.symm_apply_apply
@[simp]
-theorem self_trans_symm (h : α ≃ₜ β) : h.trans h.symm = Homeomorph.refl α := by
+theorem self_trans_symm (h : X ≃ₜ Y) : h.trans h.symm = Homeomorph.refl X := by
ext
apply symm_apply_apply
#align homeomorph.self_trans_symm Homeomorph.self_trans_symm
@[simp]
-theorem symm_trans_self (h : α ≃ₜ β) : h.symm.trans h = Homeomorph.refl β := by
+theorem symm_trans_self (h : X ≃ₜ Y) : h.symm.trans h = Homeomorph.refl Y := by
ext
apply apply_symm_apply
#align homeomorph.symm_trans_self Homeomorph.symm_trans_self
-protected theorem bijective (h : α ≃ₜ β) : Function.Bijective h :=
+protected theorem bijective (h : X ≃ₜ Y) : Function.Bijective h :=
h.toEquiv.bijective
#align homeomorph.bijective Homeomorph.bijective
-protected theorem injective (h : α ≃ₜ β) : Function.Injective h :=
+protected theorem injective (h : X ≃ₜ Y) : Function.Injective h :=
h.toEquiv.injective
#align homeomorph.injective Homeomorph.injective
-protected theorem surjective (h : α ≃ₜ β) : Function.Surjective h :=
+protected theorem surjective (h : X ≃ₜ Y) : Function.Surjective h :=
h.toEquiv.surjective
#align homeomorph.surjective Homeomorph.surjective
/-- Change the homeomorphism `f` to make the inverse function definitionally equal to `g`. -/
-def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f) : α ≃ₜ β :=
+def changeInv (f : X ≃ₜ Y) (g : Y → X) (hg : Function.RightInverse g f) : X ≃ₜ Y :=
haveI : g = f.symm := (f.left_inv.eq_rightInverse hg).symm
{ toFun := f
invFun := g
@@ -192,236 +193,236 @@ def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f
#align homeomorph.change_inv Homeomorph.changeInv
@[simp]
-theorem symm_comp_self (h : α ≃ₜ β) : h.symm ∘ h = id :=
+theorem symm_comp_self (h : X ≃ₜ Y) : h.symm ∘ h = id :=
funext h.symm_apply_apply
#align homeomorph.symm_comp_self Homeomorph.symm_comp_self
@[simp]
-theorem self_comp_symm (h : α ≃ₜ β) : h ∘ h.symm = id :=
+theorem self_comp_symm (h : X ≃ₜ Y) : h ∘ h.symm = id :=
funext h.apply_symm_apply
#align homeomorph.self_comp_symm Homeomorph.self_comp_symm
@[simp]
-theorem range_coe (h : α ≃ₜ β) : range h = univ :=
+theorem range_coe (h : X ≃ₜ Y) : range h = univ :=
h.surjective.range_eq
#align homeomorph.range_coe Homeomorph.range_coe
-theorem image_symm (h : α ≃ₜ β) : image h.symm = preimage h :=
+theorem image_symm (h : X ≃ₜ Y) : image h.symm = preimage h :=
funext h.symm.toEquiv.image_eq_preimage
#align homeomorph.image_symm Homeomorph.image_symm
-theorem preimage_symm (h : α ≃ₜ β) : preimage h.symm = image h :=
+theorem preimage_symm (h : X ≃ₜ Y) : preimage h.symm = image h :=
(funext h.toEquiv.image_eq_preimage).symm
#align homeomorph.preimage_symm Homeomorph.preimage_symm
@[simp]
-theorem image_preimage (h : α ≃ₜ β) (s : Set β) : h '' (h ⁻¹' s) = s :=
+theorem image_preimage (h : X ≃ₜ Y) (s : Set Y) : h '' (h ⁻¹' s) = s :=
h.toEquiv.image_preimage s
#align homeomorph.image_preimage Homeomorph.image_preimage
@[simp]
-theorem preimage_image (h : α ≃ₜ β) (s : Set α) : h ⁻¹' (h '' s) = s :=
+theorem preimage_image (h : X ≃ₜ Y) (s : Set X) : h ⁻¹' (h '' s) = s :=
h.toEquiv.preimage_image s
#align homeomorph.preimage_image Homeomorph.preimage_image
-protected theorem inducing (h : α ≃ₜ β) : Inducing h :=
+protected theorem inducing (h : X ≃ₜ Y) : Inducing h :=
inducing_of_inducing_compose h.continuous h.symm.continuous <| by
simp only [symm_comp_self, inducing_id]
#align homeomorph.inducing Homeomorph.inducing
-theorem induced_eq (h : α ≃ₜ β) : TopologicalSpace.induced h ‹_› = ‹_› :=
+theorem induced_eq (h : X ≃ₜ Y) : TopologicalSpace.induced h ‹_› = ‹_› :=
h.inducing.1.symm
#align homeomorph.induced_eq Homeomorph.induced_eq
-protected theorem quotientMap (h : α ≃ₜ β) : QuotientMap h :=
+protected theorem quotientMap (h : X ≃ₜ Y) : QuotientMap h :=
QuotientMap.of_quotientMap_compose h.symm.continuous h.continuous <| by
simp only [self_comp_symm, QuotientMap.id]
#align homeomorph.quotient_map Homeomorph.quotientMap
-theorem coinduced_eq (h : α ≃ₜ β) : TopologicalSpace.coinduced h ‹_› = ‹_› :=
+theorem coinduced_eq (h : X ≃ₜ Y) : TopologicalSpace.coinduced h ‹_› = ‹_› :=
h.quotientMap.2.symm
#align homeomorph.coinduced_eq Homeomorph.coinduced_eq
-protected theorem embedding (h : α ≃ₜ β) : Embedding h :=
+protected theorem embedding (h : X ≃ₜ Y) : Embedding h :=
⟨h.inducing, h.injective⟩
#align homeomorph.embedding Homeomorph.embedding
/-- Homeomorphism given an embedding. -/
-noncomputable def ofEmbedding (f : α → β) (hf : Embedding f) : α ≃ₜ Set.range f where
+noncomputable def ofEmbedding (f : X → Y) (hf : Embedding f) : X ≃ₜ Set.range f where
continuous_toFun := hf.continuous.subtype_mk _
continuous_invFun := hf.continuous_iff.2 <| by simp [continuous_subtype_val]
toEquiv := Equiv.ofInjective f hf.inj
#align homeomorph.of_embedding Homeomorph.ofEmbedding
-protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopology β]
- (h : α ≃ₜ β) : TopologicalSpace.SecondCountableTopology α :=
+protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopology Y]
+ (h : X ≃ₜ Y) : TopologicalSpace.SecondCountableTopology X :=
h.inducing.secondCountableTopology
#align homeomorph.second_countable_topology Homeomorph.secondCountableTopology
-/-- If `h : α → β` is a homeomorphism, `h(s)` is compact iff `s` is. -/
+/-- If `h : X → Y` is a homeomorphism, `h(s)` is compact iff `s` is. -/
@[simp]
-theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔ IsCompact s :=
+theorem isCompact_image {s : Set X} (h : X ≃ₜ Y) : IsCompact (h '' s) ↔ IsCompact s :=
h.embedding.isCompact_iff_isCompact_image.symm
#align homeomorph.is_compact_image Homeomorph.isCompact_image
-/-- If `h : α → β` is a homeomorphism, `h⁻¹(s)` is compact iff `s` is. -/
+/-- If `h : X → Y` is a homeomorphism, `h⁻¹(s)` is compact iff `s` is. -/
@[simp]
-theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹' s) ↔ IsCompact s := by
+theorem isCompact_preimage {s : Set Y} (h : X ≃ₜ Y) : IsCompact (h ⁻¹' s) ↔ IsCompact s := by
rw [← image_symm]; exact h.symm.isCompact_image
#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimage
@[simp]
-theorem isPreconnected_image {s : Set α} (h : α ≃ₜ β) :
+theorem isPreconnected_image {s : Set X} (h : X ≃ₜ Y) :
IsPreconnected (h '' s) ↔ IsPreconnected s :=
⟨fun hs ↦ by simpa only [image_symm, preimage_image]
using hs.image _ h.symm.continuous.continuousOn,
fun hs ↦ hs.image _ h.continuous.continuousOn⟩
@[simp]
-theorem isPreconnected_preimage {s : Set β} (h : α ≃ₜ β) :
+theorem isPreconnected_preimage {s : Set Y} (h : X ≃ₜ Y) :
IsPreconnected (h ⁻¹' s) ↔ IsPreconnected s := by
rw [← image_symm, isPreconnected_image]
@[simp]
-theorem isConnected_image {s : Set α} (h : α ≃ₜ β) :
+theorem isConnected_image {s : Set X} (h : X ≃ₜ Y) :
IsConnected (h '' s) ↔ IsConnected s :=
nonempty_image_iff.and h.isPreconnected_image
@[simp]
-theorem isConnected_preimage {s : Set β} (h : α ≃ₜ β) :
+theorem isConnected_preimage {s : Set Y} (h : X ≃ₜ Y) :
IsConnected (h ⁻¹' s) ↔ IsConnected s := by
rw [← image_symm, isConnected_image]
@[simp]
-theorem comap_cocompact (h : α ≃ₜ β) : comap h (cocompact β) = cocompact α :=
+theorem comap_cocompact (h : X ≃ₜ Y) : comap h (cocompact Y) = cocompact X :=
(comap_cocompact_le h.continuous).antisymm <|
(hasBasis_cocompact.le_basis_iff (hasBasis_cocompact.comap h)).2 fun K hK =>
⟨h ⁻¹' K, h.isCompact_preimage.2 hK, Subset.rfl⟩
#align homeomorph.comap_cocompact Homeomorph.comap_cocompact
@[simp]
-theorem map_cocompact (h : α ≃ₜ β) : map h (cocompact α) = cocompact β := by
+theorem map_cocompact (h : X ≃ₜ Y) : map h (cocompact X) = cocompact Y := by
rw [← h.comap_cocompact, map_comap_of_surjective h.surjective]
#align homeomorph.map_cocompact Homeomorph.map_cocompact
-protected theorem compactSpace [CompactSpace α] (h : α ≃ₜ β) : CompactSpace β where
+protected theorem compactSpace [CompactSpace X] (h : X ≃ₜ Y) : CompactSpace Y where
isCompact_univ := h.symm.isCompact_preimage.2 isCompact_univ
#align homeomorph.compact_space Homeomorph.compactSpace
-protected theorem t0Space [T0Space α] (h : α ≃ₜ β) : T0Space β :=
+protected theorem t0Space [T0Space X] (h : X ≃ₜ Y) : T0Space Y :=
h.symm.embedding.t0Space
#align homeomorph.t0_space Homeomorph.t0Space
-protected theorem t1Space [T1Space α] (h : α ≃ₜ β) : T1Space β :=
+protected theorem t1Space [T1Space X] (h : X ≃ₜ Y) : T1Space Y :=
h.symm.embedding.t1Space
#align homeomorph.t1_space Homeomorph.t1Space
-protected theorem t2Space [T2Space α] (h : α ≃ₜ β) : T2Space β :=
+protected theorem t2Space [T2Space X] (h : X ≃ₜ Y) : T2Space Y :=
h.symm.embedding.t2Space
#align homeomorph.t2_space Homeomorph.t2Space
-protected theorem t3Space [T3Space α] (h : α ≃ₜ β) : T3Space β :=
+protected theorem t3Space [T3Space X] (h : X ≃ₜ Y) : T3Space Y :=
h.symm.embedding.t3Space
#align homeomorph.t3_space Homeomorph.t3Space
-protected theorem denseEmbedding (h : α ≃ₜ β) : DenseEmbedding h :=
+protected theorem denseEmbedding (h : X ≃ₜ Y) : DenseEmbedding h :=
{ h.embedding with dense := h.surjective.denseRange }
#align homeomorph.dense_embedding Homeomorph.denseEmbedding
@[simp]
-theorem isOpen_preimage (h : α ≃ₜ β) {s : Set β} : IsOpen (h ⁻¹' s) ↔ IsOpen s :=
+theorem isOpen_preimage (h : X ≃ₜ Y) {s : Set Y} : IsOpen (h ⁻¹' s) ↔ IsOpen s :=
h.quotientMap.isOpen_preimage
#align homeomorph.is_open_preimage Homeomorph.isOpen_preimage
@[simp]
-theorem isOpen_image (h : α ≃ₜ β) {s : Set α} : IsOpen (h '' s) ↔ IsOpen s := by
+theorem isOpen_image (h : X ≃ₜ Y) {s : Set X} : IsOpen (h '' s) ↔ IsOpen s := by
rw [← preimage_symm, isOpen_preimage]
#align homeomorph.is_open_image Homeomorph.isOpen_image
-protected theorem isOpenMap (h : α ≃ₜ β) : IsOpenMap h := fun _ => h.isOpen_image.2
+protected theorem isOpenMap (h : X ≃ₜ Y) : IsOpenMap h := fun _ => h.isOpen_image.2
#align homeomorph.is_open_map Homeomorph.isOpenMap
@[simp]
-theorem isClosed_preimage (h : α ≃ₜ β) {s : Set β} : IsClosed (h ⁻¹' s) ↔ IsClosed s := by
+theorem isClosed_preimage (h : X ≃ₜ Y) {s : Set Y} : IsClosed (h ⁻¹' s) ↔ IsClosed s := by
simp only [← isOpen_compl_iff, ← preimage_compl, isOpen_preimage]
#align homeomorph.is_closed_preimage Homeomorph.isClosed_preimage
@[simp]
-theorem isClosed_image (h : α ≃ₜ β) {s : Set α} : IsClosed (h '' s) ↔ IsClosed s := by
+theorem isClosed_image (h : X ≃ₜ Y) {s : Set X} : IsClosed (h '' s) ↔ IsClosed s := by
rw [← preimage_symm, isClosed_preimage]
#align homeomorph.is_closed_image Homeomorph.isClosed_image
-protected theorem isClosedMap (h : α ≃ₜ β) : IsClosedMap h := fun _ => h.isClosed_image.2
+protected theorem isClosedMap (h : X ≃ₜ Y) : IsClosedMap h := fun _ => h.isClosed_image.2
#align homeomorph.is_closed_map Homeomorph.isClosedMap
-protected theorem openEmbedding (h : α ≃ₜ β) : OpenEmbedding h :=
+protected theorem openEmbedding (h : X ≃ₜ Y) : OpenEmbedding h :=
openEmbedding_of_embedding_open h.embedding h.isOpenMap
#align homeomorph.open_embedding Homeomorph.openEmbedding
-protected theorem closedEmbedding (h : α ≃ₜ β) : ClosedEmbedding h :=
+protected theorem closedEmbedding (h : X ≃ₜ Y) : ClosedEmbedding h :=
closedEmbedding_of_embedding_closed h.embedding h.isClosedMap
#align homeomorph.closed_embedding Homeomorph.closedEmbedding
-protected theorem normalSpace [NormalSpace α] (h : α ≃ₜ β) : NormalSpace β :=
+protected theorem normalSpace [NormalSpace X] (h : X ≃ₜ Y) : NormalSpace Y :=
h.symm.closedEmbedding.normalSpace
-protected theorem t4Space [T4Space α] (h : α ≃ₜ β) : T4Space β :=
+protected theorem t4Space [T4Space X] (h : X ≃ₜ Y) : T4Space Y :=
h.symm.closedEmbedding.t4Space
#align homeomorph.normal_space Homeomorph.t4Space
-theorem preimage_closure (h : α ≃ₜ β) (s : Set β) : h ⁻¹' closure s = closure (h ⁻¹' s) :=
+theorem preimage_closure (h : X ≃ₜ Y) (s : Set Y) : h ⁻¹' closure s = closure (h ⁻¹' s) :=
h.isOpenMap.preimage_closure_eq_closure_preimage h.continuous _
#align homeomorph.preimage_closure Homeomorph.preimage_closure
-theorem image_closure (h : α ≃ₜ β) (s : Set α) : h '' closure s = closure (h '' s) := by
+theorem image_closure (h : X ≃ₜ Y) (s : Set X) : h '' closure s = closure (h '' s) := by
rw [← preimage_symm, preimage_closure]
#align homeomorph.image_closure Homeomorph.image_closure
-theorem preimage_interior (h : α ≃ₜ β) (s : Set β) : h ⁻¹' interior s = interior (h ⁻¹' s) :=
+theorem preimage_interior (h : X ≃ₜ Y) (s : Set Y) : h ⁻¹' interior s = interior (h ⁻¹' s) :=
h.isOpenMap.preimage_interior_eq_interior_preimage h.continuous _
#align homeomorph.preimage_interior Homeomorph.preimage_interior
-theorem image_interior (h : α ≃ₜ β) (s : Set α) : h '' interior s = interior (h '' s) := by
+theorem image_interior (h : X ≃ₜ Y) (s : Set X) : h '' interior s = interior (h '' s) := by
rw [← preimage_symm, preimage_interior]
#align homeomorph.image_interior Homeomorph.image_interior
-theorem preimage_frontier (h : α ≃ₜ β) (s : Set β) : h ⁻¹' frontier s = frontier (h ⁻¹' s) :=
+theorem preimage_frontier (h : X ≃ₜ Y) (s : Set Y) : h ⁻¹' frontier s = frontier (h ⁻¹' s) :=
h.isOpenMap.preimage_frontier_eq_frontier_preimage h.continuous _
#align homeomorph.preimage_frontier Homeomorph.preimage_frontier
-theorem image_frontier (h : α ≃ₜ β) (s : Set α) : h '' frontier s = frontier (h '' s) := by
+theorem image_frontier (h : X ≃ₜ Y) (s : Set X) : h '' frontier s = frontier (h '' s) := by
rw [← preimage_symm, preimage_frontier]
#align homeomorph.image_frontier Homeomorph.image_frontier
@[to_additive]
-theorem _root_.HasCompactMulSupport.comp_homeomorph {M} [One M] {f : β → M}
- (hf : HasCompactMulSupport f) (φ : α ≃ₜ β) : HasCompactMulSupport (f ∘ φ) :=
+theorem _root_.HasCompactMulSupport.comp_homeomorph {M} [One M] {f : Y → M}
+ (hf : HasCompactMulSupport f) (φ : X ≃ₜ Y) : HasCompactMulSupport (f ∘ φ) :=
hf.comp_closedEmbedding φ.closedEmbedding
#align has_compact_mul_support.comp_homeomorph HasCompactMulSupport.comp_homeomorph
#align has_compact_support.comp_homeomorph HasCompactSupport.comp_homeomorph
@[simp]
-theorem map_nhds_eq (h : α ≃ₜ β) (x : α) : map h (𝓝 x) = 𝓝 (h x) :=
+theorem map_nhds_eq (h : X ≃ₜ Y) (x : X) : map h (𝓝 x) = 𝓝 (h x) :=
h.embedding.map_nhds_of_mem _ (by simp)
#align homeomorph.map_nhds_eq Homeomorph.map_nhds_eq
-theorem symm_map_nhds_eq (h : α ≃ₜ β) (x : α) : map h.symm (𝓝 (h x)) = 𝓝 x := by
+theorem symm_map_nhds_eq (h : X ≃ₜ Y) (x : X) : map h.symm (𝓝 (h x)) = 𝓝 x := by
rw [h.symm.map_nhds_eq, h.symm_apply_apply]
#align homeomorph.symm_map_nhds_eq Homeomorph.symm_map_nhds_eq
-theorem nhds_eq_comap (h : α ≃ₜ β) (x : α) : 𝓝 x = comap h (𝓝 (h x)) :=
+theorem nhds_eq_comap (h : X ≃ₜ Y) (x : X) : 𝓝 x = comap h (𝓝 (h x)) :=
h.inducing.nhds_eq_comap x
#align homeomorph.nhds_eq_comap Homeomorph.nhds_eq_comap
@[simp]
-theorem comap_nhds_eq (h : α ≃ₜ β) (y : β) : comap h (𝓝 y) = 𝓝 (h.symm y) := by
+theorem comap_nhds_eq (h : X ≃ₜ Y) (y : Y) : comap h (𝓝 y) = 𝓝 (h.symm y) := by
rw [h.nhds_eq_comap, h.apply_symm_apply]
#align homeomorph.comap_nhds_eq Homeomorph.comap_nhds_eq
/-- If the codomain of a homeomorphism is a locally connected space, then the domain is also
a locally connected space. -/
-theorem locallyConnectedSpace [i : LocallyConnectedSpace β] (h : α ≃ₜ β) :
- LocallyConnectedSpace α := by
+theorem locallyConnectedSpace [i : LocallyConnectedSpace Y] (h : X ≃ₜ Y) :
+ LocallyConnectedSpace X := by
have : ∀ x, (𝓝 x).HasBasis (fun s ↦ IsOpen s ∧ h x ∈ s ∧ IsConnected s)
(h.symm '' ·) := fun x ↦ by
rw [← h.symm_map_nhds_eq]
@@ -429,8 +430,8 @@ theorem locallyConnectedSpace [i : LocallyConnectedSpace β] (h : α ≃ₜ β)
refine locallyConnectedSpace_of_connected_bases _ _ this fun _ _ hs ↦ ?_
exact hs.2.2.2.image _ h.symm.continuous.continuousOn
-/-- If a bijective map `e : α ≃ β` is continuous and open, then it is a homeomorphism. -/
-def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsOpenMap e) : α ≃ₜ β where
+/-- If a bijective map `e : X ≃ Y` is continuous and open, then it is a homeomorphism. -/
+def homeomorphOfContinuousOpen (e : X ≃ Y) (h₁ : Continuous e) (h₂ : IsOpenMap e) : X ≃ₜ Y where
continuous_toFun := h₁
continuous_invFun := by
rw [continuous_def]
@@ -441,38 +442,38 @@ def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsO
#align homeomorph.homeomorph_of_continuous_open Homeomorph.homeomorphOfContinuousOpen
@[simp]
-theorem comp_continuousOn_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) :
+theorem comp_continuousOn_iff (h : X ≃ₜ Y) (f : Z → X) (s : Set Z) :
ContinuousOn (h ∘ f) s ↔ ContinuousOn f s :=
h.inducing.continuousOn_iff.symm
#align homeomorph.comp_continuous_on_iff Homeomorph.comp_continuousOn_iff
@[simp]
-theorem comp_continuous_iff (h : α ≃ₜ β) {f : γ → α} : Continuous (h ∘ f) ↔ Continuous f :=
+theorem comp_continuous_iff (h : X ≃ₜ Y) {f : Z → X} : Continuous (h ∘ f) ↔ Continuous f :=
h.inducing.continuous_iff.symm
#align homeomorph.comp_continuous_iff Homeomorph.comp_continuous_iff
@[simp]
-theorem comp_continuous_iff' (h : α ≃ₜ β) {f : β → γ} : Continuous (f ∘ h) ↔ Continuous f :=
+theorem comp_continuous_iff' (h : X ≃ₜ Y) {f : Y → Z} : Continuous (f ∘ h) ↔ Continuous f :=
h.quotientMap.continuous_iff.symm
#align homeomorph.comp_continuous_iff' Homeomorph.comp_continuous_iff'
-theorem comp_continuousAt_iff (h : α ≃ₜ β) (f : γ → α) (x : γ) :
- ContinuousAt (h ∘ f) x ↔ ContinuousAt f x :=
+theorem comp_continuousAt_iff (h : X ≃ₜ Y) (f : Z → X) (z : Z) :
+ ContinuousAt (h ∘ f) z ↔ ContinuousAt f z :=
h.inducing.continuousAt_iff.symm
#align homeomorph.comp_continuous_at_iff Homeomorph.comp_continuousAt_iff
-theorem comp_continuousAt_iff' (h : α ≃ₜ β) (f : β → γ) (x : α) :
+theorem comp_continuousAt_iff' (h : X ≃ₜ Y) (f : Y → Z) (x : X) :
ContinuousAt (f ∘ h) x ↔ ContinuousAt f (h x) :=
h.inducing.continuousAt_iff' (by simp)
#align homeomorph.comp_continuous_at_iff' Homeomorph.comp_continuousAt_iff'
-theorem comp_continuousWithinAt_iff (h : α ≃ₜ β) (f : γ → α) (s : Set γ) (x : γ) :
- ContinuousWithinAt f s x ↔ ContinuousWithinAt (h ∘ f) s x :=
+theorem comp_continuousWithinAt_iff (h : X ≃ₜ Y) (f : Z → X) (s : Set Z) (z : Z) :
+ ContinuousWithinAt f s z ↔ ContinuousWithinAt (h ∘ f) s z :=
h.inducing.continuousWithinAt_iff
#align homeomorph.comp_continuous_within_at_iff Homeomorph.comp_continuousWithinAt_iff
@[simp]
-theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘ f) ↔ IsOpenMap f := by
+theorem comp_isOpenMap_iff (h : X ≃ₜ Y) {f : Z → X} : IsOpenMap (h ∘ f) ↔ IsOpenMap f := by
refine' ⟨_, fun hf => h.isOpenMap.comp hf⟩
intro hf
rw [← Function.comp.left_id f, ← h.symm_comp_self, Function.comp.assoc]
@@ -480,7 +481,7 @@ theorem comp_isOpenMap_iff (h : α ≃ₜ β) {f : γ → α} : IsOpenMap (h ∘
#align homeomorph.comp_is_open_map_iff Homeomorph.comp_isOpenMap_iff
@[simp]
-theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f ∘ h) ↔ IsOpenMap f := by
+theorem comp_isOpenMap_iff' (h : X ≃ₜ Y) {f : Y → Z} : IsOpenMap (f ∘ h) ↔ IsOpenMap f := by
refine' ⟨_, fun hf => hf.comp h.isOpenMap⟩
intro hf
rw [← Function.comp.right_id f, ← h.self_comp_symm, ← Function.comp.assoc]
@@ -488,85 +489,85 @@ theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f
#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'
/-- If two sets are equal, then they are homeomorphic. -/
-def setCongr {s t : Set α} (h : s = t) : s ≃ₜ t where
+def setCongr {s t : Set X} (h : s = t) : s ≃ₜ t where
continuous_toFun := continuous_inclusion h.subset
continuous_invFun := continuous_inclusion h.symm.subset
toEquiv := Equiv.setCongr h
#align homeomorph.set_congr Homeomorph.setCongr
/-- Sum of two homeomorphisms. -/
-def sumCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : Sum α γ ≃ₜ Sum β δ where
+def sumCongr (h₁ : X ≃ₜ X') (h₂ : Y ≃ₜ Y') : Sum X Y ≃ₜ Sum X' Y' where
continuous_toFun := h₁.continuous.sum_map h₂.continuous
continuous_invFun := h₁.symm.continuous.sum_map h₂.symm.continuous
toEquiv := h₁.toEquiv.sumCongr h₂.toEquiv
#align homeomorph.sum_congr Homeomorph.sumCongr
/-- Product of two homeomorphisms. -/
-def prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : α × γ ≃ₜ β × δ where
+def prodCongr (h₁ : X ≃ₜ X') (h₂ : Y ≃ₜ Y') : X × Y ≃ₜ X' × Y' where
continuous_toFun := h₁.continuous.prod_map h₂.continuous
continuous_invFun := h₁.symm.continuous.prod_map h₂.symm.continuous
toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
#align homeomorph.prod_congr Homeomorph.prodCongr
@[simp]
-theorem prodCongr_symm (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) :
+theorem prodCongr_symm (h₁ : X ≃ₜ X') (h₂ : Y ≃ₜ Y') :
(h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm :=
rfl
#align homeomorph.prod_congr_symm Homeomorph.prodCongr_symm
@[simp]
-theorem coe_prodCongr (h₁ : α ≃ₜ β) (h₂ : γ ≃ₜ δ) : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
+theorem coe_prodCongr (h₁ : X ≃ₜ X') (h₂ : Y ≃ₜ Y') : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
rfl
#align homeomorph.coe_prod_congr Homeomorph.coe_prodCongr
section
-variable (α β γ)
+variable (X Y Z)
-/-- `α × β` is homeomorphic to `β × α`. -/
-def prodComm : α × β ≃ₜ β × α where
+/-- `X × Y` is homeomorphic to `Y × X`. -/
+def prodComm : X × Y ≃ₜ Y × X where
continuous_toFun := continuous_snd.prod_mk continuous_fst
continuous_invFun := continuous_snd.prod_mk continuous_fst
- toEquiv := Equiv.prodComm α β
+ toEquiv := Equiv.prodComm X Y
#align homeomorph.prod_comm Homeomorph.prodComm
@[simp]
-theorem prodComm_symm : (prodComm α β).symm = prodComm β α :=
+theorem prodComm_symm : (prodComm X Y).symm = prodComm Y X :=
rfl
#align homeomorph.prod_comm_symm Homeomorph.prodComm_symm
@[simp]
-theorem coe_prodComm : ⇑(prodComm α β) = Prod.swap :=
+theorem coe_prodComm : ⇑(prodComm X Y) = Prod.swap :=
rfl
#align homeomorph.coe_prod_comm Homeomorph.coe_prodComm
-/-- `(α × β) × γ` is homeomorphic to `α × (β × γ)`. -/
-def prodAssoc : (α × β) × γ ≃ₜ α × β × γ where
+/-- `(X × Y) × Z` is homeomorphic to `X × (Y × Z)`. -/
+def prodAssoc : (X × Y) × Z ≃ₜ X × Y × Z where
continuous_toFun := continuous_fst.fst.prod_mk (continuous_fst.snd.prod_mk continuous_snd)
continuous_invFun := (continuous_fst.prod_mk continuous_snd.fst).prod_mk continuous_snd.snd
- toEquiv := Equiv.prodAssoc α β γ
+ toEquiv := Equiv.prodAssoc X Y Z
#align homeomorph.prod_assoc Homeomorph.prodAssoc
-/-- `α × {*}` is homeomorphic to `α`. -/
+/-- `X × {*}` is homeomorphic to `X`. -/
@[simps! (config := { fullyApplied := false }) apply]
-def prodPUnit : α × PUnit ≃ₜ α where
- toEquiv := Equiv.prodPUnit α
+def prodPUnit : X × PUnit ≃ₜ X where
+ toEquiv := Equiv.prodPUnit X
continuous_toFun := continuous_fst
continuous_invFun := continuous_id.prod_mk continuous_const
#align homeomorph.prod_punit Homeomorph.prodPUnit
-/-- `{*} × α` is homeomorphic to `α`. -/
-def punitProd : PUnit × α ≃ₜ α :=
+/-- `{*} × X` is homeomorphic to `X`. -/
+def punitProd : PUnit × X ≃ₜ X :=
(prodComm _ _).trans (prodPUnit _)
#align homeomorph.punit_prod Homeomorph.punitProd
-@[simp] theorem coe_punitProd : ⇑(punitProd α) = Prod.snd := rfl
+@[simp] theorem coe_punitProd : ⇑(punitProd X) = Prod.snd := rfl
#align homeomorph.coe_punit_prod Homeomorph.coe_punitProd
-/-- If both `α` and `β` have a unique element, then `α ≃ₜ β`. -/
+/-- If both `X` and `Y` have a unique element, then `X ≃ₜ Y`. -/
@[simps!]
-def homeomorphOfUnique [Unique α] [Unique β] : α ≃ₜ β :=
- { Equiv.equivOfUnique α β with
+def homeomorphOfUnique [Unique X] [Unique Y] : X ≃ₜ Y :=
+ { Equiv.equivOfUnique X Y with
continuous_toFun := continuous_const
continuous_invFun := continuous_const }
#align homeomorph.homeomorph_of_unique Homeomorph.homeomorphOfUnique
@@ -574,44 +575,44 @@ def homeomorphOfUnique [Unique α] [Unique β] : α ≃ₜ β :=
end
/-- `Equiv.piCongrLeft` as a homeomorphism: this is the natural homeomorphism
-`Π i, β (e i) ≃ₜ Π j, β j` obtained from a bijection `ι ≃ ι'`. -/
+`Π i, Y (e i) ≃ₜ Π j, Y j` obtained from a bijection `ι ≃ ι'`. -/
@[simps! apply toEquiv]
-def piCongrLeft {ι ι' : Type*} {β : ι' → Type*} [∀ j, TopologicalSpace (β j)]
- (e : ι ≃ ι') : (∀ i, β (e i)) ≃ₜ ∀ j, β j where
+def piCongrLeft {ι ι' : Type*} {Y : ι' → Type*} [∀ j, TopologicalSpace (Y j)]
+ (e : ι ≃ ι') : (∀ i, Y (e i)) ≃ₜ ∀ j, Y j where
continuous_toFun := continuous_pi <| e.forall_congr_left.mp <| fun i ↦ by
simpa only [Equiv.toFun_as_coe_apply, Equiv.piCongrLeft_apply_apply] using continuous_apply i
continuous_invFun := Pi.continuous_precomp' e
toEquiv := Equiv.piCongrLeft _ e
/-- `Equiv.piCongrRight` as a homeomorphism: this is the natural homeomorphism
-`Π i, β₁ i ≃ₜ Π j, β₂ i` obtained from homeomorphisms `β₁ i ≃ₜ β₂ i` for each `i`. -/
+`Π i, Y₁ i ≃ₜ Π j, Y₂ i` obtained from homeomorphisms `Y₁ i ≃ₜ Y₂ i` for each `i`. -/
@[simps! apply toEquiv]
-def piCongrRight {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, TopologicalSpace (β₁ i)]
- [∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) : (∀ i, β₁ i) ≃ₜ ∀ i, β₂ i where
+def piCongrRight {ι : Type*} {Y₁ Y₂ : ι → Type*} [∀ i, TopologicalSpace (Y₁ i)]
+ [∀ i, TopologicalSpace (Y₂ i)] (F : ∀ i, Y₁ i ≃ₜ Y₂ i) : (∀ i, Y₁ i) ≃ₜ ∀ i, Y₂ i where
continuous_toFun := Pi.continuous_postcomp' fun i ↦ (F i).continuous
continuous_invFun := Pi.continuous_postcomp' fun i ↦ (F i).symm.continuous
toEquiv := Equiv.piCongrRight fun i => (F i).toEquiv
#align homeomorph.Pi_congr_right Homeomorph.piCongrRight
@[simp]
-theorem piCongrRight_symm {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, TopologicalSpace (β₁ i)]
- [∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) :
+theorem piCongrRight_symm {ι : Type*} {Y₁ Y₂ : ι → Type*} [∀ i, TopologicalSpace (Y₁ i)]
+ [∀ i, TopologicalSpace (Y₂ i)] (F : ∀ i, Y₁ i ≃ₜ Y₂ i) :
(piCongrRight F).symm = piCongrRight fun i => (F i).symm :=
rfl
#align homeomorph.Pi_congr_right_symm Homeomorph.piCongrRight_symm
/-- `Equiv.piCongr` as a homeomorphism: this is the natural homeomorphism
-`Π i₁, β₁ i ≃ₜ Π i₂, β₂ i₂` obtained from a bijection `ι₁ ≃ ι₂` and homeomorphisms
-`β₁ i₁ ≃ₜ β₂ (e i₁)` for each `i₁ : ι₁`. -/
+`Π i₁, Y₁ i ≃ₜ Π i₂, Y₂ i₂` obtained from a bijection `ι₁ ≃ ι₂` and homeomorphisms
+`Y₁ i₁ ≃ₜ Y₂ (e i₁)` for each `i₁ : ι₁`. -/
@[simps! apply toEquiv]
-def piCongr {ι₁ ι₂ : Type*} {β₁ : ι₁ → Type*} {β₂ : ι₂ → Type*}
- [∀ i₁, TopologicalSpace (β₁ i₁)] [∀ i₂, TopologicalSpace (β₂ i₂)]
- (e : ι₁ ≃ ι₂) (F : ∀ i₁, β₁ i₁ ≃ₜ β₂ (e i₁)) : (∀ i₁, β₁ i₁) ≃ₜ ∀ i₂, β₂ i₂ :=
+def piCongr {ι₁ ι₂ : Type*} {Y₁ : ι₁ → Type*} {Y₂ : ι₂ → Type*}
+ [∀ i₁, TopologicalSpace (Y₁ i₁)] [∀ i₂, TopologicalSpace (Y₂ i₂)]
+ (e : ι₁ ≃ ι₂) (F : ∀ i₁, Y₁ i₁ ≃ₜ Y₂ (e i₁)) : (∀ i₁, Y₁ i₁) ≃ₜ ∀ i₂, Y₂ i₂ :=
(Homeomorph.piCongrRight F).trans (Homeomorph.piCongrLeft e)
-- porting note: TODO: align the order of universes with `Equiv.ulift`
-/-- `ULift α` is homeomorphic to `α`. -/
-def ulift.{u, v} {α : Type u} [TopologicalSpace α] : ULift.{v, u} α ≃ₜ α where
+/-- `ULift X` is homeomorphic to `X`. -/
+def ulift.{u, v} {X : Type u} [TopologicalSpace X] : ULift.{v, u} X ≃ₜ X where
continuous_toFun := continuous_uLift_down
continuous_invFun := continuous_uLift_up
toEquiv := Equiv.ulift
@@ -619,75 +620,75 @@ def ulift.{u, v} {α : Type u} [TopologicalSpace α] : ULift.{v, u} α ≃ₜ α
section Distrib
-/-- `(α ⊕ β) × γ` is homeomorphic to `α × γ ⊕ β × γ`. -/
-def sumProdDistrib : Sum α β × γ ≃ₜ Sum (α × γ) (β × γ) :=
+/-- `(X ⊕ Y) × Z` is homeomorphic to `X × Z ⊕ Y × Z`. -/
+def sumProdDistrib : Sum X Y × Z ≃ₜ Sum (X × Z) (Y × Z) :=
Homeomorph.symm <|
- homeomorphOfContinuousOpen (Equiv.sumProdDistrib α β γ).symm
+ homeomorphOfContinuousOpen (Equiv.sumProdDistrib X Y Z).symm
((continuous_inl.prod_map continuous_id).sum_elim
(continuous_inr.prod_map continuous_id)) <|
(isOpenMap_inl.prod IsOpenMap.id).sum_elim (isOpenMap_inr.prod IsOpenMap.id)
#align homeomorph.sum_prod_distrib Homeomorph.sumProdDistrib
-/-- `α × (β ⊕ γ)` is homeomorphic to `α × β ⊕ α × γ`. -/
-def prodSumDistrib : α × Sum β γ ≃ₜ Sum (α × β) (α × γ) :=
+/-- `X × (Y ⊕ Z)` is homeomorphic to `X × Y ⊕ X × Z`. -/
+def prodSumDistrib : X × Sum Y Z ≃ₜ Sum (X × Y) (X × Z) :=
(prodComm _ _).trans <| sumProdDistrib.trans <| sumCongr (prodComm _ _) (prodComm _ _)
#align homeomorph.prod_sum_distrib Homeomorph.prodSumDistrib
-variable {ι : Type*} {σ : ι → Type*} [∀ i, TopologicalSpace (σ i)]
+variable {ι : Type*} {X : ι → Type*} [∀ i, TopologicalSpace (X i)]
-/-- `(Σ i, σ i) × β` is homeomorphic to `Σ i, (σ i × β)`. -/
-def sigmaProdDistrib : (Σi, σ i) × β ≃ₜ Σi, σ i × β :=
+/-- `(Σ i, X i) × Y` is homeomorphic to `Σ i, (X i × Y)`. -/
+def sigmaProdDistrib : (Σi, X i) × Y ≃ₜ Σi, X i × Y :=
Homeomorph.symm <|
- homeomorphOfContinuousOpen (Equiv.sigmaProdDistrib σ β).symm
+ homeomorphOfContinuousOpen (Equiv.sigmaProdDistrib X Y).symm
(continuous_sigma fun _ => continuous_sigmaMk.fst'.prod_mk continuous_snd)
(isOpenMap_sigma.2 fun _ => isOpenMap_sigmaMk.prod IsOpenMap.id)
#align homeomorph.sigma_prod_distrib Homeomorph.sigmaProdDistrib
end Distrib
-/-- If `ι` has a unique element, then `ι → α` is homeomorphic to `α`. -/
+/-- If `ι` has a unique element, then `ι → X` is homeomorphic to `X`. -/
@[simps! (config := { fullyApplied := false })]
-def funUnique (ι α : Type*) [Unique ι] [TopologicalSpace α] : (ι → α) ≃ₜ α where
- toEquiv := Equiv.funUnique ι α
+def funUnique (ι X : Type*) [Unique ι] [TopologicalSpace X] : (ι → X) ≃ₜ X where
+ toEquiv := Equiv.funUnique ι X
continuous_toFun := continuous_apply _
continuous_invFun := continuous_pi fun _ => continuous_id
#align homeomorph.fun_unique Homeomorph.funUnique
-/-- Homeomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
+/-- Homeomorphism between dependent functions `Π i : Fin 2, X i` and `X 0 × X 1`. -/
@[simps! (config := { fullyApplied := false })]
-def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀ i, α i) ≃ₜ α 0 × α 1 where
- toEquiv := piFinTwoEquiv α
+def piFinTwo.{u} (X : Fin 2 → Type u) [∀ i, TopologicalSpace (X i)] : (∀ i, X i) ≃ₜ X 0 × X 1 where
+ toEquiv := piFinTwoEquiv X
continuous_toFun := (continuous_apply 0).prod_mk (continuous_apply 1)
continuous_invFun := continuous_pi <| Fin.forall_fin_two.2 ⟨continuous_fst, continuous_snd⟩
#align homeomorph.pi_fin_two Homeomorph.piFinTwo
-/-- Homeomorphism between `α² = Fin 2 → α` and `α × α`. -/
+/-- Homeomorphism between `X² = Fin 2 → X` and `X × X`. -/
@[simps! (config := { fullyApplied := false })]
-def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
- { piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
+def finTwoArrow : (Fin 2 → X) ≃ₜ X × X :=
+ { piFinTwo fun _ => X with toEquiv := finTwoArrowEquiv X }
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
-/
@[simps!]
-def image (e : α ≃ₜ β) (s : Set α) : s ≃ₜ e '' s where
+def image (e : X ≃ₜ Y) (s : Set X) : s ≃ₜ e '' s where
-- porting note: todo: by continuity!
continuous_toFun := e.continuous.continuousOn.restrict_mapsTo (mapsTo_image _ _)
continuous_invFun := (e.symm.continuous.comp continuous_subtype_val).codRestrict _
toEquiv := e.toEquiv.image s
#align homeomorph.image Homeomorph.image
-/-- `Set.univ α` is homeomorphic to `α`. -/
+/-- `Set.univ X` is homeomorphic to `X`. -/
@[simps! (config := { fullyApplied := false })]
-def Set.univ (α : Type*) [TopologicalSpace α] : (univ : Set α) ≃ₜ α where
- toEquiv := Equiv.Set.univ α
+def Set.univ (X : Type*) [TopologicalSpace X] : (univ : Set X) ≃ₜ X where
+ toEquiv := Equiv.Set.univ X
continuous_toFun := continuous_subtype_val
continuous_invFun := continuous_id.subtype_mk _
#align homeomorph.set.univ Homeomorph.Set.univ
/-- `s ×ˢ t` is homeomorphic to `s × t`. -/
@[simps!]
-def Set.prod (s : Set α) (t : Set β) : ↥(s ×ˢ t) ≃ₜ s × t where
+def Set.prod (s : Set X) (t : Set Y) : ↥(s ×ˢ t) ≃ₜ s × t where
toEquiv := Equiv.Set.prod s t
continuous_toFun :=
(continuous_subtype_val.fst.subtype_mk _).prod_mk (continuous_subtype_val.snd.subtype_mk _)
@@ -699,13 +700,13 @@ section
variable {ι : Type*}
-/-- The topological space `Π i, β i` can be split as a product by separating the indices in ι
+/-- The topological space `Π i, Y i` can be split as a product by separating the indices in ι
depending on whether they satisfy a predicate p or not.-/
@[simps!]
-def piEquivPiSubtypeProd (p : ι → Prop) (β : ι → Type*) [∀ i, TopologicalSpace (β i)]
- [DecidablePred p] : (∀ i, β i) ≃ₜ (∀ i : { x // p x }, β i) × ∀ i : { x // ¬p x }, β i
+def piEquivPiSubtypeProd (p : ι → Prop) (Y : ι → Type*) [∀ i, TopologicalSpace (Y i)]
+ [DecidablePred p] : (∀ i, Y i) ≃ₜ (∀ i : { x // p x }, Y i) × ∀ i : { x // ¬p x }, Y i
where
- toEquiv := Equiv.piEquivPiSubtypeProd p β
+ toEquiv := Equiv.piEquivPiSubtypeProd p Y
continuous_toFun := by
apply Continuous.prod_mk <;> exact continuous_pi fun j => continuous_apply j.1
continuous_invFun :=
@@ -719,10 +720,10 @@ variable [DecidableEq ι] (i : ι)
/-- A product of topological spaces can be split as the binary product of one of the spaces and
the product of all the remaining spaces. -/
@[simps!]
-def piSplitAt (β : ι → Type*) [∀ j, TopologicalSpace (β j)] :
- (∀ j, β j) ≃ₜ β i × ∀ j : { j // j ≠ i }, β j
+def piSplitAt (Y : ι → Type*) [∀ j, TopologicalSpace (Y j)] :
+ (∀ j, Y j) ≃ₜ Y i × ∀ j : { j // j ≠ i }, Y j
where
- toEquiv := Equiv.piSplitAt i β
+ toEquiv := Equiv.piSplitAt i Y
continuous_toFun := (continuous_apply i).prod_mk (continuous_pi fun j => continuous_apply j.1)
continuous_invFun :=
continuous_pi fun j => by
@@ -732,12 +733,12 @@ def piSplitAt (β : ι → Type*) [∀ j, TopologicalSpace (β j)] :
exacts [continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_split_at Homeomorph.piSplitAt
-variable (β)
+variable (Y)
/-- A product of copies of a topological space can be split as the binary product of one copy and
the product of all the remaining copies. -/
@[simps!]
-def funSplitAt : (ι → β) ≃ₜ β × ({ j // j ≠ i } → β) :=
+def funSplitAt : (ι → Y) ≃ₜ Y × ({ j // j ≠ i } → Y) :=
piSplitAt i _
#align homeomorph.fun_split_at Homeomorph.funSplitAt
@@ -746,31 +747,31 @@ end
end Homeomorph
namespace Equiv
-variable {α β γ : Type*} [TopologicalSpace α] [TopologicalSpace β] [TopologicalSpace γ]
+variable {Z : Type*} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
/-- An equiv between topological spaces respecting openness is a homeomorphism. -/
@[simps toEquiv]
-def toHomeomorph (e : α ≃ β) (he : ∀ s, IsOpen (e ⁻¹' s) ↔ IsOpen s) : α ≃ₜ β where
+def toHomeomorph (e : X ≃ Y) (he : ∀ s, IsOpen (e ⁻¹' s) ↔ IsOpen s) : X ≃ₜ Y where
toEquiv := e
continuous_toFun := continuous_def.2 λ s ↦ (he _).2
continuous_invFun := continuous_def.2 λ s ↦ by convert (he _).1; simp
-@[simp] lemma coe_toHomeomorph (e : α ≃ β) (he) : ⇑(e.toHomeomorph he) = e := rfl
-lemma toHomeomorph_apply (e : α ≃ β) (he) (a : α) : e.toHomeomorph he a = e a := rfl
+@[simp] lemma coe_toHomeomorph (e : X ≃ Y) (he) : ⇑(e.toHomeomorph he) = e := rfl
+lemma toHomeomorph_apply (e : X ≃ Y) (he) (x : X) : e.toHomeomorph he x = e x := rfl
@[simp] lemma toHomeomorph_refl :
- (Equiv.refl α).toHomeomorph (λ _s ↦ Iff.rfl) = Homeomorph.refl _ := rfl
+ (Equiv.refl X).toHomeomorph (λ _s ↦ Iff.rfl) = Homeomorph.refl _ := rfl
-@[simp] lemma toHomeomorph_symm (e : α ≃ β) (he) :
+@[simp] lemma toHomeomorph_symm (e : X ≃ Y) (he) :
(e.toHomeomorph he).symm = e.symm.toHomeomorph λ s ↦ by convert (he _).symm; simp := rfl
-lemma toHomeomorph_trans (e : α ≃ β) (f : β ≃ γ) (he hf) :
+lemma toHomeomorph_trans (e : X ≃ Y) (f : Y ≃ Z) (he hf) :
(e.trans f).toHomeomorph (λ _s ↦ (he _).trans (hf _)) =
(e.toHomeomorph he).trans (f.toHomeomorph hf) := rfl
/-- An inducing equiv between topological spaces is a homeomorphism. -/
@[simps toEquiv] -- porting note: TODO: was `@[simps]`
-def toHomeomorphOfInducing (f : α ≃ β) (hf : Inducing f) : α ≃ₜ β :=
+def toHomeomorphOfInducing (f : X ≃ Y) (hf : Inducing f) : X ≃ₜ Y :=
{ f with
continuous_toFun := hf.continuous
continuous_invFun := hf.continuous_iff.2 <| by simpa using continuous_id }
@@ -780,9 +781,9 @@ end Equiv
namespace Continuous
-variable [TopologicalSpace α] [TopologicalSpace β]
+variable [TopologicalSpace X] [TopologicalSpace Y]
-theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f : α ≃ β}
+theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace X] [T2Space Y] {f : X ≃ Y}
(hf : Continuous f) : Continuous f.symm := by
rw [continuous_iff_isClosed]
intro C hC
@@ -795,7 +796,7 @@ theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f
This is not true when T2 is weakened to T1
(see `Continuous.homeoOfEquivCompactToT2.t1_counterexample`). -/
@[simps toEquiv] -- porting note: was `@[simps]`
-def homeoOfEquivCompactToT2 [CompactSpace α] [T2Space β] {f : α ≃ β} (hf : Continuous f) : α ≃ₜ β :=
+def homeoOfEquivCompactToT2 [CompactSpace X] [T2Space Y] {f : X ≃ Y} (hf : Continuous f) : X ≃ₜ Y :=
{ f with
continuous_toFun := hf
continuous_invFun := hf.continuous_symm_of_equiv_compact_to_t2 }
@@ -258,11 +258,13 @@ protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopol
h.inducing.secondCountableTopology
#align homeomorph.second_countable_topology Homeomorph.secondCountableTopology
+/-- If `h : α → β` is a homeomorphism, `h(s)` is compact iff `s` is. -/
@[simp]
theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔ IsCompact s :=
h.embedding.isCompact_iff_isCompact_image.symm
#align homeomorph.is_compact_image Homeomorph.isCompact_image
+/-- If `h : α → β` is a homeomorphism, `h⁻¹(s)` is compact iff `s` is. -/
@[simp]
theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹' s) ↔ IsCompact s := by
rw [← image_symm]; exact h.symm.isCompact_image
The analogous lemmas for open, closed, preconnected, connected sets are all tagged simp.
@@ -258,10 +258,12 @@ protected theorem secondCountableTopology [TopologicalSpace.SecondCountableTopol
h.inducing.secondCountableTopology
#align homeomorph.second_countable_topology Homeomorph.secondCountableTopology
+@[simp]
theorem isCompact_image {s : Set α} (h : α ≃ₜ β) : IsCompact (h '' s) ↔ IsCompact s :=
h.embedding.isCompact_iff_isCompact_image.symm
#align homeomorph.is_compact_image Homeomorph.isCompact_image
+@[simp]
theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹' s) ↔ IsCompact s := by
rw [← image_symm]; exact h.symm.isCompact_image
#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimage
@@ -761,7 +761,7 @@ lemma toHomeomorph_apply (e : α ≃ β) (he) (a : α) : e.toHomeomorph he a = e
(e.toHomeomorph he).symm = e.symm.toHomeomorph λ s ↦ by convert (he _).symm; simp := rfl
lemma toHomeomorph_trans (e : α ≃ β) (f : β ≃ γ) (he hf) :
- (e.trans f).toHomeomorph (λ _s ↦ (he _).trans (hf _)) =
+ (e.trans f).toHomeomorph (λ _s ↦ (he _).trans (hf _)) =
(e.toHomeomorph he).trans (f.toHomeomorph hf) := rfl
/-- An inducing equiv between topological spaces is a homeomorphism. -/
@@ -569,12 +569,23 @@ def homeomorphOfUnique [Unique α] [Unique β] : α ≃ₜ β :=
end
-/-- If each `β₁ i` is homeomorphic to `β₂ i`, then `Π i, β₁ i` is homeomorphic to `Π i, β₂ i`. -/
+/-- `Equiv.piCongrLeft` as a homeomorphism: this is the natural homeomorphism
+`Π i, β (e i) ≃ₜ Π j, β j` obtained from a bijection `ι ≃ ι'`. -/
+@[simps! apply toEquiv]
+def piCongrLeft {ι ι' : Type*} {β : ι' → Type*} [∀ j, TopologicalSpace (β j)]
+ (e : ι ≃ ι') : (∀ i, β (e i)) ≃ₜ ∀ j, β j where
+ continuous_toFun := continuous_pi <| e.forall_congr_left.mp <| fun i ↦ by
+ simpa only [Equiv.toFun_as_coe_apply, Equiv.piCongrLeft_apply_apply] using continuous_apply i
+ continuous_invFun := Pi.continuous_precomp' e
+ toEquiv := Equiv.piCongrLeft _ e
+
+/-- `Equiv.piCongrRight` as a homeomorphism: this is the natural homeomorphism
+`Π i, β₁ i ≃ₜ Π j, β₂ i` obtained from homeomorphisms `β₁ i ≃ₜ β₂ i` for each `i`. -/
@[simps! apply toEquiv]
def piCongrRight {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, TopologicalSpace (β₁ i)]
[∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) : (∀ i, β₁ i) ≃ₜ ∀ i, β₂ i where
- continuous_toFun := continuous_pi fun i => (F i).continuous.comp <| continuous_apply i
- continuous_invFun := continuous_pi fun i => (F i).symm.continuous.comp <| continuous_apply i
+ continuous_toFun := Pi.continuous_postcomp' fun i ↦ (F i).continuous
+ continuous_invFun := Pi.continuous_postcomp' fun i ↦ (F i).symm.continuous
toEquiv := Equiv.piCongrRight fun i => (F i).toEquiv
#align homeomorph.Pi_congr_right Homeomorph.piCongrRight
@@ -585,6 +596,15 @@ theorem piCongrRight_symm {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, Topo
rfl
#align homeomorph.Pi_congr_right_symm Homeomorph.piCongrRight_symm
+/-- `Equiv.piCongr` as a homeomorphism: this is the natural homeomorphism
+`Π i₁, β₁ i ≃ₜ Π i₂, β₂ i₂` obtained from a bijection `ι₁ ≃ ι₂` and homeomorphisms
+`β₁ i₁ ≃ₜ β₂ (e i₁)` for each `i₁ : ι₁`. -/
+@[simps! apply toEquiv]
+def piCongr {ι₁ ι₂ : Type*} {β₁ : ι₁ → Type*} {β₂ : ι₂ → Type*}
+ [∀ i₁, TopologicalSpace (β₁ i₁)] [∀ i₂, TopologicalSpace (β₂ i₂)]
+ (e : ι₁ ≃ ι₂) (F : ∀ i₁, β₁ i₁ ≃ₜ β₂ (e i₁)) : (∀ i₁, β₁ i₁) ≃ₜ ∀ i₂, β₂ i₂ :=
+ (Homeomorph.piCongrRight F).trans (Homeomorph.piCongrLeft e)
+
-- porting note: TODO: align the order of universes with `Equiv.ulift`
/-- `ULift α` is homeomorphic to `α`. -/
def ulift.{u, v} {α : Type u} [TopologicalSpace α] : ULift.{v, u} α ≃ₜ α where
@@ -360,7 +360,10 @@ protected theorem closedEmbedding (h : α ≃ₜ β) : ClosedEmbedding h :=
protected theorem normalSpace [NormalSpace α] (h : α ≃ₜ β) : NormalSpace β :=
h.symm.closedEmbedding.normalSpace
-#align homeomorph.normal_space Homeomorph.normalSpace
+
+protected theorem t4Space [T4Space α] (h : α ≃ₜ β) : T4Space β :=
+ h.symm.closedEmbedding.t4Space
+#align homeomorph.normal_space Homeomorph.t4Space
theorem preimage_closure (h : α ≃ₜ β) (s : Set β) : h ⁻¹' closure s = closure (h ⁻¹' s) :=
h.isOpenMap.preimage_closure_eq_closure_preimage h.continuous _
Add Equiv.toHomeomorph
, a convenient version of Equiv.toHomeomorph_of_inducing
.
@@ -718,15 +718,39 @@ end
end Homeomorph
+namespace Equiv
+variable {α β γ : Type*} [TopologicalSpace α] [TopologicalSpace β] [TopologicalSpace γ]
+
+/-- An equiv between topological spaces respecting openness is a homeomorphism. -/
+@[simps toEquiv]
+def toHomeomorph (e : α ≃ β) (he : ∀ s, IsOpen (e ⁻¹' s) ↔ IsOpen s) : α ≃ₜ β where
+ toEquiv := e
+ continuous_toFun := continuous_def.2 λ s ↦ (he _).2
+ continuous_invFun := continuous_def.2 λ s ↦ by convert (he _).1; simp
+
+@[simp] lemma coe_toHomeomorph (e : α ≃ β) (he) : ⇑(e.toHomeomorph he) = e := rfl
+lemma toHomeomorph_apply (e : α ≃ β) (he) (a : α) : e.toHomeomorph he a = e a := rfl
+
+@[simp] lemma toHomeomorph_refl :
+ (Equiv.refl α).toHomeomorph (λ _s ↦ Iff.rfl) = Homeomorph.refl _ := rfl
+
+@[simp] lemma toHomeomorph_symm (e : α ≃ β) (he) :
+ (e.toHomeomorph he).symm = e.symm.toHomeomorph λ s ↦ by convert (he _).symm; simp := rfl
+
+lemma toHomeomorph_trans (e : α ≃ β) (f : β ≃ γ) (he hf) :
+ (e.trans f).toHomeomorph (λ _s ↦ (he _).trans (hf _)) =
+ (e.toHomeomorph he).trans (f.toHomeomorph hf) := rfl
+
/-- An inducing equiv between topological spaces is a homeomorphism. -/
@[simps toEquiv] -- porting note: TODO: was `@[simps]`
-def Equiv.toHomeomorphOfInducing [TopologicalSpace α] [TopologicalSpace β] (f : α ≃ β)
- (hf : Inducing f) : α ≃ₜ β :=
+def toHomeomorphOfInducing (f : α ≃ β) (hf : Inducing f) : α ≃ₜ β :=
{ f with
continuous_toFun := hf.continuous
continuous_invFun := hf.continuous_iff.2 <| by simpa using continuous_id }
#align equiv.to_homeomorph_of_inducing Equiv.toHomeomorphOfInducing
+end Equiv
+
namespace Continuous
variable [TopologicalSpace α] [TopologicalSpace β]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -32,11 +32,11 @@ open Set Filter
open Topology
-variable {α : Type _} {β : Type _} {γ : Type _} {δ : Type _}
+variable {α : Type*} {β : Type*} {γ : Type*} {δ : Type*}
-- not all spaces are homeomorphic to each other
/-- Homeomorphism between `α` and `β`, also called topological isomorphism -/
-structure Homeomorph (α : Type _) (β : Type _) [TopologicalSpace α] [TopologicalSpace β]
+structure Homeomorph (α : Type*) (β : Type*) [TopologicalSpace α] [TopologicalSpace β]
extends α ≃ β where
/-- The forward map of a homeomorphism is a continuous function. -/
continuous_toFun : Continuous toFun := by continuity
@@ -103,7 +103,7 @@ theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
/-- Identity map as a homeomorphism. -/
@[simps! (config := { fullyApplied := false }) apply]
-protected def refl (α : Type _) [TopologicalSpace α] : α ≃ₜ α where
+protected def refl (α : Type*) [TopologicalSpace α] : α ≃ₜ α where
continuous_toFun := continuous_id
continuous_invFun := continuous_id
toEquiv := Equiv.refl α
@@ -568,7 +568,7 @@ end
/-- If each `β₁ i` is homeomorphic to `β₂ i`, then `Π i, β₁ i` is homeomorphic to `Π i, β₂ i`. -/
@[simps! apply toEquiv]
-def piCongrRight {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, TopologicalSpace (β₁ i)]
+def piCongrRight {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, TopologicalSpace (β₁ i)]
[∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) : (∀ i, β₁ i) ≃ₜ ∀ i, β₂ i where
continuous_toFun := continuous_pi fun i => (F i).continuous.comp <| continuous_apply i
continuous_invFun := continuous_pi fun i => (F i).symm.continuous.comp <| continuous_apply i
@@ -576,7 +576,7 @@ def piCongrRight {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, Topological
#align homeomorph.Pi_congr_right Homeomorph.piCongrRight
@[simp]
-theorem piCongrRight_symm {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, TopologicalSpace (β₁ i)]
+theorem piCongrRight_symm {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, TopologicalSpace (β₁ i)]
[∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) :
(piCongrRight F).symm = piCongrRight fun i => (F i).symm :=
rfl
@@ -606,7 +606,7 @@ def prodSumDistrib : α × Sum β γ ≃ₜ Sum (α × β) (α × γ) :=
(prodComm _ _).trans <| sumProdDistrib.trans <| sumCongr (prodComm _ _) (prodComm _ _)
#align homeomorph.prod_sum_distrib Homeomorph.prodSumDistrib
-variable {ι : Type _} {σ : ι → Type _} [∀ i, TopologicalSpace (σ i)]
+variable {ι : Type*} {σ : ι → Type*} [∀ i, TopologicalSpace (σ i)]
/-- `(Σ i, σ i) × β` is homeomorphic to `Σ i, (σ i × β)`. -/
def sigmaProdDistrib : (Σi, σ i) × β ≃ₜ Σi, σ i × β :=
@@ -620,7 +620,7 @@ end Distrib
/-- If `ι` has a unique element, then `ι → α` is homeomorphic to `α`. -/
@[simps! (config := { fullyApplied := false })]
-def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α) ≃ₜ α where
+def funUnique (ι α : Type*) [Unique ι] [TopologicalSpace α] : (ι → α) ≃ₜ α where
toEquiv := Equiv.funUnique ι α
continuous_toFun := continuous_apply _
continuous_invFun := continuous_pi fun _ => continuous_id
@@ -652,7 +652,7 @@ def image (e : α ≃ₜ β) (s : Set α) : s ≃ₜ e '' s where
/-- `Set.univ α` is homeomorphic to `α`. -/
@[simps! (config := { fullyApplied := false })]
-def Set.univ (α : Type _) [TopologicalSpace α] : (univ : Set α) ≃ₜ α where
+def Set.univ (α : Type*) [TopologicalSpace α] : (univ : Set α) ≃ₜ α where
toEquiv := Equiv.Set.univ α
continuous_toFun := continuous_subtype_val
continuous_invFun := continuous_id.subtype_mk _
@@ -670,12 +670,12 @@ def Set.prod (s : Set α) (t : Set β) : ↥(s ×ˢ t) ≃ₜ s × t where
section
-variable {ι : Type _}
+variable {ι : Type*}
/-- The topological space `Π i, β i` can be split as a product by separating the indices in ι
depending on whether they satisfy a predicate p or not.-/
@[simps!]
-def piEquivPiSubtypeProd (p : ι → Prop) (β : ι → Type _) [∀ i, TopologicalSpace (β i)]
+def piEquivPiSubtypeProd (p : ι → Prop) (β : ι → Type*) [∀ i, TopologicalSpace (β i)]
[DecidablePred p] : (∀ i, β i) ≃ₜ (∀ i : { x // p x }, β i) × ∀ i : { x // ¬p x }, β i
where
toEquiv := Equiv.piEquivPiSubtypeProd p β
@@ -692,7 +692,7 @@ variable [DecidableEq ι] (i : ι)
/-- A product of topological spaces can be split as the binary product of one of the spaces and
the product of all the remaining spaces. -/
@[simps!]
-def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
+def piSplitAt (β : ι → Type*) [∀ j, TopologicalSpace (β j)] :
(∀ j, β j) ≃ₜ β i × ∀ j : { j // j ≠ i }, β j
where
toEquiv := Equiv.piSplitAt i β
@@ -121,6 +121,9 @@ theorem trans_apply (h₁ : α ≃ₜ β) (h₂ : β ≃ₜ γ) (a : α) : h₁.
rfl
#align homeomorph.trans_apply Homeomorph.trans_apply
+@[simp] theorem symm_trans_apply (f : α ≃ₜ β) (g : β ≃ₜ γ) (a : γ) :
+ (f.trans g).symm a = f.symm (g.symm a) := rfl
+
@[simp]
theorem homeomorph_mk_coe_symm (a : Equiv α β) (b c) :
((Homeomorph.mk a b c).symm : β → α) = a.symm :=
@@ -2,16 +2,13 @@
Copyright (c) 2019 Reid Barton. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton
-
-! This file was ported from Lean 3 source module topology.homeomorph
-! leanprover-community/mathlib commit 4c3e1721c58ef9087bbc2c8c38b540f70eda2e53
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Logic.Equiv.Fin
import Mathlib.Topology.DenseEmbedding
import Mathlib.Topology.Support
+#align_import topology.homeomorph from "leanprover-community/mathlib"@"4c3e1721c58ef9087bbc2c8c38b540f70eda2e53"
+
/-!
# Homeomorphisms
@@ -266,6 +266,28 @@ theorem isCompact_preimage {s : Set β} (h : α ≃ₜ β) : IsCompact (h ⁻¹'
rw [← image_symm]; exact h.symm.isCompact_image
#align homeomorph.is_compact_preimage Homeomorph.isCompact_preimage
+@[simp]
+theorem isPreconnected_image {s : Set α} (h : α ≃ₜ β) :
+ IsPreconnected (h '' s) ↔ IsPreconnected s :=
+ ⟨fun hs ↦ by simpa only [image_symm, preimage_image]
+ using hs.image _ h.symm.continuous.continuousOn,
+ fun hs ↦ hs.image _ h.continuous.continuousOn⟩
+
+@[simp]
+theorem isPreconnected_preimage {s : Set β} (h : α ≃ₜ β) :
+ IsPreconnected (h ⁻¹' s) ↔ IsPreconnected s := by
+ rw [← image_symm, isPreconnected_image]
+
+@[simp]
+theorem isConnected_image {s : Set α} (h : α ≃ₜ β) :
+ IsConnected (h '' s) ↔ IsConnected s :=
+ nonempty_image_iff.and h.isPreconnected_image
+
+@[simp]
+theorem isConnected_preimage {s : Set β} (h : α ≃ₜ β) :
+ IsConnected (h ⁻¹' s) ↔ IsConnected s := by
+ rw [← image_symm, isConnected_image]
+
@[simp]
theorem comap_cocompact (h : α ≃ₜ β) : comap h (cocompact β) = cocompact α :=
(comap_cocompact_le h.continuous).antisymm <|
@@ -389,6 +411,17 @@ theorem comap_nhds_eq (h : α ≃ₜ β) (y : β) : comap h (𝓝 y) = 𝓝 (h.s
rw [h.nhds_eq_comap, h.apply_symm_apply]
#align homeomorph.comap_nhds_eq Homeomorph.comap_nhds_eq
+/-- If the codomain of a homeomorphism is a locally connected space, then the domain is also
+a locally connected space. -/
+theorem locallyConnectedSpace [i : LocallyConnectedSpace β] (h : α ≃ₜ β) :
+ LocallyConnectedSpace α := by
+ have : ∀ x, (𝓝 x).HasBasis (fun s ↦ IsOpen s ∧ h x ∈ s ∧ IsConnected s)
+ (h.symm '' ·) := fun x ↦ by
+ rw [← h.symm_map_nhds_eq]
+ exact (i.1 _).map _
+ refine locallyConnectedSpace_of_connected_bases _ _ this fun _ _ hs ↦ ?_
+ exact hs.2.2.2.image _ h.symm.continuous.continuousOn
+
/-- If a bijective map `e : α ≃ β` is continuous and open, then it is a homeomorphism. -/
def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsOpenMap e) : α ≃ₜ β where
continuous_toFun := h₁
@@ -389,7 +389,7 @@ theorem comap_nhds_eq (h : α ≃ₜ β) (y : β) : comap h (𝓝 y) = 𝓝 (h.s
rw [h.nhds_eq_comap, h.apply_symm_apply]
#align homeomorph.comap_nhds_eq Homeomorph.comap_nhds_eq
-/-- If an bijective map `e : α ≃ β` is continuous and open, then it is a homeomorphism. -/
+/-- If a bijective map `e : α ≃ β` is continuous and open, then it is a homeomorphism. -/
def homeomorphOfContinuousOpen (e : α ≃ β) (h₁ : Continuous e) (h₂ : IsOpenMap e) : α ≃ₜ β where
continuous_toFun := h₁
continuous_invFun := by
just changing explicitness of one variable https://github.com/leanprover-community/mathlib/pull/15681
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton
! This file was ported from Lean 3 source module topology.homeomorph
-! leanprover-community/mathlib commit 3b267e70a936eebb21ab546f49a8df34dd300b25
+! leanprover-community/mathlib commit 4c3e1721c58ef9087bbc2c8c38b540f70eda2e53
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -672,6 +672,8 @@ def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
exacts [continuous_fst, (continuous_apply _).comp continuous_snd]
#align homeomorph.pi_split_at Homeomorph.piSplitAt
+variable (β)
+
/-- A product of copies of a topological space can be split as the binary product of one copy and
the product of all the remaining copies. -/
@[simps!]
@@ -448,8 +448,7 @@ theorem comp_isOpenMap_iff' (h : α ≃ₜ β) {f : β → γ} : IsOpenMap (f
#align homeomorph.comp_is_open_map_iff' Homeomorph.comp_isOpenMap_iff'
/-- If two sets are equal, then they are homeomorphic. -/
-def setCongr {s t : Set α} (h : s = t) : s ≃ₜ t
- where
+def setCongr {s t : Set α} (h : s = t) : s ≃ₜ t where
continuous_toFun := continuous_inclusion h.subset
continuous_invFun := continuous_inclusion h.symm.subset
toEquiv := Equiv.setCongr h
@@ -510,15 +509,15 @@ def prodAssoc : (α × β) × γ ≃ₜ α × β × γ where
/-- `α × {*}` is homeomorphic to `α`. -/
@[simps! (config := { fullyApplied := false }) apply]
-def prodPunit : α × PUnit ≃ₜ α where
+def prodPUnit : α × PUnit ≃ₜ α where
toEquiv := Equiv.prodPUnit α
continuous_toFun := continuous_fst
continuous_invFun := continuous_id.prod_mk continuous_const
-#align homeomorph.prod_punit Homeomorph.prodPunit
+#align homeomorph.prod_punit Homeomorph.prodPUnit
/-- `{*} × α` is homeomorphic to `α`. -/
def punitProd : PUnit × α ≃ₜ α :=
- (prodComm _ _).trans (prodPunit _)
+ (prodComm _ _).trans (prodPUnit _)
#align homeomorph.punit_prod Homeomorph.punitProd
@[simp] theorem coe_punitProd : ⇑(punitProd α) = Prod.snd := rfl
@@ -588,8 +587,7 @@ end Distrib
/-- If `ι` has a unique element, then `ι → α` is homeomorphic to `α`. -/
@[simps! (config := { fullyApplied := false })]
-def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α) ≃ₜ α
- where
+def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α) ≃ₜ α where
toEquiv := Equiv.funUnique ι α
continuous_toFun := continuous_apply _
continuous_invFun := continuous_pi fun _ => continuous_id
@@ -597,8 +595,7 @@ def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α)
/-- Homeomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
@[simps! (config := { fullyApplied := false })]
-def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀ i, α i) ≃ₜ α 0 × α 1
- where
+def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀ i, α i) ≃ₜ α 0 × α 1 where
toEquiv := piFinTwoEquiv α
continuous_toFun := (continuous_apply 0).prod_mk (continuous_apply 1)
continuous_invFun := continuous_pi <| Fin.forall_fin_two.2 ⟨continuous_fst, continuous_snd⟩
@@ -710,7 +707,7 @@ theorem continuous_symm_of_equiv_compact_to_t2 [CompactSpace α] [T2Space β] {f
/-- Continuous equivalences from a compact space to a T2 space are homeomorphisms.
This is not true when T2 is weakened to T1
-(see `continuous.homeo_of_equiv_compact_to_t2.t1_counterexample`). -/
+(see `Continuous.homeoOfEquivCompactToT2.t1_counterexample`). -/
@[simps toEquiv] -- porting note: was `@[simps]`
def homeoOfEquivCompactToT2 [CompactSpace α] [T2Space β] {f : α ≃ β} (hf : Continuous f) : α ≃ₜ β :=
{ f with
Misc changes:
Homeomorph.symm_comp_to_continuousMap
to Homeomorph.symm_comp_toContinuousMap
;Homeomorph.to_continuousMap_comp_symm
to Homeomorph.toContinuousMap_comp_symm
;CoeFun
instance for Homeomorph
; otherwise, toFun_eq_coe
was stuck trying to coerce h
to a function.@@ -65,6 +65,8 @@ instance : EquivLike (α ≃ₜ β) α β where
right_inv := fun h => h.right_inv
coe_injective' := fun _ _ H _ => toEquiv_injective <| FunLike.ext' H
+instance : CoeFun (α ≃ₜ β) fun _ ↦ α → β := ⟨FunLike.coe⟩
+
@[simp]
theorem homeomorph_mk_coe (a : Equiv α β) (b c) : (Homeomorph.mk a b c : α → β) = a :=
rfl
initialize_simps_projections
automatically find coercions if there is a Funlike
or SetLike
instance defined by one of the projections.SetLike
coercionsNot yet implemented (and rarely - if ever - used in mathlib3):
+
,*
,...)Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -80,12 +80,6 @@ protected def symm (h : α ≃ₜ β) : β ≃ₜ α where
@[simp] theorem symm_symm (h : α ≃ₜ β) : h.symm.symm = h := rfl
#align homeomorph.symm_symm Homeomorph.symm_symm
-/-- See Note [custom simps projection]. We need to specify this projection explicitly in this case,
- because it is a composition of multiple projections. -/
-def Simps.apply (h : α ≃ₜ β) : α → β :=
- h
-#align homeomorph.simps.apply Homeomorph.Simps.apply
-
/-- See Note [custom simps projection] -/
def Simps.symm_apply (h : α ≃ₜ β) : β → α :=
h.symm
I made substantial changes to the proofs. To avoid backporting most of them, in leanprover-community/mathlib#18552 I add private
to lemmas that are deleted in this PR. Also, I backport Homeomorph.symm_symm
in leanprover-community/mathlib#18551
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton
! This file was ported from Lean 3 source module topology.homeomorph
-! leanprover-community/mathlib commit d90e4e186f1d18e375dcd4e5b5f6364b01cb3e46
+! leanprover-community/mathlib commit 3b267e70a936eebb21ab546f49a8df34dd300b25
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -77,6 +77,9 @@ protected def symm (h : α ≃ₜ β) : β ≃ₜ α where
toEquiv := h.toEquiv.symm
#align homeomorph.symm Homeomorph.symm
+@[simp] theorem symm_symm (h : α ≃ₜ β) : h.symm.symm = h := rfl
+#align homeomorph.symm_symm Homeomorph.symm_symm
+
/-- See Note [custom simps projection]. We need to specify this projection explicitly in this case,
because it is a composition of multiple projections. -/
def Simps.apply (h : α ≃ₜ β) : α → β :=
congr!
and improvement to convert
(#2566)
This introduces a tactic congr!
that is an analogue to mathlib 3's congr'
. It is a more insistent version of congr
that makes use of more congruence lemmas (including user congruence lemmas), propext
, funext
, and Subsingleton
instances. It also has a feature to lift reflexive relations to equalities. Along with funext
, the tactic does intros
, allowing congr!
to get access to function bodies; the introduced variables can be named using rename_i
if needed.
This also modifies convert
to use congr!
rather than congr
, which makes it work more like the mathlib3 version of the tactic.
@@ -187,7 +187,7 @@ def changeInv (f : α ≃ₜ β) (g : β → α) (hg : Function.RightInverse g f
{ toFun := f
invFun := g
left_inv := by convert f.left_inv
- right_inv := by convert f.right_inv
+ right_inv := by convert f.right_inv using 1
continuous_toFun := f.continuous
continuous_invFun := by convert f.symm.continuous }
#align homeomorph.change_inv Homeomorph.changeInv
initialize_simps_projections
now by default generates all projections of all parent structures, and doesn't generate the projections to those parent structures.TwoPointed
)Internal changes:
ParsedProjectionData
to avoid the bug reported here (and to another bug where it seemed that the wrong data was inserted in ParsedProjectionData
, but it was hard to minimize because of all the crashes). If we manage to fix the bug in that Zulip thread, I'll see if I can track down the other bug in commit 97454284Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -88,8 +88,7 @@ def Simps.symm_apply (h : α ≃ₜ β) : β → α :=
h.symm
#align homeomorph.simps.symm_apply Homeomorph.Simps.symm_apply
-initialize_simps_projections Homeomorph (toEquiv_toFun → apply, toEquiv_invFun → symm_apply,
- -toEquiv)
+initialize_simps_projections Homeomorph (toFun → apply, invFun → symm_apply)
@[simp]
theorem coe_toEquiv (h : α ≃ₜ β) : ⇑h.toEquiv = h :=
We implement the continuity tactic using aesop, this makes it more robust and reduces the code to trivial macros.
@@ -42,9 +42,9 @@ variable {α : Type _} {β : Type _} {γ : Type _} {δ : Type _}
structure Homeomorph (α : Type _) (β : Type _) [TopologicalSpace α] [TopologicalSpace β]
extends α ≃ β where
/-- The forward map of a homeomorphism is a continuous function. -/
- continuous_toFun : Continuous toFun -- porting note: todo: := by continuity
+ continuous_toFun : Continuous toFun := by continuity
/-- The inverse map of a homeomorphism is a continuous function. -/
- continuous_invFun : Continuous invFun -- porting note: todo: := by continuity
+ continuous_invFun : Continuous invFun := by continuity
#align homeomorph Homeomorph
@[inherit_doc]
@@ -137,13 +137,13 @@ theorem refl_symm : (Homeomorph.refl α).symm = Homeomorph.refl α :=
rfl
#align homeomorph.refl_symm Homeomorph.refl_symm
--- porting note: todo: restore @[continuity]
+@[continuity]
protected theorem continuous (h : α ≃ₜ β) : Continuous h :=
h.continuous_toFun
#align homeomorph.continuous Homeomorph.continuous
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
--- porting note: todo: restore @[continuity]
+@[continuity]
protected theorem continuous_symm (h : α ≃ₜ β) : Continuous h.symm :=
h.continuous_invFun
#align homeomorph.continuous_symm Homeomorph.continuous_symm
simps
, just raises a linter error if you run simps
in a more expensive mode without writing !
.to_additive, simps
. Will do that systematically in future PR.OmegaCompletePartialOrder.ContinuousHom.ofMono
a bitCo-authored-by: Yury G. Kudryashov <urkud@urkud.name>
@@ -107,7 +107,7 @@ theorem ext {h h' : α ≃ₜ β} (H : ∀ x, h x = h' x) : h = h' :=
#align homeomorph.ext Homeomorph.ext
/-- Identity map as a homeomorphism. -/
-@[simps (config := { fullyApplied := false }) apply]
+@[simps! (config := { fullyApplied := false }) apply]
protected def refl (α : Type _) [TopologicalSpace α] : α ≃ₜ α where
continuous_toFun := continuous_id
continuous_invFun := continuous_id
@@ -511,7 +511,7 @@ def prodAssoc : (α × β) × γ ≃ₜ α × β × γ where
#align homeomorph.prod_assoc Homeomorph.prodAssoc
/-- `α × {*}` is homeomorphic to `α`. -/
-@[simps (config := { fullyApplied := false }) apply]
+@[simps! (config := { fullyApplied := false }) apply]
def prodPunit : α × PUnit ≃ₜ α where
toEquiv := Equiv.prodPUnit α
continuous_toFun := continuous_fst
@@ -527,7 +527,7 @@ def punitProd : PUnit × α ≃ₜ α :=
#align homeomorph.coe_punit_prod Homeomorph.coe_punitProd
/-- If both `α` and `β` have a unique element, then `α ≃ₜ β`. -/
-@[simps]
+@[simps!]
def homeomorphOfUnique [Unique α] [Unique β] : α ≃ₜ β :=
{ Equiv.equivOfUnique α β with
continuous_toFun := continuous_const
@@ -537,7 +537,7 @@ def homeomorphOfUnique [Unique α] [Unique β] : α ≃ₜ β :=
end
/-- If each `β₁ i` is homeomorphic to `β₂ i`, then `Π i, β₁ i` is homeomorphic to `Π i, β₂ i`. -/
-@[simps apply toEquiv]
+@[simps! apply toEquiv]
def piCongrRight {ι : Type _} {β₁ β₂ : ι → Type _} [∀ i, TopologicalSpace (β₁ i)]
[∀ i, TopologicalSpace (β₂ i)] (F : ∀ i, β₁ i ≃ₜ β₂ i) : (∀ i, β₁ i) ≃ₜ ∀ i, β₂ i where
continuous_toFun := continuous_pi fun i => (F i).continuous.comp <| continuous_apply i
@@ -589,7 +589,7 @@ def sigmaProdDistrib : (Σi, σ i) × β ≃ₜ Σi, σ i × β :=
end Distrib
/-- If `ι` has a unique element, then `ι → α` is homeomorphic to `α`. -/
-@[simps (config := { fullyApplied := false })]
+@[simps! (config := { fullyApplied := false })]
def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α) ≃ₜ α
where
toEquiv := Equiv.funUnique ι α
@@ -598,7 +598,7 @@ def funUnique (ι α : Type _) [Unique ι] [TopologicalSpace α] : (ι → α)
#align homeomorph.fun_unique Homeomorph.funUnique
/-- Homeomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
-@[simps (config := { fullyApplied := false })]
+@[simps! (config := { fullyApplied := false })]
def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀ i, α i) ≃ₜ α 0 × α 1
where
toEquiv := piFinTwoEquiv α
@@ -607,14 +607,14 @@ def piFinTwo.{u} (α : Fin 2 → Type u) [∀ i, TopologicalSpace (α i)] : (∀
#align homeomorph.pi_fin_two Homeomorph.piFinTwo
/-- Homeomorphism between `α² = Fin 2 → α` and `α × α`. -/
-@[simps (config := { fullyApplied := false })]
+@[simps! (config := { fullyApplied := false })]
def finTwoArrow : (Fin 2 → α) ≃ₜ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align homeomorph.fin_two_arrow Homeomorph.finTwoArrow
/-- A subset of a topological space is homeomorphic to its image under a homeomorphism.
-/
-@[simps]
+@[simps!]
def image (e : α ≃ₜ β) (s : Set α) : s ≃ₜ e '' s where
-- porting note: todo: by continuity!
continuous_toFun := e.continuous.continuousOn.restrict_mapsTo (mapsTo_image _ _)
@@ -623,7 +623,7 @@ def image (e : α ≃ₜ β) (s : Set α) : s ≃ₜ e '' s where
#align homeomorph.image Homeomorph.image
/-- `Set.univ α` is homeomorphic to `α`. -/
-@[simps (config := { fullyApplied := false })]
+@[simps! (config := { fullyApplied := false })]
def Set.univ (α : Type _) [TopologicalSpace α] : (univ : Set α) ≃ₜ α where
toEquiv := Equiv.Set.univ α
continuous_toFun := continuous_subtype_val
@@ -631,7 +631,7 @@ def Set.univ (α : Type _) [TopologicalSpace α] : (univ : Set α) ≃ₜ α whe
#align homeomorph.set.univ Homeomorph.Set.univ
/-- `s ×ˢ t` is homeomorphic to `s × t`. -/
-@[simps]
+@[simps!]
def Set.prod (s : Set α) (t : Set β) : ↥(s ×ˢ t) ≃ₜ s × t where
toEquiv := Equiv.Set.prod s t
continuous_toFun :=
@@ -646,7 +646,7 @@ variable {ι : Type _}
/-- The topological space `Π i, β i` can be split as a product by separating the indices in ι
depending on whether they satisfy a predicate p or not.-/
-@[simps]
+@[simps!]
def piEquivPiSubtypeProd (p : ι → Prop) (β : ι → Type _) [∀ i, TopologicalSpace (β i)]
[DecidablePred p] : (∀ i, β i) ≃ₜ (∀ i : { x // p x }, β i) × ∀ i : { x // ¬p x }, β i
where
@@ -663,7 +663,7 @@ variable [DecidableEq ι] (i : ι)
/-- A product of topological spaces can be split as the binary product of one of the spaces and
the product of all the remaining spaces. -/
-@[simps]
+@[simps!]
def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
(∀ j, β j) ≃ₜ β i × ∀ j : { j // j ≠ i }, β j
where
@@ -679,7 +679,7 @@ def piSplitAt (β : ι → Type _) [∀ j, TopologicalSpace (β j)] :
/-- A product of copies of a topological space can be split as the binary product of one copy and
the product of all the remaining copies. -/
-@[simps]
+@[simps!]
def funSplitAt : (ι → β) ≃ₜ β × ({ j // j ≠ i } → β) :=
piSplitAt i _
#align homeomorph.fun_split_at Homeomorph.funSplitAt
The unported dependencies are