jump to navigation

Fixed Field Computation: Magma vs PARI January 8, 2012

Posted by bossudenotredame in Function fields, Galois Theory, Magma.
add a comment

This is how Magma computes the fixed field of a subgroup U of the Galois group of a number field K:


to_field := function(K, U:Partial := false)
if Type(K) eq FldCyc and Type(U) eq GrpAb then
G, Map:= CyclotomicAutomorphismGroup(K);
mG, G := CosetAction(G, sub);
U := U@mG;
Map := Inverse(mG) * Map;
else
G,_, Map:= AutomorphismGroup(K:Partial := Partial);
end if;
pe := PrimitiveElement(K);
if not IsSimple(K) then
f, GG := CosetAction(G, sub);
Map := Inverse(f)*Map;
G := GG;
U := f(U);
end if;
assert IsTransitive(G);
rt := [pe@(g@Map) where _, g := IsConjugate(G, 1, i) : i in [1..#G]];
if G eq U then
i := SLPolynomialRing(Integers(), Degree(G));
i := &+ [i.j : j in [1..Degree(G)]];
else
i := RelativeInvariant(G, U);
end if;
t := Polynomial([0,1]);
all_t := {t};
a,b := GetSeed();
SetSeed(1,1);
repeat
r := { Evaluate(i,
[Evaluate(t, x) : x in PermuteSequence(rt, u)]) :
u in Transversal(G, U)};
repeat
t := Polynomial([Random(2) : x in all_t] cat [1]);
until t notin all_t;
Include(~all_t, t);
until #r eq #G div #U;
SetSeed(a,b);
f := &*[Polynomial([-s, 1]) : s in r];
if #G eq Degree(K) then
f := Polynomial(BaseField(K), f);
else
c := sub;
f := Polynomial(c, f);
end if;
if not exists(x){x : x in r | sub eq U} then
error "cannot find correct embedding";
end if;
k := NumberField(f:Check := false);
Embed(k, K, x);
if #G ne Degree(K) then
k := AbsoluteField(k);
Embed(k, K, K!k.1);
end if;
return k;
end function;

And this is how PARI does it:


GEN
galoisfixedfield(GEN gal, GEN perm, long flag, long y)
{
pari_sp lbot, ltop = avma;
GEN T, L, P, S, PL, O, res, mod, mod2;
long x, n, i;
if (flag2) pari_err(flagerr, "galoisfixedfield");
gal = checkgal(gal); T = gal_get_pol(gal);
x = varn(T);
L = gal_get_roots(gal); n = lg(L)-1;
mod = gal_get_mod(gal);
if (typ(perm) == t_VEC)
{
if (is_group(perm)) perm = gel(perm, 1);
for (i = 1; i val)
{
if (DEBUGLEVEL>=4)
fprintferr("GaloisConj:increase p-adic prec by %ld.\n", Pgb.valabs-val);
PL = ZpX_liftroots(P, PL, Pgb.l, Pgb.valabs);
L = ZpX_liftroots(T, L, Pgb.l, Pgb.valabs);
mod = Pgb.ladicabs;
}
PM = vandermondeinversemod(PL, P, Pden, mod);
if (y < 0) y = fetch_user_var("y");
if (y <= x)
pari_err(talker,"variable priority too high in galoisfixedfield");
lbot = avma; res = cgetg(4, t_VEC);
gel(res,3) = fixedfieldfactor(L,O,gal_get_group(gal), PM,Pden,mod,mod2,x,y);
}
gel(res,1) = gcopy(P);
gel(res,2) = gmodulo(S, T);
return gerepile(ltop, lbot, res);
}

My Magma mission June 28, 2010

Posted by bossudenotredame in Magma.
add a comment

I’m very into Magma computation. First, I need to do some computation every so often so I can keep my taste about approaching Magma and Magma programming doesn’t become an inaccessible giant for me. Second is that with computation I feel object much better. For example it happened to me few days ago when I tried to compute the canonical divisor of some curves/function fields. One lesson was that although Riemann Roche is working for any extension of the function field the Canonical divisor does not necessarily lives in the constant field that we are working in. It also gave me more insight on places and stuff and some motivation on reading more on Weierstrass points.

Third reason is that computation give you some guidance of what you should aim to prove.

Now my concerns is about computing the automorphisms of a function field. This is not about the Gal of the function field over a rational field but it’s about all automorphism of a function field, period. Hess has a paper on it which I’m currently reading. And would like to see some touchable automorphism soon.

I like to change my search project to change my search from a plain extension search to search for extensions of a subfield of my (non rational function fields). Here we are.

Magma, Depression, Happiness May 11, 2010

Posted by bossudenotredame in Magma.
add a comment

One of the good thing about programming with Magma is that you feel the urge to celebrate when every single line of your code is accepted by this rigid cruel interpreter.

Magma and the trouble with a subfield of a function field. May 10, 2010

Posted by bossudenotredame in Function fields, Magma.
Tags:
add a comment

In Magma, a subfield of a function field MUST contains the rational function field on which the function field originally defined. Bullshit! I wish I would have been born a time where computer algebra had made more progress. Now, I’m thinking about a way to circumvent this disability.  You don’t need to be genius to guess it! You need to redefine your function field over a new rational function field which is contained in both the original rational function field and your desirable subfield. However, you need to figure out the new minimal polynomials which comes into the picture. I have some idea how to compute them (if I have a factorization algorithm at my hand) I had enough for the night. Tomorrow is another day.