Projective plane conics over a number field¶
AUTHORS:
 Marco Streng (20100720)

class
sage.schemes.plane_conics.con_number_field.
ProjectiveConic_number_field
(A, f)¶ Bases:
sage.schemes.plane_conics.con_field.ProjectiveConic_field
Create a projective plane conic curve over a number field. See
Conic
for full documentation.EXAMPLES:
sage: K.<a> = NumberField(x^3  2, 'a') sage: P.<X, Y, Z> = K[] sage: Conic(X^2 + Y^2  a*Z^2) Projective Conic Curve over Number Field in a with defining polynomial x^3  2 defined by X^2 + Y^2 + (a)*Z^2

has_rational_point
(point=False, obstruction=False, algorithm='default', read_cache=True)¶ Returns
True
if and only ifself
has a point defined over its base field \(B\).If
point
andobstruction
are both False (default), then the output is a booleanout
saying whetherself
has a rational point.If
point
orobstruction
is True, then the output is a pair(out, S)
, whereout
is as above and: if
point
is True andself
has a rational point, thenS
is a rational point,  if
obstruction
is True,self
has no rational point, thenS
is a prime or infinite place of \(B\) such that no rational point exists over the completion atS
.
Points and obstructions are cached whenever they are found. Cached information is used for the output if available, but only if
read_cache
is True.ALGORITHM:
The parameter
algorithm
specifies the algorithm to be used:'rnfisnorm'
– Use PARI’s rnfisnorm (cannot be combined withobstruction = True
)'local'
– Check if a local solution exists for all primes and infinite places of \(B\) and apply the Hasse principle. (Cannot be combined withpoint = True
.)'default'
– Use algorithm'rnfisnorm'
first. Then, if no point exists and obstructions are requested, use algorithm'local'
to find an obstruction.'magma'
(requires Magma to be installed) – delegates the task to the Magma computer algebra system.
EXAMPLES:
An example over \(\QQ\)
sage: C = Conic(QQ, [1, 113922743, 310146482690273725409]) sage: C.has_rational_point(point = True) (True, (76842858034579/5424 : 5316144401/5424 : 1)) sage: C.has_rational_point(algorithm = 'local', read_cache = False) True
Examples over number fields:
sage: K.<i> = QuadraticField(1) sage: C = Conic(K, [1, 3, 5]) sage: C.has_rational_point(point = True, obstruction = True) (False, Fractional ideal (i  2)) sage: C.has_rational_point(algorithm = "rnfisnorm") False sage: C.has_rational_point(algorithm = "rnfisnorm", obstruction = True, read_cache=False) Traceback (most recent call last): ... ValueError: Algorithm rnfisnorm cannot be combined with obstruction = True in has_rational_point sage: P.<x> = QQ[] sage: L.<b> = NumberField(x^35) sage: C = Conic(L, [1, 2, 3]) sage: C.has_rational_point(point = True, algorithm = 'rnfisnorm') (True, (5/3 : 1/3 : 1)) sage: K.<a> = NumberField(x^4+2) sage: Conic(QQ, [4,5,6]).has_rational_point() False sage: Conic(K, [4,5,6]).has_rational_point() True sage: Conic(K, [4,5,6]).has_rational_point(algorithm='magma', read_cache=False) # optional  magma True
 if

is_locally_solvable
(p)¶ Returns
True
if and only ifself
has a solution over the completion of the base field \(B\) ofself
atp
. Herep
is a finite prime or infinite place of \(B\).EXAMPLES:
sage: P.<x> = QQ[] sage: K.<a> = NumberField(x^3 + 5) sage: C = Conic(K, [1, 2, 3  a]) sage: [p1, p2] = K.places() sage: C.is_locally_solvable(p1) False sage: C.is_locally_solvable(p2) True sage: O = K.maximal_order() sage: f = (2*O).factor() sage: C.is_locally_solvable(f[0][0]) True sage: C.is_locally_solvable(f[1][0]) False

local_obstructions
(finite=True, infinite=True, read_cache=True)¶ Returns the sequence of finite primes and/or infinite places such that
self
is locally solvable at those primes and places.If the base field is \(\QQ\), then the infinite place is denoted \(1\).
The parameters
finite
andinfinite
(both True by default) are used to specify whether to look at finite and/or infinite places. Note thatfinite = True
involves factorization of the determinant ofself
, hence may be slow.Local obstructions are cached. The parameter
read_cache
specifies whether to look at the cache before computing anything.EXAMPLES
sage: K.<i> = QuadraticField(1) sage: Conic(K, [1, 2, 3]).local_obstructions() [] sage: L.<a> = QuadraticField(5) sage: Conic(L, [1, 2, 3]).local_obstructions() [Ring morphism: From: Number Field in a with defining polynomial x^2  5 To: Algebraic Real Field Defn: a > 2.236067977499790?, Ring morphism: From: Number Field in a with defining polynomial x^2  5 To: Algebraic Real Field Defn: a > 2.236067977499790?]
