Hi Waldek,
Thank you for your helpful reply, lots of issues here:
On 26/05/2025 14:56, Waldek Hebisch wrote:
> AFAICS _both_ can represent either topologies or isomorphism classes.
> In both cases to get isomorphism classes you need to to some
> filtering to choose a representaitve or form abstracition classes
> (classes of equvalent topologies).
The idea here is that:
* topologies are sets of _labeled_ sets
* isomorphism classes are sets of _unlabeled_ sets
(both with the usual meet,join top and bottom axioms)
So when we go from labeled sets to unlabeled sets all we have left is
the number of elements (cardinality) which looses the information about
meets and joins so we have to put that explicitly back into the
representation as a subset structure.
Representing isomorphism classes in this way does not involve choosing a
representative. Also I hope there should be a canonical way to represent
the subset structure so that I can implement: equality(=) is isomorphic
to isomorphism. (a bit like Voevodsky’s Univalence Axiom).
I take your point that we can represent either with both representations
but it seems a lot more efficient this way round.
For instance, representing isomorphism classes with a labeled set and
then using only representative members seems like creating arbitrary
information that is not used (would the nice property that meets are
intersections and joins are unions still be valid in this case?).
Or, this other way round, the following two topologies would have the
same shape lattice, so how do you distinguish them from the substructure
only?
[{}, {3}, {1, 2}, {1, 2, 3}]
[{}, {1}, {2, 3}, {1, 2, 3}]
> Typicaly is is easier to work with partial pre-orders, as there is only
> one pre-order corresponding to a given topology, while you can
> take many different bases.
I think that may be what I meant by 'subset structure'. I was thinking
of implementing it as a list of (subset,superset) pairs. Since subset
and superset are NNI indexes I was hoping there would be a way to force
them in a canonical order.
>> I want to be able to convert between these representations.
>
> Given a topology and a point p consider minimal open set contaning
> p, call it U(p). Such a set exist, you can get it as intersection
> of all open sets contaning p (since topology is finite this is a
> finite family of open sets, so its intersection is open). You
> can compute U(p) taking intersection of all elements of a basis
> containing p. Once you know U(p) you know pre-order: q <= p
> and only if q \in U(p). Conversly, when you know pre-order
> you can get U(p) as {q : q <= p }. U(p) give you a basis of
> topology (in fact a minimal basis, every other basis must
> contain all U(p)).
Yes, I have been experimenting with some code for converting topologies
to/from basis. I need to do some more work on this.
>> For instance,
>> given a topology isomorphism class, I want a function that will list all
>> topologies for that class and also a function to construct one
>> representative topology. Also I would like a function to go in the reverse
>> direction.
>
> You need to decide how you represent isomorphism class. If you
> represent class using a representative, then going for topology
> to class is trivial, any topology may serve as a representative.
> But then you need code to compute equivalence, and you need to
> deal with conseqences of fact that such representation is
> noncanonical. You man try to put order on topologies, as say
> take smallest topology in a class as a representative, then
> you will need some work to compute representative, but equality
> of classes will be easy.
If you think what I said above is valid then I think I can represent an
isomorphism class without using a representative.
>> Do you think the combinator code in the library would help? Also this
>> subject seems to be related to Galois theory, is there any code in the
>> library that helps with that?
>
> Equvalence of classes can be done via graph isomorphism, but we
> have no code to do this. Enumerating equvalence class is a
> special case for enumerationg isomorphic graphs on the same
> set of vertices.
It seems like we have a sequence of structures each one more specific
than the last:
graph -> partial pre-order -> lattice
It would be good if these things could be implemented in the most
general way and then inherited by more specific structures.
> I do not think that existing code will help much, because it
> seem to solve different problems. Rather, you should look
> at structure of topologies.
OK, thank you for checking this.
I have been thinking for some time now that the most efficient way to
represent a topology would be to build it up from sub-topologies but I
could not work out how to do this. However, I have just realised how to
do it: build a big topology from smaller _discrete_ topologies.
So this:
[{1, 2, 3, 4}, {1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {1, 2},
{1, 3}, {2, 3}, {1, 4}, {1}, {2}, {3}, {}]
could be coded like this:
P{1, 2, 3}+{1, 4}+{1, 2, 4}+{1, 3, 4}+{1, 2, 3, 4}
Where P means powerset.
This is the same way that simplicial complexes are coded. A 'discrete'
topology corresponds to a 'face' and simplicial complexes are built up
from faces.
I am not saying that simplicial complexes are the same as these
topologies (we know they are not). I am just thinking they might be
represented in a similar way.
I have not thought through all of this yet, one thing I would like to
implement is simplicial sets (simplicial complexes with degenerate
faces) Is there any way degenerate faces could be brought into this theory.
Do you think that, if a lattice model domain was implemented in the
FriCAS library then both simplicial complexes and finite topology
domains could be built from it?
Martin