-
-
Notifications
You must be signed in to change notification settings - Fork 496
Sage 10.5 Release Tour
Sage 10.5 was released on December 4, 2024. This is the current stable release.
Here is an overview of some of the main changes in this version.
The validity check method, is_valid
, now accepts the boolean argument certificate
. When certificate
is set to True
, the method is_valid
returns a tuple of a boolean and a dictionary. The dictionary provides some more information in case the matroid is not valid. #38711
sage: C = [[1, 2, 3], [3, 4, 5]]
sage: M = Matroid(circuits=C)
sage: M.is_valid(certificate=True)
(False,
{'circuit 1': frozenset({3, 4, 5}),
'circuit 2': frozenset({1, 2, 3}),
'element': 3,
'error': 'elimination axiom failed'})
There is a direct implementation of Chow rings of matroids in Sage and some variations (all with the maximal building set) #38281:
- the "classical" Feitchner-Yuzvinsky presentation;
- the atom-free presentation; and
- the Feitchner-Yuzvinsky for the augmented Chow ring.
The new ring PolynomialSpecies
supports computations with polynomial combinatorial species. Unlike previous implementations, as in Maple, MuPad, Axiom, and Sage itself, it regards a species as a formal sum of group actions of symmetric groups. The species must be polynomial, that is, only finitely many symmetric groups may occur. This restriction will be removed with #38544
The ring allows computations with virtual weighted multisort species. All the major operations, such as sum, product, composition and Hadamard product are provided. One can define a species by providing the underlying permutation group or by specifying a group action of (a Young subgroup of) the symmetric group. In particular, it is now possible to compute the atomic expansion of any given species.
For example:
sage: P.<X> = PolynomialSpecies(R)
sage: E = sum(P(SymmetricGroup(n)) for n in range(5))
sage: E1 = sum(P(SymmetricGroup(n)) for n in range(1,5))
sage: E(q*E1).truncate(5)
1 + q*X + (q^2+q)*E_2 + (q^3+q)*E_3 + q^2*X*E_2 + (q^4+q)*E_4 + q^2*X*E_3 + q^2*P_4 + q^3*E_2^2
Several improvements have been made like the initialization of a backend and a significant speed up of method gomory_hu_tree
. #38664 #38791
New methods have been added to check whether an input list of vertices (or edges) forms a vertex (or edge) cut of the graph, and to orient a graph according to an input function. #38418 #38435 #38778
sage: G = graphs.PathGraph(10)
sage: D = G.orient(lambda e:e if (e[0] + e[1]) % 3 == 0 else (e[1], e[0], e[2]))
sage: D.edges(labels=False)
[(1, 0), (1, 2), (3, 2), (4, 3), (4, 5), (6, 5), (7, 6), (7, 8), (9, 8)]
A uniform generator of random proper interval graphs has been added. #38354
sage: G = graphs.RandomProperIntervalGraph(50)
sage: G.is_interval()
True
sage: G.clique_number()
11
sage: G.treewidth()
10
Graphs and digraphs now have a tikz()
method. It returns an instance of the TikzPicture
module, which inherits from the Standalone
module within the misc/latex_standalone.py
file.
As a consequence, the following now works in Jupyter. By default, it uses the dot2tex
format if dot2tex
and graphviz
are available:
It works in the command line as well :
sage: g = graphs.PetersenGraph()
sage: t = g.tikz(); t
\documentclass[tikz]{standalone}
\standaloneconfig{border=4mm}
\begin{document}
\begin{tikzpicture}[>=latex,line join=bevel,]
...
\end{tikzpicture}
\end{document}
sage: t.pdf() # opens the pdf in a viewer
'/tmp/tmpw6435r83/tikz_tgs0sr2y.pdf'
sage: t.pdf('filename.pdf') # save the file
'/path/to/present/working/directory/pwd/filename.pdf'
It works well with sagetex. For example:
\begin{sagesilent}
g = graphs.PetersenGraph()
tikz = g.tikz()
\end{sagesilent}
\begin{center}
\sageplot[scale=.5][pdf]{tikz}
\end{center}
The addition was made in #38798. Method tikz
is planned to be added to other objects soon including posets #38848 and crystals #38759.
Sage can now identify non-prime knots as a connected sum of prime knots from the KnotInfo database. #38254
An implementation of the BGG resolution of a finite dimensional Lie algebra representation has been implemented #37297. This includes a number of additional features, including all simple modules, BGG category dual modules, and additional methods to root systems.
gcc
13.3.0 #38442
sympy
1.13.2 #36641
suitesparse
7.8.0 #37204
fpylll
0.6.1 #38231
libffi
3.4.6 #38308
libpng
1.6.37 #38522
sphinx
7.4.7 #38549
cypari2
2.2.0 #38183
pytest
, pytest_mock
, pytest_xdist
are now standard wheel packages. #37301
mathics
7.0.0dev0 #37395
database_knotinfo
2024.10.1 #38822
jmol
and jupyter_jmol
have been demoted from standard to optional. #38504 #38532
Meson build experimental meson build system for the Sage library.
Deprecation Policy for classes updated. #38273
Reviewing Code for PRs affecting user interface added. #38503
The doctest precision tag # abs tol
now compares complex numbers. #38433
Doc previews for PRs show TESTS as well as EXAMPLES so that developers may double-check newly added TESTS. However, as before, TESTS are not included in the doc of a release. #38449
Binary wheels are now built also for musllinux
platforms and the aarch64
architecture. #38272
Source distributions of the modularized distribution packages are now also made available on GitHub Releases. #38519
The new files SAGE_ROOT/constraints_pkgs.txt and SAGE_ROOT/pkgs/sagemath-standard/constraints_pkgs.txt assist with building the modularized distribution packages directly from the repository. See the included comments for instructions. 37434
See also https://github.com/sagemath/sage/issues/29705
Global imports:
-
GroupExp_Class
,GroupExpElement
,GroupSemidirectProductElement
#38238
is_...
functions:
-
is_Ideal
,is_LaurentSeries
,is_MPolynomialIdeal
,is_MPolynomialRing
,is_MPowerSeries
,is_PolynomialQuotientRing
,is_PolynomialRing
,is_PolynomialSequence
,is_PowerSeries
,is_QuotientRing
#38266 -
is_ChowCycle
,is_CohomologyClass
,is_Divisor
,is_ToricDivisor
#38277 -
is_Infinite
#38278 -
is_SymmetricFunction
#38279 -
is_AlphabeticStringMonoidElement
,is_BinaryStringMonoidElement
,is_HexadecimalStringMonoidElement
,is_OctalStringMonoidElement
,is_Radix64StringMonoidElement
,is_StringMonoidElement
#38280 -
is_Ring
#38288 -
is_FunctionFieldElement
,is_FunctionFieldElement
#38289 -
is_LaurentSeriesRing
,is_MPowerSeriesRing
,is_PowerSeriesRing
#38290 -
is_SchemeMorphism
,is_SchemeTopologicalPoint
#38296
The source code is available in the Sage GitHub repository.
Sage builds successfully on the following platforms:
-
Linux 64-bit (x86_64)
- ubuntu-{xenial-toolchain-gcc_9, bionic-gcc_8, focal, jammy, lunar, mantic, noble}
- debian-{bullseye, bookworm, trixie, sid}
- linuxmint-{20.1, 20.2, 21, 21.1, 21.2, 21.3}
- fedora-{30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}
- centos-stream-9-python3.9
- almalinux-{8, 9}
- archlinux
- gentoo
- opensuse-{15.5-gcc_11-python3.11, tumbleweed}
-
Linux 64-bit (RISC-V)
- When meson is used, the Giac program and library become optional dependencies of SageMath, making it possible to install Sage without Giac. All other dependencies (and Sage itself) have been updated/verified to work on RISC-V. Thanks are due to RISC-V International for donating the hardware to make this possible.
-
Linux 32-bit (i386/i686)
- debian-bullseye
-
macOS (Intel) (x86_64) - with Homebrew or without
- macOS 12.x (Monterey)
- macOS 13.x (Ventura)
- macOS 14.x (Sonoma)
-
macOS (Apple Silicon, M1/M2/M3) - with Homebrew or without
- Make sure that
/usr/local
does not contain an old copy of homebrew (or other software) for x86_64 that you may have copied from an old machine. Homebrew for the M1/M2/M3 is installed in/opt/homebrew
, not/usr/local
. - Be sure to follow the README and the instructions that the
./configure
command issues regarding the installation of system packages from Homebrew or conda.
- Make sure that
You can also build Sage on top of conda-forge on Linux and macOS.
configure
now checks that the build directory is on a normal writable file system. https://github.com/sagemath/sage/pull/38256
See README.md in the source distribution for installation instructions.
Visit sage-support for installation help.
Readme | Version | Citation | Authors | Contributing | Code of Conduct | Copyright ©️ 2023 Sage Developer Community