Compare commits

...

2 Commits

@ -1,7 +1,7 @@
/- /-
Copyright (c) 2023 Laurent Bartholdi. All rights reserved. Copyright (c) 2023 Laurent Bartholdi. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE. Released under Apache 2.0 license as described in the file LICENSE.
Author : Laurent Bartholdi Author : Laurent Bartholdi and Émilie Burgun
-/ -/
import Mathlib.Data.Finset.Basic import Mathlib.Data.Finset.Basic
import Mathlib.Data.Finset.Card import Mathlib.Data.Finset.Card
@ -2354,22 +2354,15 @@ noncomputable def rubin' : EquivariantHomeomorph G (RubinSpace G) α where
rw [<-F_eq, RubinSpace.smul_mk, RubinSpace.lim_mk, RubinSpace.lim_mk] rw [<-F_eq, RubinSpace.smul_mk, RubinSpace.lim_mk, RubinSpace.lim_mk]
rw [RubinFilter.smul_lim] rw [RubinFilter.smul_lim]
end Equivariant
-- theorem rubin' (hα : RubinAction G α) : EquivariantHomeomorph G α (RubinSpace G) where
-- toFun := fun x => ⟦⟧
-- invFun := fun S => sorry
/-
variable {β : Type _} variable {β : Type _}
variable [TopologicalSpace β] [MulAction G β] [ContinuousConstSMul G β] variable [TopologicalSpace β] [MulAction G β]
theorem rubin (hα : RubinAction G α) (hβ : RubinAction G β) : EquivariantHomeomorph G α β := by theorem rubin (hα : RubinAction G α) (hβ : RubinAction G β) : EquivariantHomeomorph G α β := by
-- by composing rubin' hα let h₁ := @rubin'
sorry let h₂ := @rubin' (α := β) -- why doesn't this work?
-/ exact h₂.trans h₁.symm
end Equivariant
end Rubin end Rubin

@ -43,6 +43,16 @@ def is_equivariant (G : Type _) {β : Type _} [Group G] [MulAction G α]
∀ g : G, ∀ x : α, f (g • x) = g • f x ∀ g : G, ∀ x : α, f (g • x) = g • f x
#align is_equivariant Rubin.is_equivariant #align is_equivariant Rubin.is_equivariant
lemma is_equivariant_refl {G : Type _} [Group G] [MulAction G α] : is_equivariant G (id : αα) := by
intro g x
rw [id_eq, id_eq]
lemma is_equivariant_trans {G : Type _} [Group G] [MulAction G α] [MulAction G β] [MulAction G γ]
(h₁ : α → β) (h₂ : β → γ) (e₁ : is_equivariant G h₁) (e₂ : is_equivariant G h₂) :
is_equivariant G (h₂ ∘ h₁) := by
intro g x
rw [Function.comp_apply, Function.comp_apply, e₁, e₂]
lemma disjoint_not_mem {α : Type _} {U V : Set α} (disj: Disjoint U V) : lemma disjoint_not_mem {α : Type _} {U V : Set α} (disj: Disjoint U V) :
∀ {x : α}, x ∈ U → x ∉ V := ∀ {x : α}, x ∈ U → x ∉ V :=
by by

@ -9,25 +9,25 @@ import Rubin.MulActionExt
namespace Rubin namespace Rubin
-- TODO: give this a notation?
-- TODO: coe to / extend MulActionHom -- TODO: coe to / extend MulActionHom
structure EquivariantHomeomorph (G α β : Type _) [Group G] [TopologicalSpace α] structure EquivariantHomeomorph (G α β : Type _) [Group G] [TopologicalSpace α]
[TopologicalSpace β] [MulAction G α] [MulAction G β] extends Homeomorph α β where [TopologicalSpace β] [MulAction G α] [MulAction G β] extends Homeomorph α β where
equivariant : is_equivariant G toFun equivariant : is_equivariant G toFun
#align equivariant_homeomorph Rubin.EquivariantHomeomorph #align equivariant_homeomorph Rubin.EquivariantHomeomorph
@[inherit_doc]
notation:25 α " ≃ₜ[" G "] " β => EquivariantHomeomorph G α β
variable {G α β : Type _} variable {G α β : Type _}
variable [Group G] variable [Group G]
variable [TopologicalSpace α] [TopologicalSpace β] variable [TopologicalSpace α] [TopologicalSpace β] [MulAction G α] [MulAction G β]
theorem equivariant_fun [MulAction G α] [MulAction G β] theorem equivariant_fun (h : EquivariantHomeomorph G α β) :
(h : EquivariantHomeomorph G α β) :
is_equivariant G h.toFun := is_equivariant G h.toFun :=
h.equivariant h.equivariant
#align equivariant_fun Rubin.equivariant_fun #align equivariant_fun Rubin.equivariant_fun
theorem equivariant_inv [MulAction G α] [MulAction G β] theorem equivariant_inv (h : EquivariantHomeomorph G α β) :
(h : EquivariantHomeomorph G α β) :
is_equivariant G h.invFun := is_equivariant G h.invFun :=
by by
intro g x intro g x
@ -37,6 +37,26 @@ theorem equivariant_inv [MulAction G α] [MulAction G β]
exact e exact e
#align equivariant_inv Rubin.equivariant_inv #align equivariant_inv Rubin.equivariant_inv
protected def symm (h : α ≃ₜ[G] β) : β ≃ₜ[G] α where
continuous_toFun := h.continuous_invFun
continuous_invFun := h.continuous_toFun
toEquiv := h.toEquiv.symm
equivariant := equivariant_inv h
protected def refl : α ≃ₜ[G] α where
continuous_toFun := continuous_id
continuous_invFun := continuous_id
toEquiv := Equiv.refl α
equivariant := is_equivariant_refl
/-- Composition of two homeomorphisms. -/
protected def trans {γ : Type _} [TopologicalSpace γ] [MulAction G γ]
(h₁ : α ≃ₜ[G] β) (h₂ : β ≃ₜ[G] γ) : α ≃ₜ[G] γ 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
equivariant := is_equivariant_trans h₁.toFun h₂.toFun h₁.equivariant h₂.equivariant
open Topology open Topology
-- Note: this sounds like a general enough theorem that it should already be in mathlib -- Note: this sounds like a general enough theorem that it should already be in mathlib

Loading…
Cancel
Save