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.