Plane curve genus: new minimal polynomial
When I calculate the genus of a plane curve using the genus()
method of sage.schemes.plane_curves.constructor.Curve
(link to relevant section in doc), sometimes I get — in addition to the genus I want — mysterious comments in the output of the program, starting with // new minimal polynomial:
For instance, consider the following script attached at the end (the curve is not very pleasant, sorry):
The output I got was, for instance,
// new minimal polynomial: 8388608a6-56623104a5+153870336a4-215516160a3+164224800a2-64609812a+10263321
11
Moreover, the output could be different from time to time — I might instead get
// new minimal polynomial: 4294967296a6+13287555072a5+11447304192a4+1539440640a3-590284800a2-81160704a+1531737
11
So, here are the questions:
- The "new minimal polynomial" is minimal polynomial for what?
- If it is a minimal polynomial for something, how can it differ from time to time? (Maybe it's just a smaller polynomial, found by some pseudorandom algorithm?)
The script:
a,c = QQ['a,c'].gens()
C = Curve(-2798725168+461771379108*a-2026910575458*a^2+4151086929672*a^3-5217273932612*a^4+4488851151980*a^5-2795906455386*a^6+1300248444520*a^7-458801503024*a^8+123480937216*a^9-25234796448*a^10+3855957632*a^11-427328512*a^12+32477184*a^13-1515520*a^14+32768*a^15-116086191328*c+2381324024032*a*c-8985743841048*a^2*c+16883787929524*a^3*c-19825466345024*a^4*c+16068411133032*a^5*c-9477560429192*a^6*c+4191571736228*a^7*c-1412089724480*a^8*c+364268886432*a^9*c-71637075840*a^10*c+10577168192*a^11*c-1137480704*a^12*c+84260864*a^13*c-3850240*a^14*c+81920*a^15*c-386827294080*c^2+5196088441024*a*c^2-17436971701024*a^2*c^2+30092346738208*a^3*c^2-32789599200704*a^4*c^2+24794409105408*a^5*c^2-13700315709728*a^6*c^2+5698520368800*a^7*c^2-1812921897280*a^8*c^2+443610741248*a^9*c^2-83156279872*a^10*c^2+11765719808*a^11*c^2-1219596544*a^12*c^2+87636992*a^13*c^2-3911680*a^14*c^2+81920*a^15*c^2-556222620160*c^3+6328667548160*a*c^3-19321151581568*a^2*c^3+30615987390656*a^3*c^3-30724460583936*a^4*c^3+21439453981056*a^5*c^3-10954396351616*a^6*c^3+4223878268352*a^7*c^3-1249740396032*a^8*c^3+285575739520*a^9*c^3-50250852608*a^10*c^3+6717158272*a^11*c^3-662987776*a^12*c^3+45791744*a^13*c^3-1986560*a^14*c^3+40960*a^15*c^3-430272436224*c^4+4746703641600*a*c^4-13378680965632*a^2*c^4+19407977837568*a^3*c^4-17768616264704*a^4*c^4+11289502817280*a^5*c^4-5246156586496*a^6*c^4+1838841595904*a^7*c^4-494741820416*a^8*c^4+102961438208*a^9*c^4-16555312128*a^10*c^4+2034173440*a^11*c^4-186308608*a^12*c^4+12110848*a^13*c^4-504320*a^14*c^4+10240*a^15*c^4-188890226688*c^5+2268756279296*a*c^5-5949268568064*a^2*c^5+7848288220160*a^3*c^5-6469644722176*a^4*c^5+3675923691520*a^5*c^5-1518338836480*a^6*c^5+470154699776*a^7*c^5-111018799104*a^8*c^5+20138723328*a^9*c^5-2804363264*a^10*c^5+297183232*a^11*c^5-23527424*a^12*c^5+1343488*a^13*c^5-51200*a^14*c^5+1024*a^15*c^5-45849968640*c^6+687227781120*a*c^6-1676822601728*a^2*c^6+1987867099136*a^3*c^6-1447157547008*a^4*c^6+715900944384*a^5*c^6-253734559744*a^6*c^6+66274705408*a^7*c^6-12911591424*a^8*c^6+1873125376*a^9*c^6-198885376*a^10*c^6+14819328*a^11*c^6-704512*a^12*c^6+16384*a^13*c^6-5527830528*c^7+126001741824*a*c^7-283182268416*a^2*c^7+295809630208*a^3*c^7-184556716032*a^4*c^7+76120358912*a^5*c^7-21778432000*a^6*c^7+4402036736*a^7*c^7-624558080*a^8*c^7+59932672*a^9*c^7-3538944*a^10*c^7+98304*a^11*c^7-254803968*c^8+12520783872*a*c^8-25276317696*a^2*c^8+22509649920*a^3*c^8-11455430656*a^4*c^8+3655598080*a^5*c^8-754057216*a^6*c^8+98959360*a^7*c^8-7602176*a^8*c^8+262144*a^9*c^8+509607936*a*c^9-891813888*a^2*c^9+644087808*a^3*c^9-245366784*a^4*c^9+51904512*a^5*c^9-5767168*a^6*c^9+262144*a^7*c^9)
print C.genus()
The calculation seems to be performed by Singular. Unwrapping the code, what C.genus() does is: sage: I = C.defining_ideal() sage: genus = sage.libs.singular.ff.normal__lib.genus sage: genus(I) // new minimal polynomial: 2097152a6+2359296a5-239616a4-518400a3+37800a2+13203a+54 11
@Francis Clarke Thanks for the information. Are you familiar with the inner workings of the genus function in Singular? A quick search in Singular documentation still does not answer why (some sort of) minimal polynomial gets printed as a comment (http://www.singular.uni-kl.de/Manual/html/sing_602.htm). Moreover, you might have noticed that you got yet another minimal polynomial, distinct from the two I listed above, presumably with the exact same input.
No, I did look briefly at the Singular documentation, but couldn't find anything helpful. Yes, I also found that the minimal polynomial varies. I tried calling genus(I) 32 times, and got 17 distinct polynomials. However, there were only 5 distinct leading coefficients.
@Francis Clarke Thanks, I guess I'll end up reading the source code if this minimal polynomial thing turns out to be important.