passagemath-schemes 10.6.47__cp312-cp312-macosx_13_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
  2. passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
  3. passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
  4. passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
  5. passagemath_schemes/__init__.py +3 -0
  6. passagemath_schemes-10.6.47.dist-info/METADATA +204 -0
  7. passagemath_schemes-10.6.47.dist-info/METADATA.bak +205 -0
  8. passagemath_schemes-10.6.47.dist-info/RECORD +311 -0
  9. passagemath_schemes-10.6.47.dist-info/WHEEL +6 -0
  10. passagemath_schemes-10.6.47.dist-info/top_level.txt +3 -0
  11. sage/all__sagemath_schemes.py +23 -0
  12. sage/databases/all__sagemath_schemes.py +7 -0
  13. sage/databases/cremona.py +1723 -0
  14. sage/dynamics/all__sagemath_schemes.py +2 -0
  15. sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
  16. sage/dynamics/arithmetic_dynamics/all.py +14 -0
  17. sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
  18. sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
  19. sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
  20. sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
  21. sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
  22. sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
  23. sage/dynamics/arithmetic_dynamics/projective_ds.py +9558 -0
  24. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-312-darwin.so +0 -0
  25. sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
  26. sage/dynamics/arithmetic_dynamics/wehlerK3.py +2576 -0
  27. sage/lfunctions/all.py +18 -0
  28. sage/lfunctions/dokchitser.py +745 -0
  29. sage/lfunctions/pari.py +818 -0
  30. sage/lfunctions/zero_sums.cpython-312-darwin.so +0 -0
  31. sage/lfunctions/zero_sums.pyx +1847 -0
  32. sage/modular/abvar/abvar.py +5135 -0
  33. sage/modular/abvar/abvar_ambient_jacobian.py +413 -0
  34. sage/modular/abvar/abvar_newform.py +244 -0
  35. sage/modular/abvar/all.py +8 -0
  36. sage/modular/abvar/constructor.py +186 -0
  37. sage/modular/abvar/cuspidal_subgroup.py +371 -0
  38. sage/modular/abvar/finite_subgroup.py +896 -0
  39. sage/modular/abvar/homology.py +720 -0
  40. sage/modular/abvar/homspace.py +998 -0
  41. sage/modular/abvar/lseries.py +415 -0
  42. sage/modular/abvar/morphism.py +935 -0
  43. sage/modular/abvar/torsion_point.py +274 -0
  44. sage/modular/abvar/torsion_subgroup.py +740 -0
  45. sage/modular/all.py +43 -0
  46. sage/modular/arithgroup/all.py +20 -0
  47. sage/modular/arithgroup/arithgroup_element.cpython-312-darwin.so +0 -0
  48. sage/modular/arithgroup/arithgroup_element.pyx +474 -0
  49. sage/modular/arithgroup/arithgroup_generic.py +1402 -0
  50. sage/modular/arithgroup/arithgroup_perm.py +2692 -0
  51. sage/modular/arithgroup/congroup.cpython-312-darwin.so +0 -0
  52. sage/modular/arithgroup/congroup.pyx +334 -0
  53. sage/modular/arithgroup/congroup_gamma.py +363 -0
  54. sage/modular/arithgroup/congroup_gamma0.py +692 -0
  55. sage/modular/arithgroup/congroup_gamma1.py +653 -0
  56. sage/modular/arithgroup/congroup_gammaH.py +1469 -0
  57. sage/modular/arithgroup/congroup_generic.py +628 -0
  58. sage/modular/arithgroup/congroup_sl2z.py +267 -0
  59. sage/modular/arithgroup/farey_symbol.cpython-312-darwin.so +0 -0
  60. sage/modular/arithgroup/farey_symbol.pyx +1066 -0
  61. sage/modular/arithgroup/tests.py +418 -0
  62. sage/modular/btquotients/all.py +4 -0
  63. sage/modular/btquotients/btquotient.py +3753 -0
  64. sage/modular/btquotients/pautomorphicform.py +2570 -0
  65. sage/modular/buzzard.py +100 -0
  66. sage/modular/congroup.py +29 -0
  67. sage/modular/congroup_element.py +13 -0
  68. sage/modular/cusps.py +1109 -0
  69. sage/modular/cusps_nf.py +1270 -0
  70. sage/modular/dims.py +569 -0
  71. sage/modular/dirichlet.py +3310 -0
  72. sage/modular/drinfeld_modform/all.py +2 -0
  73. sage/modular/drinfeld_modform/element.py +446 -0
  74. sage/modular/drinfeld_modform/ring.py +773 -0
  75. sage/modular/drinfeld_modform/tutorial.py +236 -0
  76. sage/modular/etaproducts.py +1065 -0
  77. sage/modular/hecke/algebra.py +746 -0
  78. sage/modular/hecke/all.py +20 -0
  79. sage/modular/hecke/ambient_module.py +1019 -0
  80. sage/modular/hecke/degenmap.py +119 -0
  81. sage/modular/hecke/element.py +325 -0
  82. sage/modular/hecke/hecke_operator.py +780 -0
  83. sage/modular/hecke/homspace.py +206 -0
  84. sage/modular/hecke/module.py +1767 -0
  85. sage/modular/hecke/morphism.py +174 -0
  86. sage/modular/hecke/submodule.py +989 -0
  87. sage/modular/hypergeometric_misc.cpython-312-darwin.so +0 -0
  88. sage/modular/hypergeometric_misc.pxd +4 -0
  89. sage/modular/hypergeometric_misc.pyx +166 -0
  90. sage/modular/hypergeometric_motive.py +2017 -0
  91. sage/modular/local_comp/all.py +2 -0
  92. sage/modular/local_comp/liftings.py +292 -0
  93. sage/modular/local_comp/local_comp.py +1071 -0
  94. sage/modular/local_comp/smoothchar.py +1825 -0
  95. sage/modular/local_comp/type_space.py +748 -0
  96. sage/modular/modform/all.py +30 -0
  97. sage/modular/modform/ambient.py +815 -0
  98. sage/modular/modform/ambient_R.py +177 -0
  99. sage/modular/modform/ambient_eps.py +306 -0
  100. sage/modular/modform/ambient_g0.py +124 -0
  101. sage/modular/modform/ambient_g1.py +204 -0
  102. sage/modular/modform/constructor.py +545 -0
  103. sage/modular/modform/cuspidal_submodule.py +708 -0
  104. sage/modular/modform/defaults.py +14 -0
  105. sage/modular/modform/eis_series.py +505 -0
  106. sage/modular/modform/eisenstein_submodule.py +663 -0
  107. sage/modular/modform/element.py +4131 -0
  108. sage/modular/modform/find_generators.py +59 -0
  109. sage/modular/modform/half_integral.py +154 -0
  110. sage/modular/modform/hecke_operator_on_qexp.py +247 -0
  111. sage/modular/modform/j_invariant.py +47 -0
  112. sage/modular/modform/l_series_gross_zagier.py +133 -0
  113. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-312-darwin.so +0 -0
  114. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
  115. sage/modular/modform/notes.py +45 -0
  116. sage/modular/modform/numerical.py +514 -0
  117. sage/modular/modform/periods.py +14 -0
  118. sage/modular/modform/ring.py +1257 -0
  119. sage/modular/modform/space.py +1860 -0
  120. sage/modular/modform/submodule.py +118 -0
  121. sage/modular/modform/tests.py +64 -0
  122. sage/modular/modform/theta.py +110 -0
  123. sage/modular/modform/vm_basis.py +381 -0
  124. sage/modular/modform/weight1.py +220 -0
  125. sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
  126. sage/modular/modform_hecketriangle/abstract_space.py +2528 -0
  127. sage/modular/modform_hecketriangle/all.py +30 -0
  128. sage/modular/modform_hecketriangle/analytic_type.py +590 -0
  129. sage/modular/modform_hecketriangle/constructor.py +416 -0
  130. sage/modular/modform_hecketriangle/element.py +351 -0
  131. sage/modular/modform_hecketriangle/functors.py +752 -0
  132. sage/modular/modform_hecketriangle/graded_ring.py +541 -0
  133. sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
  134. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3352 -0
  135. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1432 -0
  136. sage/modular/modform_hecketriangle/readme.py +1214 -0
  137. sage/modular/modform_hecketriangle/series_constructor.py +580 -0
  138. sage/modular/modform_hecketriangle/space.py +1037 -0
  139. sage/modular/modform_hecketriangle/subspace.py +423 -0
  140. sage/modular/modsym/all.py +17 -0
  141. sage/modular/modsym/ambient.py +3846 -0
  142. sage/modular/modsym/boundary.py +1420 -0
  143. sage/modular/modsym/element.py +336 -0
  144. sage/modular/modsym/g1list.py +178 -0
  145. sage/modular/modsym/ghlist.py +182 -0
  146. sage/modular/modsym/hecke_operator.py +73 -0
  147. sage/modular/modsym/manin_symbol.cpython-312-darwin.so +0 -0
  148. sage/modular/modsym/manin_symbol.pxd +5 -0
  149. sage/modular/modsym/manin_symbol.pyx +497 -0
  150. sage/modular/modsym/manin_symbol_list.py +1295 -0
  151. sage/modular/modsym/modsym.py +400 -0
  152. sage/modular/modsym/modular_symbols.py +384 -0
  153. sage/modular/modsym/p1list_nf.py +1241 -0
  154. sage/modular/modsym/relation_matrix.py +591 -0
  155. sage/modular/modsym/relation_matrix_pyx.cpython-312-darwin.so +0 -0
  156. sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
  157. sage/modular/modsym/space.py +2468 -0
  158. sage/modular/modsym/subspace.py +455 -0
  159. sage/modular/modsym/tests.py +375 -0
  160. sage/modular/multiple_zeta.py +2632 -0
  161. sage/modular/multiple_zeta_F_algebra.py +786 -0
  162. sage/modular/overconvergent/all.py +6 -0
  163. sage/modular/overconvergent/genus0.py +1878 -0
  164. sage/modular/overconvergent/hecke_series.py +1187 -0
  165. sage/modular/overconvergent/weightspace.py +778 -0
  166. sage/modular/pollack_stevens/all.py +4 -0
  167. sage/modular/pollack_stevens/distributions.py +874 -0
  168. sage/modular/pollack_stevens/fund_domain.py +1572 -0
  169. sage/modular/pollack_stevens/manin_map.py +859 -0
  170. sage/modular/pollack_stevens/modsym.py +1593 -0
  171. sage/modular/pollack_stevens/padic_lseries.py +417 -0
  172. sage/modular/pollack_stevens/sigma0.py +534 -0
  173. sage/modular/pollack_stevens/space.py +1076 -0
  174. sage/modular/quasimodform/all.py +3 -0
  175. sage/modular/quasimodform/element.py +845 -0
  176. sage/modular/quasimodform/ring.py +828 -0
  177. sage/modular/quatalg/all.py +3 -0
  178. sage/modular/quatalg/brandt.py +1642 -0
  179. sage/modular/ssmod/all.py +8 -0
  180. sage/modular/ssmod/ssmod.py +827 -0
  181. sage/rings/all__sagemath_schemes.py +1 -0
  182. sage/rings/polynomial/all__sagemath_schemes.py +1 -0
  183. sage/rings/polynomial/binary_form_reduce.py +585 -0
  184. sage/schemes/all.py +41 -0
  185. sage/schemes/berkovich/all.py +6 -0
  186. sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
  187. sage/schemes/berkovich/berkovich_space.py +748 -0
  188. sage/schemes/curves/affine_curve.py +2928 -0
  189. sage/schemes/curves/all.py +33 -0
  190. sage/schemes/curves/closed_point.py +434 -0
  191. sage/schemes/curves/constructor.py +381 -0
  192. sage/schemes/curves/curve.py +542 -0
  193. sage/schemes/curves/plane_curve_arrangement.py +1283 -0
  194. sage/schemes/curves/point.py +463 -0
  195. sage/schemes/curves/projective_curve.py +3026 -0
  196. sage/schemes/curves/zariski_vankampen.py +1932 -0
  197. sage/schemes/cyclic_covers/all.py +2 -0
  198. sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
  199. sage/schemes/cyclic_covers/constructor.py +137 -0
  200. sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
  201. sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
  202. sage/schemes/elliptic_curves/BSD.py +1036 -0
  203. sage/schemes/elliptic_curves/Qcurves.py +592 -0
  204. sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
  205. sage/schemes/elliptic_curves/all.py +49 -0
  206. sage/schemes/elliptic_curves/cardinality.py +609 -0
  207. sage/schemes/elliptic_curves/cm.py +1102 -0
  208. sage/schemes/elliptic_curves/constructor.py +1552 -0
  209. sage/schemes/elliptic_curves/ec_database.py +175 -0
  210. sage/schemes/elliptic_curves/ell_curve_isogeny.py +3972 -0
  211. sage/schemes/elliptic_curves/ell_egros.py +459 -0
  212. sage/schemes/elliptic_curves/ell_field.py +2836 -0
  213. sage/schemes/elliptic_curves/ell_finite_field.py +3359 -0
  214. sage/schemes/elliptic_curves/ell_generic.py +3760 -0
  215. sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
  216. sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
  217. sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
  218. sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
  219. sage/schemes/elliptic_curves/ell_point.py +4787 -0
  220. sage/schemes/elliptic_curves/ell_rational_field.py +7368 -0
  221. sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
  222. sage/schemes/elliptic_curves/ell_torsion.py +436 -0
  223. sage/schemes/elliptic_curves/ell_wp.py +352 -0
  224. sage/schemes/elliptic_curves/formal_group.py +760 -0
  225. sage/schemes/elliptic_curves/gal_reps.py +1459 -0
  226. sage/schemes/elliptic_curves/gal_reps_number_field.py +1669 -0
  227. sage/schemes/elliptic_curves/gp_simon.py +152 -0
  228. sage/schemes/elliptic_curves/heegner.py +7335 -0
  229. sage/schemes/elliptic_curves/height.py +2109 -0
  230. sage/schemes/elliptic_curves/hom.py +1406 -0
  231. sage/schemes/elliptic_curves/hom_composite.py +934 -0
  232. sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
  233. sage/schemes/elliptic_curves/hom_scalar.py +531 -0
  234. sage/schemes/elliptic_curves/hom_sum.py +682 -0
  235. sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
  236. sage/schemes/elliptic_curves/homset.py +271 -0
  237. sage/schemes/elliptic_curves/isogeny_class.py +1521 -0
  238. sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
  239. sage/schemes/elliptic_curves/jacobian.py +237 -0
  240. sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
  241. sage/schemes/elliptic_curves/kraus.py +1014 -0
  242. sage/schemes/elliptic_curves/lseries_ell.py +943 -0
  243. sage/schemes/elliptic_curves/mod5family.py +105 -0
  244. sage/schemes/elliptic_curves/mod_poly.py +197 -0
  245. sage/schemes/elliptic_curves/mod_sym_num.cpython-312-darwin.so +0 -0
  246. sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
  247. sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
  248. sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
  249. sage/schemes/elliptic_curves/padics.py +1816 -0
  250. sage/schemes/elliptic_curves/period_lattice.py +2234 -0
  251. sage/schemes/elliptic_curves/period_lattice_region.cpython-312-darwin.so +0 -0
  252. sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
  253. sage/schemes/elliptic_curves/saturation.py +715 -0
  254. sage/schemes/elliptic_curves/sha_tate.py +1158 -0
  255. sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
  256. sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
  257. sage/schemes/hyperelliptic_curves/all.py +6 -0
  258. sage/schemes/hyperelliptic_curves/constructor.py +291 -0
  259. sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1914 -0
  260. sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
  261. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +954 -0
  262. sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
  263. sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
  264. sage/schemes/hyperelliptic_curves/invariants.py +410 -0
  265. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +315 -0
  266. sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
  267. sage/schemes/hyperelliptic_curves/jacobian_generic.py +419 -0
  268. sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
  269. sage/schemes/hyperelliptic_curves/jacobian_morphism.py +875 -0
  270. sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
  271. sage/schemes/hyperelliptic_curves/mestre.py +302 -0
  272. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3871 -0
  273. sage/schemes/jacobians/abstract_jacobian.py +277 -0
  274. sage/schemes/jacobians/all.py +2 -0
  275. sage/schemes/overview.py +161 -0
  276. sage/schemes/plane_conics/all.py +22 -0
  277. sage/schemes/plane_conics/con_field.py +1296 -0
  278. sage/schemes/plane_conics/con_finite_field.py +158 -0
  279. sage/schemes/plane_conics/con_number_field.py +456 -0
  280. sage/schemes/plane_conics/con_rational_field.py +406 -0
  281. sage/schemes/plane_conics/con_rational_function_field.py +580 -0
  282. sage/schemes/plane_conics/constructor.py +249 -0
  283. sage/schemes/plane_quartics/all.py +2 -0
  284. sage/schemes/plane_quartics/quartic_constructor.py +71 -0
  285. sage/schemes/plane_quartics/quartic_generic.py +73 -0
  286. sage/schemes/riemann_surfaces/all.py +1 -0
  287. sage/schemes/riemann_surfaces/riemann_surface.py +4117 -0
  288. sage_wheels/share/cremona/cremona_mini.db +0 -0
  289. sage_wheels/share/ellcurves/rank0 +30427 -0
  290. sage_wheels/share/ellcurves/rank1 +31871 -0
  291. sage_wheels/share/ellcurves/rank10 +6 -0
  292. sage_wheels/share/ellcurves/rank11 +6 -0
  293. sage_wheels/share/ellcurves/rank12 +1 -0
  294. sage_wheels/share/ellcurves/rank14 +1 -0
  295. sage_wheels/share/ellcurves/rank15 +1 -0
  296. sage_wheels/share/ellcurves/rank17 +1 -0
  297. sage_wheels/share/ellcurves/rank19 +1 -0
  298. sage_wheels/share/ellcurves/rank2 +2388 -0
  299. sage_wheels/share/ellcurves/rank20 +1 -0
  300. sage_wheels/share/ellcurves/rank21 +1 -0
  301. sage_wheels/share/ellcurves/rank22 +1 -0
  302. sage_wheels/share/ellcurves/rank23 +1 -0
  303. sage_wheels/share/ellcurves/rank24 +1 -0
  304. sage_wheels/share/ellcurves/rank28 +1 -0
  305. sage_wheels/share/ellcurves/rank3 +836 -0
  306. sage_wheels/share/ellcurves/rank4 +10 -0
  307. sage_wheels/share/ellcurves/rank5 +5 -0
  308. sage_wheels/share/ellcurves/rank6 +5 -0
  309. sage_wheels/share/ellcurves/rank7 +5 -0
  310. sage_wheels/share/ellcurves/rank8 +6 -0
  311. sage_wheels/share/ellcurves/rank9 +7 -0
@@ -0,0 +1,249 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ r"""
3
+ Plane conic constructor
4
+
5
+ AUTHORS:
6
+
7
+ - Marco Streng (2010-07-20)
8
+
9
+ - Nick Alexander (2008-01-08)
10
+ """
11
+ # ****************************************************************************
12
+ # Copyright (C) 2008 Nick Alexander <ncalexander@gmail.com>
13
+ # Copyright (C) 2009/2010 Marco Streng <marco.streng@gmail.com>
14
+ #
15
+ # Distributed under the terms of the GNU General Public License (GPL)
16
+ #
17
+ # This code is distributed in the hope that it will be useful,
18
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
+ # General Public License for more details.
21
+ #
22
+ # The full text of the GPL is available at:
23
+ #
24
+ # https://www.gnu.org/licenses/
25
+ # ****************************************************************************
26
+
27
+ from sage.matrix.constructor import matrix
28
+ from sage.modules.free_module_element import vector
29
+ from sage.categories.integral_domains import IntegralDomains
30
+ from sage.rings.rational_field import RationalField
31
+ from sage.rings.finite_rings.finite_field_base import FiniteField
32
+ from sage.rings.fraction_field import FractionField_generic
33
+
34
+ from sage.rings.number_field.number_field_base import NumberField
35
+ from sage.rings.polynomial.multi_polynomial import MPolynomial
36
+ from sage.rings.polynomial.multi_polynomial_ring import MPolynomialRing_base
37
+ from sage.rings.polynomial.polynomial_ring import PolynomialRing_generic
38
+ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
39
+ from sage.schemes.affine.affine_point import SchemeMorphism_point_affine
40
+ from sage.schemes.projective.projective_point import SchemeMorphism_point_projective_field
41
+ from sage.schemes.projective.projective_space import ProjectiveSpace
42
+ from sage.structure.all import Sequence
43
+ from sage.structure.element import Matrix
44
+
45
+ from .con_field import ProjectiveConic_field
46
+ from .con_finite_field import ProjectiveConic_finite_field
47
+ from .con_number_field import ProjectiveConic_number_field
48
+ from .con_rational_field import ProjectiveConic_rational_field
49
+ from .con_rational_function_field import ProjectiveConic_rational_function_field
50
+
51
+
52
+ def Conic(base_field, F=None, names=None, unique=True):
53
+ r"""
54
+ Return the plane projective conic curve defined by ``F``
55
+ over ``base_field``.
56
+
57
+ The input form ``Conic(F, names=None)`` is also accepted,
58
+ in which case the fraction field of the base ring of ``F``
59
+ is used as base field.
60
+
61
+ INPUT:
62
+
63
+ - ``base_field`` -- the base field of the conic
64
+
65
+ - ``names`` -- list, tuple, or comma separated string
66
+ of three variable names specifying the names
67
+ of the coordinate functions of the ambient
68
+ space `\Bold{P}^3`. If not specified or read
69
+ off from ``F``, then this defaults to ``'x,y,z'``.
70
+
71
+ - ``F`` -- a polynomial, list, matrix, ternary quadratic form,
72
+ or list or tuple of 5 points in the plane.
73
+
74
+ If ``F`` is a polynomial or quadratic form,
75
+ then the output is the curve in the projective plane
76
+ defined by ``F = 0``.
77
+
78
+ If ``F`` is a polynomial, then it must be a polynomial
79
+ of degree at most 2 in 2 variables, or a homogeneous
80
+ polynomial in of degree 2 in 3 variables.
81
+
82
+ If ``F`` is a matrix, then the output is the zero locus
83
+ of `(x,y,z) F (x,y,z)^t`.
84
+
85
+ If ``F`` is a list of coefficients, then it has
86
+ length 3 or 6 and gives the coefficients of
87
+ the monomials `x^2, y^2, z^2` or all 6 monomials
88
+ `x^2, xy, xz, y^2, yz, z^2` in lexicographic order.
89
+
90
+ If ``F`` is a list of 5 points in the plane, then the output
91
+ is a conic through those points.
92
+
93
+ - ``unique`` -- used only if ``F`` is a list of points in the plane;
94
+ if the conic through the points is not unique, then
95
+ raise :exc:`ValueError` if and only if ``unique`` is ``True``
96
+
97
+ OUTPUT: a plane projective conic curve defined by ``F`` over a field
98
+
99
+ EXAMPLES:
100
+
101
+ Conic curves given by polynomials ::
102
+
103
+ sage: X,Y,Z = QQ['X,Y,Z'].gens()
104
+ sage: Conic(X^2 - X*Y + Y^2 - Z^2)
105
+ Projective Conic Curve over Rational Field defined by X^2 - X*Y + Y^2 - Z^2
106
+ sage: x,y = GF(7)['x,y'].gens()
107
+ sage: Conic(x^2 - x + 2*y^2 - 3, 'U,V,W')
108
+ Projective Conic Curve over Finite Field of size 7
109
+ defined by U^2 + 2*V^2 - U*W - 3*W^2
110
+
111
+ Conic curves given by matrices ::
112
+
113
+ sage: Conic(matrix(QQ, [[1, 2, 0], [4, 0, 0], [7, 0, 9]]), 'x,y,z')
114
+ Projective Conic Curve over Rational Field defined by x^2 + 6*x*y + 7*x*z + 9*z^2
115
+
116
+ sage: x,y,z = GF(11)['x,y,z'].gens()
117
+ sage: C = Conic(x^2 + y^2 - 2*z^2); C
118
+ Projective Conic Curve over Finite Field of size 11 defined by x^2 + y^2 - 2*z^2
119
+ sage: Conic(C.symmetric_matrix(), 'x,y,z')
120
+ Projective Conic Curve over Finite Field of size 11 defined by x^2 + y^2 - 2*z^2
121
+
122
+ Conics given by coefficients ::
123
+
124
+ sage: Conic(QQ, [1,2,3])
125
+ Projective Conic Curve over Rational Field defined by x^2 + 2*y^2 + 3*z^2
126
+ sage: Conic(GF(7), [1,2,3,4,5,6], 'X')
127
+ Projective Conic Curve over Finite Field of size 7
128
+ defined by X0^2 + 2*X0*X1 - 3*X1^2 + 3*X0*X2 - 2*X1*X2 - X2^2
129
+
130
+ The conic through a set of points ::
131
+
132
+ sage: C = Conic(QQ, [[10,2],[3,4],[-7,6],[7,8],[9,10]]); C
133
+ Projective Conic Curve over Rational Field
134
+ defined by x^2 + 13/4*x*y - 17/4*y^2 - 35/2*x*z + 91/4*y*z - 37/2*z^2
135
+ sage: C.rational_point()
136
+ (10 : 2 : 1)
137
+ sage: C.point([3,4])
138
+ (3 : 4 : 1)
139
+
140
+ sage: a = AffineSpace(GF(13), 2)
141
+ sage: Conic([a([x,x^2]) for x in range(5)])
142
+ Projective Conic Curve over Finite Field of size 13 defined by x^2 - y*z
143
+ """
144
+ if not (base_field is None or base_field in IntegralDomains()):
145
+ if names is None:
146
+ names = F
147
+ F = base_field
148
+ base_field = None
149
+ if isinstance(F, (list, tuple)):
150
+ if len(F) == 1:
151
+ return Conic(base_field, F[0], names)
152
+ if names is None:
153
+ names = 'x,y,z'
154
+ if len(F) == 5:
155
+ L = []
156
+ for f in F:
157
+ if isinstance(f, SchemeMorphism_point_affine):
158
+ C = Sequence(f, universe=base_field)
159
+ if len(C) != 2:
160
+ raise TypeError("points in F (=%s) must be planar" % F)
161
+ C.append(1)
162
+ elif isinstance(f, SchemeMorphism_point_projective_field):
163
+ C = Sequence(f, universe=base_field)
164
+ elif isinstance(f, (list, tuple)):
165
+ C = Sequence(f, universe=base_field)
166
+ if len(C) == 2:
167
+ C.append(1)
168
+ else:
169
+ raise TypeError("F (=%s) must be a sequence of planar "
170
+ "points" % F)
171
+ if len(C) != 3:
172
+ raise TypeError("points in F (=%s) must be planar" % F)
173
+ P = C.universe()
174
+ if P not in IntegralDomains():
175
+ raise TypeError("coordinates of points in F (=%s) must "
176
+ "be in an integral domain" % F)
177
+ L.append(Sequence([C[0]**2, C[0] * C[1],
178
+ C[0] * C[2], C[1]**2,
179
+ C[1] * C[2], C[2]**2], P.fraction_field()))
180
+ M = matrix(L)
181
+ if unique and M.rank() != 5:
182
+ raise ValueError("points in F (=%s) do not define a unique "
183
+ "conic" % F)
184
+ con = Conic(base_field, Sequence(M.right_kernel().gen()), names)
185
+ con.point(F[0])
186
+ return con
187
+ F = Sequence(F, universe=base_field)
188
+ base_field = F.universe().fraction_field()
189
+ temp_ring = PolynomialRing(base_field, 3, names)
190
+ x, y, z = temp_ring.gens()
191
+ if len(F) == 3:
192
+ return Conic(F[0] * x**2 + F[1] * y**2 + F[2] * z**2)
193
+ if len(F) == 6:
194
+ return Conic(F[0] * x**2 + F[1] * x * y + F[2] * x * z +
195
+ F[3] * y**2 + F[4] * y * z + F[5] * z**2)
196
+ raise TypeError("F (=%s) must be a sequence of 3 or 6"
197
+ "coefficients" % F)
198
+
199
+ from sage.quadratic_forms.quadratic_form import QuadraticForm
200
+
201
+ if isinstance(F, QuadraticForm):
202
+ F = F.matrix()
203
+ if isinstance(F, Matrix) and F.is_square() and F.ncols() == 3:
204
+ if names is None:
205
+ names = 'x,y,z'
206
+ temp_ring = PolynomialRing(F.base_ring(), 3, names)
207
+ F = vector(temp_ring.gens()) * F * vector(temp_ring.gens())
208
+
209
+ if not isinstance(F, MPolynomial):
210
+ raise TypeError("F (=%s) must be a three-variable polynomial or "
211
+ "a sequence of points or coefficients" % F)
212
+
213
+ if F.total_degree() != 2:
214
+ raise TypeError("F (=%s) must have degree 2" % F)
215
+
216
+ if base_field is None:
217
+ base_field = F.base_ring()
218
+ if base_field not in IntegralDomains():
219
+ raise ValueError(f"Base field (={base_field}) must be a field")
220
+ base_field = base_field.fraction_field()
221
+ if names is None:
222
+ names = F.parent().variable_names()
223
+ pol_ring = PolynomialRing(base_field, 3, names)
224
+
225
+ if F.parent().ngens() == 2:
226
+ x, y, z = pol_ring.gens()
227
+ F = pol_ring(F(x / z, y / z) * z**2)
228
+
229
+ if F == 0:
230
+ raise ValueError("F must be nonzero over base field %s" % base_field)
231
+
232
+ if F.total_degree() != 2:
233
+ raise TypeError("F (=%s) must have degree 2 over base field %s" %
234
+ (F, base_field))
235
+
236
+ if F.parent().ngens() == 3:
237
+ P2 = ProjectiveSpace(2, base_field, names)
238
+ if isinstance(base_field, FiniteField):
239
+ return ProjectiveConic_finite_field(P2, F)
240
+ if isinstance(base_field, RationalField):
241
+ return ProjectiveConic_rational_field(P2, F)
242
+ if isinstance(base_field, NumberField):
243
+ return ProjectiveConic_number_field(P2, F)
244
+ if isinstance(base_field, FractionField_generic) and isinstance(base_field.ring(), (PolynomialRing_generic, MPolynomialRing_base)):
245
+ return ProjectiveConic_rational_function_field(P2, F)
246
+
247
+ return ProjectiveConic_field(P2, F)
248
+
249
+ raise TypeError("Number of variables of F (=%s) must be 2 or 3" % F)
@@ -0,0 +1,2 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ from sage.schemes.plane_quartics.quartic_constructor import QuarticCurve
@@ -0,0 +1,71 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ """
3
+ Quartic curve constructor
4
+ """
5
+
6
+ #*****************************************************************************
7
+ # Copyright (C) 2006 David Kohel <kohel@maths.usyd.edu>
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # http://www.gnu.org/licenses/
10
+ #*****************************************************************************
11
+
12
+ from sage.schemes.projective.projective_space import ProjectiveSpace_ring, ProjectiveSpace
13
+ from sage.rings.polynomial.multi_polynomial import MPolynomial
14
+
15
+ from .quartic_generic import QuarticCurve_generic
16
+
17
+
18
+ def QuarticCurve(F, PP=None, check=False):
19
+ """
20
+ Return the quartic curve defined by the polynomial ``F``.
21
+
22
+ INPUT:
23
+
24
+ - ``F`` -- a polynomial in three variables, homogeneous of degree 4
25
+
26
+ - ``PP`` -- a projective plane (default: ``None``)
27
+
28
+ - ``check`` -- whether to check for smoothness or not (default: ``False``)
29
+
30
+ EXAMPLES::
31
+
32
+ sage: x,y,z = PolynomialRing(QQ, ['x','y','z']).gens()
33
+ sage: QuarticCurve(x**4 + y**4 + z**4)
34
+ Quartic Curve over Rational Field defined by x^4 + y^4 + z^4
35
+
36
+ TESTS::
37
+
38
+ sage: QuarticCurve(x**3 + y**3)
39
+ Traceback (most recent call last):
40
+ ...
41
+ ValueError: Argument F (=x^3 + y^3) must be a homogeneous polynomial of degree 4
42
+
43
+ sage: QuarticCurve(x**4 + y**4 + z**3)
44
+ Traceback (most recent call last):
45
+ ...
46
+ ValueError: Argument F (=x^4 + y^4 + z^3) must be a homogeneous polynomial of degree 4
47
+
48
+ sage: x,y=PolynomialRing(QQ,['x','y']).gens()
49
+ sage: QuarticCurve(x**4 + y**4)
50
+ Traceback (most recent call last):
51
+ ...
52
+ ValueError: Argument F (=x^4 + y^4) must be a polynomial in 3 variables
53
+ """
54
+ if not isinstance(F, MPolynomial):
55
+ raise ValueError(f"Argument F (={F}) must be a multivariate polynomial")
56
+ P = F.parent()
57
+ if not P.ngens() == 3:
58
+ raise ValueError("Argument F (=%s) must be a polynomial in 3 variables" % F)
59
+ if not (F.is_homogeneous() and F.degree() == 4):
60
+ raise ValueError("Argument F (=%s) must be a homogeneous polynomial of degree 4" % F)
61
+
62
+ if PP is not None:
63
+ if not isinstance(PP, ProjectiveSpace_ring) and PP.dimension == 2:
64
+ raise ValueError(f"Argument PP (={PP}) must be a projective plane")
65
+ else:
66
+ PP = ProjectiveSpace(P)
67
+
68
+ if check:
69
+ raise NotImplementedError("Argument checking (for nonsingularity) is not implemented.")
70
+
71
+ return QuarticCurve_generic(PP, F)
@@ -0,0 +1,73 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ """
3
+ Plane quartic curves over a general ring
4
+
5
+ These are generic genus 3 curves, as distinct from hyperelliptic curves of genus 3.
6
+
7
+ EXAMPLES::
8
+
9
+ sage: PP.<X,Y,Z> = ProjectiveSpace(2, QQ)
10
+ sage: f = X^4 + Y^4 + Z^4 - 3*X*Y*Z*(X+Y+Z)
11
+ sage: C = QuarticCurve(f); C
12
+ Quartic Curve over Rational Field
13
+ defined by X^4 + Y^4 - 3*X^2*Y*Z - 3*X*Y^2*Z - 3*X*Y*Z^2 + Z^4
14
+ """
15
+
16
+ #*****************************************************************************
17
+ # Copyright (C) 2006 David Kohel <kohel@maths.usyd.edu>
18
+ # Distributed under the terms of the GNU General Public License (GPL)
19
+ # https://www.gnu.org/licenses/
20
+ #*****************************************************************************
21
+
22
+
23
+ import sage.schemes.curves.projective_curve as projective_curve
24
+
25
+
26
+ def is_QuarticCurve(C):
27
+ """
28
+ Check whether ``C`` is a Quartic Curve.
29
+
30
+ EXAMPLES::
31
+
32
+ sage: from sage.schemes.plane_quartics.quartic_generic import is_QuarticCurve
33
+ sage: x,y,z = PolynomialRing(QQ, ['x','y','z']).gens()
34
+ sage: Q = QuarticCurve(x**4 + y**4 + z**4)
35
+ sage: is_QuarticCurve(Q)
36
+ doctest:warning...
37
+ DeprecationWarning: The function is_QuarticCurve is deprecated; use 'isinstance(..., QuarticCurve_generic)' instead.
38
+ See https://github.com/sagemath/sage/issues/38022 for details.
39
+ True
40
+ """
41
+ from sage.misc.superseded import deprecation
42
+ deprecation(38022, "The function is_QuarticCurve is deprecated; use 'isinstance(..., QuarticCurve_generic)' instead.")
43
+ return isinstance(C, QuarticCurve_generic)
44
+
45
+
46
+ class QuarticCurve_generic(projective_curve.ProjectivePlaneCurve):
47
+ # DRK: Note that we should check whether the curve is
48
+
49
+ def _repr_type(self):
50
+ """
51
+ Return the representation of ``self``.
52
+
53
+ EXAMPLES::
54
+
55
+ sage: x,y,z = PolynomialRing(QQ, ['x','y','z']).gens()
56
+ sage: Q = QuarticCurve(x**4 + y**4 + z**4)
57
+ sage: Q._repr_type()
58
+ 'Quartic'
59
+ """
60
+ return "Quartic"
61
+
62
+ def genus(self):
63
+ """
64
+ Return the genus of ``self``.
65
+
66
+ EXAMPLES::
67
+
68
+ sage: x,y,z = PolynomialRing(QQ, ['x','y','z']).gens()
69
+ sage: Q = QuarticCurve(x**4 + y**4 + z**4)
70
+ sage: Q.genus()
71
+ 3
72
+ """
73
+ return 3
@@ -0,0 +1 @@
1
+ # sage_setup: distribution = sagemath-schemes