On Wed, May 21, 2025 at 04:23:44PM +0100, Martin Baker wrote:
> I think I am making progress with my finite topology code but I would like
> to check to see if any of you know if there is any existing code in the
> FriCAS library that would help me minimise the code I need to write.
> 
> I have been looking at the library code and I thought there is a possibility
> that nextLatticePermutation in SymmetricGroupCombinatoricFunctions might
> possibly do the sort of thing I want. Is there tutorial information for this
> combinator code and do you think it would help with the following?
> 
> I now have two domains that can represent topology. In the first one each
> representation is a topology like this:
> 
>    -- A topology on a finite set.
>    -- Defined by a list of open sets.
>    -- Elements are labelled by a NNI number.
>    Rep := Record(basis:Boolean,topology:List (Set NNI))
> 
> In the second one each representation is a topology isomorphism class like
> this:
> 
>    -- A representation of a topology isomorphism class consisting of:
>    -- unlabeledOpenSets: the cardinality of each set
>    -- substructure: subset lattice structure represented as a poset
>    -- Only immediate subsets are listed (like Hasse diagram).
>    -- Top and bottom are assumed so don't have to be explicitly listed.
>    Rep := Record(unlabeledOpenSets:List NNI,
>            substructure:List Record(superset:NNI,subset:NNI))
> 
> These two domains have very similar functions but they represent different
> things.

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).

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 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)).

> 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.

> 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.

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.

-- 
                              Waldek Hebisch

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/fricas-devel/aDRy-sxS_xJRqhf7%40fricas.org.

Reply via email to