Re: Constructing big Galois groups by hand

73 views
Skip to first unread message

Maarten Derickx

unread,
Jul 4, 2012, 8:53:05 AM7/4/12
to sag...@googlegroups.com
Hi,

It's a good idea to look at the inner workings of sage now. I you do:

sage: QQ[sqrt(2)]
sage: _.galois_group??

Then you will get to see what get's called when wou try to create a galois group. It seems that all the magic happen in the __init__ method of the class GaloisGroup_v2 found in https://sage.mderickx.nl/src/rings/number_field/galois_group.py .

If you read that close enough you will see that all what is needed to get a class group from your numberfield is for the numberfield in question to have the methods:
.is_galois()
and
.galois_closure(names,map)

So what I would do is make a subclass of the numberfield class in sage overwriting those two methods as needed. So you would do something like:

class MyFancyTypeOfNumberField(sage.rings.number_field.number_field.NumberField_absolute):

    def is_galois(self):
        return False #at least if your fance type of number fields is always not galois.

    def galois_closure(self,names=None,map=False):
        <some code to calculate the galois closure of self and also the map from self to it's galois closure>
        if map:
            return galois_closure_of_self,map_to_galois_closuer
        return galois closure


After this everything should automagically work. If you don't care about the galois closure but you do have a fancy way to compute with the galois group without constructing the galois closure then I guess you have to write your own code. Preferably by writing a class GaloisGroup_v3 similar to GaloisGroup_v2 but without the availability of the galois closure.

Le jeudi 14 juin 2012 14:27:32 UTC-4, Jon Yard a écrit :
Hi,

I am trying to use Sage to work in number fields whose degree is too large for their Galois groups to be constructed by the stock F.galois_group() command that calls pari or kash.  I also don't have, nor do I want to purchase, Magma.  In some cases, Sage can handle large Galois groups, such as for big cyclotomic fields, where I assume that somehow under the hood they are being constructed directly because we already know how they act as permutations on the roots of cyclotomic polynomials.  I would like to be able to do something similar for fields that have a promise of being sufficiently simple - in my case I am dealing with fields that are apparently abelian extensions of quadratic fields.  While I don't know precisely which extensions I am working with, I am able to, for instance, compute F.automorphisms() for the absolute field F.  I can also easily compute Frel.automorphisms() for a relativized version Frel that is an extension of a given quadratic subfield and check that all pairs of automorphisms fixing the base field commute.  So far, most of the computing I have been doing has been along these lines, by hacking up code that works with the automorphisms obtained in this way.  However, now I want to compute things like decomposition groups and Artin symbols, and while I could indeed hack this stuff up too, I have the feeling it would be much easier for me to do this if I had some understanding of how to fill in the internal Galois group data structure so that I can use the already developed Sage functionality for doing this stuff.  

So, could someone give me some advice about how to specify the Galois group of a field by hand?  It would only take a couple of lines of code to associate a permutation of the roots of the defining polynomial to each automorphism of the absolute field - but how do I tell Sage this represents the Galois group so that I can do further computations with it?

Thanks, 
Jon 
Reply all
Reply to author
Forward
0 new messages