Cartesian Product over a list of objects in MAGMA

386 Views Asked by At

I'm currently trying to create the Cartesian Product of certain objects (namely: Character Tables of different finite groups).

However, it seems like I don't really understand the car<$...$> constructor. In the documentation it says, that car<$...$> expects a list of sets or algebraic structures. If the list of character tables is called $xs$, then car<$xs$> won't work. Is it really necessary to "spell out" all the involved structures, like car<$A,B,C$> or am I missing something else?

Alternatively: Shouldn't it be possible to store Character Tables of different finite groups in a sequence? If so, how?

As of my background: I worked quite a lot with Haskell, but it is my first time working with MAGMA. Has MAGMA implemented basic higher-order functions like $fmap$ from Haskell? (so far, I implemented one myself for different types of structures (Sequences, Lists, Tuples) but this seems quite... vulgar)

More concretely:

I've got a list of polynomials $fs$ (given as parameter of a function) over a finite field $F$. I basically want to store $CharacterTable(UnitGroup(ext<F|f>))$ where $f$ ranges through the polynomials in $fs$.

I later want to define a group action on the cartesian product of those Character Tables (after applying SequenceToSet on the CharacterTables).

Ideally, I'd like to have separate CharacterTables instead of looking at the CharacterTable of the product of the groups, as I only need certain characters (those that are primitive in some sense) and it seemed more straightforward to sort them out on each group separately.

1

There are 1 best solutions below

1
On BEST ANSWER

You can store the character tables in a list using [* ... *], for example

F := FiniteField(3);
P<x> := PolynomialRing(F);
S := [ x^2 + 1, x^3 +x^2 +x +2];
CT := [* CharacterTable(UnitGroup(ext<F|f>)) : f in S *];

Then if you want to create a cartesian product space, you can use the CartesianProduct command as so:

CTP := CartesianProduct([Universe(c) : c in CT]); 

I'm not sure how easy it is to define a group action on this, but I hope it helps.