Spec means the same thing in Sage that it does everywhere else. It's just that
Spec
just doesn't check to see whether its input is a prime ideal: it relies on SchemeTopologicalPoint_prime_ideal
: You can tell this because the __call__
method of sage.schemes.generic.spec.Spec
is simply
return point.SchemeTopologicalPoint_prime_ideal(self, x)
However SchemeTopologicalPoint_prime_ideal
doesn't check to see whether the input ideal is prime either! It does allow an optional argument check
which will perform the check, but this is disabled by default. Here is the code from sage.schemes.generic.point.SchemeTopologicalPoint_prime_ideal.__init__
:
R = S.coordinate_ring()
from sage.rings.ideal import Ideal
P = Ideal(R, P)
# ideally we would have check=True by default, but
# unfortunately is_prime() is only implemented in a small
# number of cases
if check and not P.is_prime():
raise ValueError, "The argument %s must be a prime ideal of %s"%(P, R)
SchemeTopologicalPoint.__init__(self, S)
self.__P = P
So if you were calling SchemeTopologicalPoint_prime_ideal
directly, you could pass check=True
to have it check for you:
sage: S = Spec(ZZ)
sage: nZ = ZZ.ideal(6)
sage: from sage.schemes.generic.point import SchemeTopologicalPoint_prime_ideal as primept
sage: primept(S,nZ)
Point on Spectrum of Integer Ring defined by the Principal ideal (6) of Integer Ring
sage: primept(S,nZ,check=True)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
...
ValueError: The argument Principal ideal (6) of Integer Ring must be a prime ideal of Integer Ring
Unfortunately, the __call__
method of Spec
doesn't take a check
argument, and it doesn't pass its additional keyword arguments along using **kwds
, so there isn't a way to have Spec
check for you directly.
To me, this all seems confusing, shoddy, and disappointing; you should file a ticket on Trac for this (if there isn't one already). If you're in a situation where you need this functionality, I would suggest adding a line of code to check whether the ideal is prime before you pass it to Spec
.