Given a (ternary) quadratic form over $\mathbb{Z}$ how can I find all quadratic forms (up to equivalence over $\mathbb{Z}$) in the same genus?
1 Answer
Now that I think of it, people may not realize that the entirety of the tables by Brandt and Intrau are available, compiled by Alexander Schiemann TABLE 1 and TABLE 2. As far as the words "odd" and "even," Alexander followed usage from integral lattices, as in SPLAG by Conway and Sloane
added: I do not know of any software that deals with indefinite ternaries. What follows is about positive forms
as long as the power of two dividing the discriminant is not too large, you will get the genus correctly split into spinor genera with my Magma program. I guess I will put samples first. Note that it correctly says the genus of $x^2 + 24 y^2 + 576 z^2$ has four classes, but it prints out four spinor genera with repeat of the one spinor genus, which is nonsense. The actual genus has two spinor genera,
---------------------------------------
g0 : 55296 : 1 24 576 0 0 0 auto 8
g1 : 55296 : 24 25 25 14 0 0 auto 8
---------------------------------------
g2 : 55296 : 4 24 145 0 4 0 auto 8
g3 : 55296 : 9 24 64 0 0 0 auto 8
---------------------------------------
jagy@phobeusjunior:~$ sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath Version 6.9, Release Date: 2015-10-10 │
│ Type "notebook()" for the browser-based notebook interface. │
│ Type "help()" for help. │
└────────────────────────────────────────────────────────────────────┘
sage: q1 = QuadraticForm(ZZ,3,[1,0,0, 24,0, 576] )
sage: q1
Quadratic form in 3 variables over Integer Ring with coefficients:
[ 1 0 0 ]
[ * 24 0 ]
[ * * 576 ]
sage: q1.det()
110592
sage: q1.number_of_automorphisms()
8
sage: q1.conway_mass()
1/2
sage:
sage: quit
Exiting Sage (CPU time 0m0.41s, Wall time 1m5.23s).
jagy@phobeusjunior:~$
The trouble first came to my attention about 1996 when Manjul Bhargava was corresponding with Irving Kaplansky, Manjul asked Magma to find all forms alone in a genus, and it gave the wrong answer for $x^2 + 8 y^2 + 64 z^2 \; . \;$ I put a good deal of relevant material at TERNARY
Oh, precisely because of these occasional errors, I now have a number of error correcting programs. The final say is the Mass Formula, which is given correctly in Sage. I am hoping that I can get someone competent to finish some fairly basic routines in Sage so that checking is less annoying. Gonzalo Tornaria wrote the handful of commands they have. It is especially important at this time to get such a thing: I searched for spinor regular forms from about 2004-2007. Just recently, Andrew Earnest and Anna Haensch (student of Wai Kiu Chan) completed a proof that my list SPINOR REGULAR is complete, but I suspect this is contingent on my list being complete up to the bound I used. I would like someone to do my search over; I had written some elaborate workarounds, that is why it took three years of my time to run, but it is always possible that I did not really correct every error.
==============================================================================
// http://magma.maths.usyd.edu.au/calc
Q:=RationalField();
Z:=Integers();
M3:=MatrixRing(IntegerRing(),3);
tolettuce:=function(sixlist)
temp := LatticeWithGram(M3![2 * sixlist[1],sixlist[6],sixlist[5],
sixlist[6], 2 * sixlist[2],sixlist[4],
sixlist[5],sixlist[4],2 * sixlist[3]]);
return temp ;
end function;
tohex := function(lettuce)
tripe := Basis(lettuce);
return [ Norm( tripe[1] ) div 2 ,
Norm( tripe[2] ) div 2 ,
Norm( tripe[3] ) div 2 ,
InnerProduct( tripe[2],tripe[3] ) ,
InnerProduct( tripe[3],tripe[1] ) ,
InnerProduct( tripe[1],tripe[2] ) ] ;
end function;
temp2 := tolettuce([1, 24, 576, 0, 0, 0]); // CHANGE !!!!!!!!!!
tempgenus := GenusRepresentatives(temp2);
tempSG := SpinorGenera(Genus(temp2));
print "=====Discriminant " , " ==Genus Size== ", #tempgenus , "\n";
// print "This genus has " , #tempSG , " spinor genera ------\n";
reps := [ Representatives(S) : S in tempSG];
for i in [1..#reps] do
tempspin := reps[i];
// print "-------------**---------------------- ", " s. g. size--- ", #tempspin , "\n";
for j in [1..#tempspin] do
tohex(tempspin[j]);
end for;
print "\n---**----- end of spinor genus ", i, " --------\n";
// print "--------------------------------------------------";
end for;
=====================================================================================