Zulip Chat Archive
Stream: maths
Topic: category of topological groups
Bernd Losert (Dec 27 2021 at 12:04):
I'm noticing that categories like Group and Top are defined using bundled
, but this doesn't seem to work when I try to define the category of topological groups. Do I have to define the category by hand?
Johan Commelin (Dec 27 2021 at 12:09):
Indeed, you can't use bundled
to get the category structure, because we don't have the type of continuous group homomorphisms. Only monoid_hom
and continuous
separately.
We do have docs#group_topology, so you can get halfway there.
The easiest thing to do, might be to define cont_monoid_hom
, and then define id
and comp
for those. Then you can use bundled
.
Bernd Losert (Dec 27 2021 at 12:12):
OK. Let me try.
Bernd Losert (Dec 27 2021 at 12:20):
Wait a moment. one_hom
and mul_hom
both have a to_fun
. When I combine these, does that mean I will have two to_fun
functions and I will have to add continuous one_hom.to_fun
and continuous mul_hom.to_fun
?
Johan Commelin (Dec 27 2021 at 14:27):
@Bernd Losert They have already been combined into docs#monoid_hom . So I don't think you should need to combine them again yourself.
Bernd Losert (Dec 27 2021 at 15:03):
But how does monoid_hom
fix the problem with the two to_fun
functions?
Yaël Dillies (Dec 27 2021 at 15:05):
This is the point of extending structures. monoid_hom
only has one to_fun
, which is used for both properties.
Bernd Losert (Dec 27 2021 at 15:05):
import tactic
import topology.algebra.group
import category_theory.concrete_category.bundled
import algebra.group.hom
open category_theory
universe u
structure cont_monoid_hom (M N : Type*) [mul_one_class M] [mul_one_class N] extends monoid_hom M N :=
(to_fun_continuous : continuous to_fun)
does not work for me.
Yaël Dillies (Dec 27 2021 at 15:06):
You're missing a topology on M
and N
.
Bernd Losert (Dec 27 2021 at 15:07):
Doh!
Bernd Losert (Dec 27 2021 at 15:08):
I get this now:
error: invalid 'structure' header, field 'to_fun' from 'mul_hom' has already been declared
Yaël Dillies (Dec 27 2021 at 15:10):
Weird... run_cmd old_structures true
before should solve it, but that's unsatisfactory as this use is getting phased out.
Bernd Losert (Dec 27 2021 at 15:12):
That did not work either:
import tactic
import topology.algebra.group
import category_theory.concrete_category.bundled
import algebra.group.hom
open category_theory
universe u
run_cmd old_structures true
structure cont_monoid_hom (M N : Type*) [mul_one_class M] [mul_one_class N] [topological_space M] [topological_space N] extends one_hom M N, mul_hom M N :=
(to_fun_continuous : continuous to_fun)
gives
/Users/bernd/Repositories/convergence/src/test.lean:10:8: error: unknown identifier 'old_structures'
/Users/bernd/Repositories/convergence/src/test.lean:10:0: error: don't know how to synthesize placeholder
context:
⊢ Type
/Users/bernd/Repositories/convergence/src/test.lean:12:141: error: invalid 'structure' header, field 'to_fun' from 'mul_hom' has already been declared
Yakov Pechersky (Dec 27 2021 at 15:14):
set_option old_structure_cmd true
Yaël Dillies (Dec 27 2021 at 15:15):
Ah thanks
Bernd Losert (Dec 28 2021 at 14:29):
Is there a tutorial about how to use bundled
? I'm still confused. And if I decide not to use bundled
, how would I define the category of topological groups? Should I make a TopGroup
structure containing group
, topological_space
, topological_group
fields?
Bernd Losert (Dec 28 2021 at 14:30):
I was hoping I could just write def TopGroup := Σ (α : Type u), topological_group α
, but that doesn't work.
Johan Commelin (Dec 28 2021 at 14:32):
I think you can use docs#group_topology
Johan Commelin (Dec 28 2021 at 14:33):
There is no tutorial on how to use bundled
. I guess the only way is to look at (i) its implementation and (ii) examples of how it's used in mathlib such as docs#Top and docs#Ab.
Bernd Losert (Dec 28 2021 at 14:39):
Do you happen to know of an example where the category had to be built without using bundled?
Bernd Losert (Dec 28 2021 at 14:40):
In particular, a category like that of topological groups where you have to mix things from two separate domains.
Johan Commelin (Dec 28 2021 at 15:02):
There is docs#Module
Johan Commelin (Dec 28 2021 at 15:03):
If you want a long list of categories, look at docs#category_theory.category and click on the dropdown "▸ Instances"
Bernd Losert (Dec 28 2021 at 15:08):
Nice. I started doing something similar for TopGroup
. I'll have to repeat this process when I define the category of continuous group actions.
Johan Commelin (Dec 28 2021 at 15:10):
Out of curiousity: what is your end goal?
Bernd Losert (Dec 28 2021 at 15:15):
I'm formalizing some of my research on convergence spaces (a generalization of top. spaces).
Johan Commelin (Dec 28 2021 at 15:23):
I see. Is there a 2-line explanation how TopGroup
(and the category of continuous group actions) show up when working with convergence spaces?
Johan Commelin (Dec 28 2021 at 15:24):
I remember your other thread about setting up convergence spaces. And I just learned from wiki that the category of convergence spaces has exponentials. Is this one of the results you are aiming at as preliminary?
Bernd Losert (Dec 28 2021 at 15:26):
Yep, the category of convergence spaces has exponentionals, which is one of the reasons it's better than Top.
Johan Commelin (Dec 28 2021 at 15:27):
Right. So where does TopGroup
fit into this picture?
Bernd Losert (Dec 28 2021 at 15:27):
I don't particularly care about TopGroup. I'm just using it as an example.
Johan Commelin (Dec 28 2021 at 15:27):
Aha.
Bernd Losert (Dec 28 2021 at 15:27):
What I actually care about is ConvGroup.
Johan Commelin (Dec 28 2021 at 15:27):
Btw, the category of condensed sets also has exponentials
Johan Commelin (Dec 28 2021 at 15:27):
Is ConvAb
an abelian category?
Bernd Losert (Dec 28 2021 at 15:28):
No, it's not Abelian unfortunately.
Johan Commelin (Dec 28 2021 at 15:28):
Would be interesting to know if the functor Conv → Cond(Set)
is well behaved.
Bernd Losert (Dec 28 2021 at 15:29):
Yes. That would be something to look at. At the moment, my advisor and I are generalizing the theory of continuous partial group actions on topological spaces to the convergence space setting.
Bernd Losert (Dec 29 2021 at 16:49):
So I have the following:
import topology.algebra.group
import category_theory.concrete_category.bundled
import algebra.group.hom
import topology.category.Top
open category_theory
universe u
set_option old_structure_cmd true
structure TopGroup :=
(carrier : Type*)
(the_group : group carrier)
(the_topological_space : topological_space carrier)
(the_topological_group : topological_group carrier)
namespace TopGroup
structure hom (G H : TopGroup) :=
(to_fun : G.carrier → H.carrier)
(to_fun_continuous : continuous to_fun)
(to_fun_group_hom : monoid_hom G.carrier H.carrier to_fun)
end TopGroup
Unfortunately Lean complains:
error: invalid field notation, 'to_mul_one_class' is not a valid "field" because environment does not contain 'group.to_mul_one_class'
G.is_group
which has type
group G.carrier
I'm not sure how to fix this. Passing the group instances manually to monoid_hom
does not seem to work either. (I was hoping it would do some coercion magic.)
Adam Topaz (Dec 29 2021 at 17:03):
You need to define the instances as instances for monoid_hom
to work. Take a look, for example, at the definitions around docs#Group
Alex J. Best (Dec 29 2021 at 17:04):
E.g
import topology.algebra.group
import category_theory.concrete_category.bundled
import algebra.group.hom
import topology.category.Top
import deprecated.group
open category_theory
universe u
--set_option old_structure_cmd true
structure TopGroup :=
(carrier : Type*)
(the_group : group carrier)
(the_topological_space : topological_space carrier)
(the_topological_group : topological_group carrier)
instance (G : TopGroup) : group G.carrier := G.the_group
instance (G : TopGroup) : topological_space G.carrier := G.the_topological_space
namespace TopGroup
structure hom (G H : TopGroup) :=
(to_fun : G.carrier → H.carrier)
(to_fun_continuous : continuous to_fun)
(to_fun_group_hom : is_monoid_hom to_fun)
Alex J. Best (Dec 29 2021 at 17:04):
I had to import deprecated.group
to get access to is_monoid_hom
as monoid_hom
is the bundled type
Adam Topaz (Dec 29 2021 at 17:05):
Presumably hom
should extend monoid_hom
Alex J. Best (Dec 29 2021 at 17:05):
Also you may want to copy Group more closely and define a coe_to_sort
for TopGroup
so you don't need to add .carrier
everywhere
Bernd Losert (Dec 29 2021 at 17:28):
Cool. Thank you.
Scott Morrison (Jan 03 2022 at 09:54):
Sorry I'm late to this thread, but I don't think TopCommRing
has been mentioned yet, which is I think the example you are looking for.
Last updated: Dec 20 2023 at 11:08 UTC