On Tue, Feb 11, 2025 at 02:44:20PM +0000, Martin Baker wrote:
> On 09/02/2025 17:45, Waldek Hebisch wrote:
> > Finite topological spaces are equivalent to partial orders, so
> > there is connection to logic. But they are quite different than
> > infinite topological spaces like simplicial complexes.
>
> I hope there is a way to implement a 'geometric realization' function,
> that is an algorithm to embed a finite topological space in a vector
> space (which is a Euclidean space, which is a topological space).
I am affraid there is confusion what "finite topological space"
means. By this I mean finite set with topology. Simplest
nontrivial example is two element set {a, b}, with topology
{{}, {a}, {a, b}}. Nontrival here means that this in neither
discrete topology nor anti-discrete one. There is a theorem
saying that any finite subset of euclidean space has discrete
topology. So, to have non-trivial topology on a subset of
euclidean space you must have an infinite set. So
'geometric realization' can only work for "nice" spaces
and gives interesting results only for infinite ones.
Actually, there is notion of topological dimension which
for separable metric spaces say that space of dimension n
can be topologically embedded in euclidean space of
dimension 2*n + 1.
Note that "finite simplicial complexes" are typicall
infinite topological spaces, the word "finite" means
that there is finite number of pieces, but typicall
some pieces are infinite.
> In the
> opposite direction I would also like to implement a 'nerve
> construction'. I would also like to link these to logic/frames as in
> Steven Vickers book 'Topology via Logic' but at this stage I am just
> trying to work out what's possible.
I have not seen Vickers book.
> > Let me present my view here. What does it mean "doing mathematics
> > in computer"? One aspect is to support notation analogus to used
> > in literature, allowing creation and manipulation of statements/
> > expressions. In particular this means reasonably nice output.
> > Basicaly this would be "programmable editor", so transformation
> > could be specified by hand.
>
> Are you talking about a graphical editor for Topology/Geometry that
> would give an equation editor and draw the result in real time? This
> would be very nice but not the sort of thing that could be written in SPAD?
I had in mind symbolic/textual representation (and going beyond
Geometry). It would be nice to have grapical presentaion and
editor, but to sensibly connect this to other parts of FriCAS
the core representation should be symbolic. And currently we
have limited support for graphic in Spad, in particular
interaction is limited to a handful of special cases. So
going graphical here would be a big project.
> > Nontrivial mathematical statements
> > may be hard or impossible to decide, so I do _not_ expect
> > general domain of this sort to be able to say decide mathematical
> > equality. But hopefully user should be able to specify
> > transformations and see their effect.
>
> Well for finite topology code (as opposed to the existing simplicial
> complex code in alg_top.spad) I would like the 'equalities' to be
> Homeomorphism (a cup is the same as a doughnut) and homotopy equivalence
> (a line is the same as a point). Since these are defined like
> isomorphism with maps in both directions I would like some way to
> create, combine and use continuous maps. So I think I would need a
> domain to represent a continuous map. Presumably as a subset of a
> product, that is, a set of (input,output) pairs for the points combined
> with something similar in the reverse direction for the open set
> preimage. This all seems very messy and unwieldy which is why I like the
> idea of implementing it as database tables.
Well, you write "finite", but in fact main point here is that
you need handle infinte spaces. More precisely, you want to
avoid actual infinity, so you need to represent things that
mathematically are infinite using finite amout of information.
Already fact that finite amout of information is enough is
mathematically quite non-trivial and one needs smart approach
to get results using managable ampount of information, that
is why I mentioned Sergeraert below.
Mathematically, databases are trivial. They embody large
number of tricks to speed up typical business data processing,
but are unlikely to be relevant for the problem. At best
thinking about databases is premature optimization.
> I know there is a database
> domain in FriCAS but I think that's just for internal FriCAS metadata?
The Database domain is general, but it is essentially association
list with some tweaks. As Ralf wrote, for fast access to largish
amount of data hash tables are typically better (lists are faster
for small number of entries).
Traditionally FriCAS uses term "database" when speaking about
internal data, but this is want is usually called "symbol table".
ATM FriCAS has no true databases (but hash tables may be better
for ypur problem).
> One advantage of having a database is that it makes it easier to
> implement a pullback which seems to be the fundamental construct where a
> lot of this structure comes from. So this would be a database search
> which would only enable the inputs which go to the same place when they
> go different ways around the square.
Actually, pullback is rather easy: you have a function f from
S1 to S2 and some data associated to points in S2. You want
to get data corresponding to point s in S1. To get it you
just apply f to s getting f(s) \in S2. And then you look up
appropiate data in S2. Push-forward is more tricky, as you
may be forced to find counterimages of point s \in S2. And
actually main work here is to sensibly represent functions and
spaces and whatever data you need to associate with points.
In fact, in many cases data is associated with subsets and doing
such thing naively (as table giving value for each subset)
leads to trouble even if you consider moderatly large finite
spaces.
Just as an example, consider lattice of subgroups of a finite
group G. One naive approach could be: consider all subsets
of G, for each subset compute group generated by this subset,
getting collection (list) of subgoups of G. Trouble is, that
group having 60 elements is quite small, but set of subsets is
too large to enumenrate is reasonable time on current machines.
OTOH number of subgroups seem to be much smaller and for
groups having less than 100 elements it is probably not too
hard to create list of all subgroups. I do not know if there
are good methods working for bigger groups, but worst case
that I found are vector spaces over Z_2, where number of
subgroups is of order N log(N), where N is number of elemnts
of the group (and in such very special case it is easy to
generate list of subgroups).
I think that simplicial complexes work quite well. OTOH cubical
and delta complexes were not really finished and there were little
progress after they were commited. Based on what is already
implemented for simplicial complexes one can do more things.
I suggest avoid small variations which add only a little functionality,
but may cause significant extra work (AFAIR it turned out that
_correct_ implementation of some aspects of cubical and delta
complexes is more tricky than for simplical ones). Also, do
not be too ambitious, setting to far goal is good recipe for
failure. Finally, things really should be tested with reasonable
coverage.
> I am interested in the link to cylindrical algebraic decomposition you
> mention so I will investigate that more and see if it can be linked to
> the structures in alg_top.spad or new topology code. I assume there are
> no tutorials for the CAD package?
Classic CAD (that is algebraic case) is well covered in literature.
Basic idea is explaned in Davenport book on computer algebra
available from his webpage (and from other places). We have a
test file in the repo and an example in wiki. To say the
truth, current code is geared toward problem of deciding validity
of statements. To conveniently solve other problems we need
more code, probably exposing some data that is computed inside
CAD package, but not shown in final result. And we need to
wrap it in convenience domain/packages for easier use in other
problems.
--
Waldek Hebisch