Differences between revisions 15 and 16
Revision 15 as of 2018-01-23 13:08:36
Size: 8022
Editor: dimpase
Comment:
Revision 16 as of 2018-01-23 13:16:02
Size: 11743
Editor: tscrim
Comment:
Deletions are marked like this. Additions are marked like this.
Line 135: Line 135:
== Improve Representation Theory ==

|| Mentor || Travis Scrimshaw ||
|| Area || Representation theory, algebra, combinatorics ||
|| Skills || Understanding of algebra, basic understanding of combinatorics, experience with Cython preferred ||

Sage is currently the only software that provides systematic support for crystals,
combinatorial realizations of Kac-Moody algebra representations. However, Sage does
not have a lot of support for other aspects of representation theory and there is
room for improvement in the current code. Some of the potential projects include:

 * Implement various bases for the symmetric group algebra.
 * Implement induction and restriction functors.
 * Implement representations for Hecke algebras.
 * Implement group representations as modules.
 * Algorithm to find invariant subspaces [[https://trac.sagemath.org/ticket/11285|#11285]].
 * Finalize implementations of Fock space, Lie algebras, cellular algebras, etc.

== Implement Lie superalgebras ==

|| Mentor || Travis Scrimshaw ||
|| Area || Algebra, representation theory ||
|| Skills || Understanding of algebra, experience with Cython preferred ||

Lie superalgebras were introduced by Kac in order to unify bosons and fermions.
The goal of this project is to extend the Lie algebra framework in Sage to Lie
superalgebras and provide a basic implementation of the standard finite-dimensional
Lie superalgebras and their representations.

== Improve Root and Coxeter Systems ==

|| Mentor || Travis Scrimshaw ||
|| Area || Representation theory, combinatorics, geometry ||
|| Skills || Solid foundation of linear algebra, experience with root systems preferred ||

This project is above improving the implementation of root systems and Coxeter systems
in Sage. It is divided into 3 main areas:

==== Root systems ====

We currently have an implementation of root systems with special inputs for finite and
affine types, but there has been interest to implement an easy system for obtaining hyperbolic
types. One goal is to implement such a system. Another aspect is to make the current
implementation of Dynkin diagrams, Cartan matrices, and root systems more robust.

==== Coxeter systems ====

The currently implementation of Coxeter systems currently uses the root system code
and needs to be improved. In particular, this removing any ambiguity between
types B and C.

==== Complex reflection groups ====

One last aspect is that the root system code could be used to describe a permutation
representation of finite complex reflection groups, but currently this relies on the
(experimental) GAP3 package. This is not strictly necessary, and we should remove
this as a dependency by doing a direct implementation.

== Implement Quantum Cluster (Super)Algebras ==

|| Mentor || Travis Scrimshaw ||
|| Area || Combinatorics, algebra ||
|| Skills || Solid foundation of algebra, experience reading research papers preferable ||

Cluster algebras have been implemented in Sage (see, e.g.,
[[http://doc.sagemath.org/html/en/reference/combinat/sage/combinat/cluster_algebra_quiver/cluster_seed.html|ClusterSeed]]
and [[https://trac.sagemath.org/ticket/21254|#21254]]). The next step is to implement
the quantum version, where the variables now skew commute. Quantum cluster algebras
are known to have deep connections with various areas of mathematics. (Quantum) Cluster
superalgebras are a super version of (quantum) cluster algebras that are in the process
of being developed, but there are currently some proposed structures. The primary goal
of this project is to provide a basic implementation.

GSoC 2018: Ideas Page

Introduction

Welcome to Sage's Ideas Page for GSoC 2018!

SageMath's GSoC organization homepage -- the hub for submitting applications and where the everything on Google's side is organized.

Please subscribe to the sage-gsoc mailing list and the GAP developer list for discussion on possible GAP GSoC projects. Also, make sure you have gone through the information regarding application procedures, requirements and general advice. The Application Template is also available on that wiki page. Archives of past GSoC project ideas can be found here.

All projects will start with an introduction phase to learn about Sage’s (or sister projects') internal organization and to get used to their established development process. We also require you to show us that you are able to execute actual development by submitting a relevant patch and/or reviewing a ticket via Trac of the project you are interested in applying to. The developer guide is a great comprehensive resource that can guide you through your first steps in contributing to Sage.

Apart from the project ideas listed below, there is also a comprehensive list of future feature wishes in our trac issue tracker. They might contain the perfect project idea for you we didn't even think about!

Project Ideas

Addition of SPQR-tree to graph module

Mentor

David Coudert

Area

Graph theory

Objective:

The goal of this project is to contribute the graph theory module of SageMath with the addition of the linear time algorithm for partitioning a graph into 3-connected components [1] and the construction of the corresponding SPQR-tree [2]. Then, we will use these algorithms as pre-processing for several graph problems such as Hamiltonian Cycle, TSP, etc.

The preferred approach will be to create an interface for the OGDF library [3] that contains an efficient C++ implementation of the construction of SPQR-trees.

[1] J. E. Hopcroft, R. E. Tarjan: Dividing a Graph into Triconnected Components. SIAM J. Comput. 2(3): 135-158 (1973) [2] C. Gutwenger, P. Mutzel: A Linear Time Implementation of SPQR-Trees. Graph Drawing 2000: 77-90 [3] http://www.ogdf.net/

---

Matroid Theory (several topics)

Mentor

Stefan van Zwam

Area

Matroid Theory, Graph Theory, Combinatorics

Skills

Strong foundation in (discrete) mathematics (PhD student level), strong programming skills, experience reading research papers

Matroid theory in SageMath can be improved in many ways. Some potential topics, of varying difficulty, are:

  • Support for signed-graphic [5], gain-graphic, frame matroids [6] (showing the graph, resigning across cuts, Whitney switching, etc.)
  • Tangles and branch decompositions [4]
  • Faster minor testing (finish ticket 16545 [3], and extend the ideas to non-binary matroids)
  • A framework for dealing with minor-closed classes: like a set data structure, but with some support for minors.
  • linear extensions/coextensions that keep track of allowed vectors.
  • Bracket rings [2] /Tutte groups/universal partial fields [1] (needs: strong knowledge of algebra and Groebner bases)

[1] http://matroidunion.org/?p=2103

[2] https://en.wikipedia.org/wiki/Bracket_ring

[3] https://trac.sagemath.org/ticket/16545

[4] https://www.sciencedirect.com/science/article/pii/S0095895609000082

[5] https://arxiv.org/abs/1405.1313

[6] https://arxiv.org/abs/1609.05574

Redesigning the polynomial class hierarchy and linking with libraries

Mentor

Jean-Pierre Flori

Area

Basic algebra, C/C++, Cython

Skills

Strong programming skills, familiarity with polynomial algebra

Sage supports univariate and multivariate polynomial arithmetic over general rings with many features. For efficiency, it is crucial that Sage links to low-level implementations for polynomials over certain rings, such as finite fields or integers. These things have been in Sage for a long time, and e.g. much of the linking code was written in early versions of Cython when it was much less powerful than it is now.

It is time to rethink and redesign the class hierarchy and the linking code for polynomials in Sage. The task in this project is to get an overview of the current features Sage supports, what we would like to do forward, and then come up with a better, cleaner design and implementation for doing this. This will entail re-linking to the many projects Sage already talks to, and perhaps find projects that have appeared on the OSS scene since.

Polynomial optimisation and sums of squares (multiple projects)

Mentor

Dima Pasechnik

Area

Nonlinear optimisation, real algebraic geometry

Skills

algebra, Python, C/C++, Cython, linear/nonlinear optimisation, numerical analysis (MSc/PhD level)

Optimisation problems with polynomial constraints are efficiently, in practice, solved by building an increasingly tight sequence of semidefinite programming (SDP) relaxations, one of them known as Lasserre hierarchy [1].

While Sagemath already has an ability to solve SDPs, more work has to be done in particular to implement moment matrices for polynomials and sums of squares approximations of nonnegative polynomials, and a frontend allowing to define systems of polynomial inequalities using natural syntax, similar to what already can be done with systems of linear inequalities. Another related topic would be to interface to Sagemath more SDP solvers (currently only CVXOPT is available), and possibly prototype an arbitrary precision SDP solver to avoid typical numerical difficulties arising in sums of squares-based SDP relaxations, e.g. implementing a version of the algorithm from [2].

[1] https://en.wikipedia.org/wiki/Sum-of-squares_optimization

[2] https://arxiv.org/abs/1507.03549

---

Databases of and bounds of codes (multiple projects)

Mentor

Dima Pasechnik (with extra support by Johan Rosenkilde)

Area

Coding theory

Skills

Basic programming skills, knowledge of algebra and discrete mathematics (BSc/MSc level or better)

Sagemath already has a considerable coding theory component. We will aim to extend it to allow constructions of optimal linear (and perhaps more general) codes, akin to a non-open-source [1]. In particular, while Sagemath is capable to compute bounds on code sizes, in many cases matching bounds of [1] (or even better than these), there is no systematic way to organise these bounds available.

The main task here will be to construct optimal (or best known) codes for given sets of parameters, in many cases combining constructions already available in Sagemath to build codes inductively. This is similar in technique to what is already done in Sagemath for Hadamard matrices and other combinatorial objects such as strongly regular graphs. Smaller tasks would be to implement linear programming bounds for constant weight codes, as well as semidefinite optimisation-based bounds due to A.Schrijver et al., see e.g. [2].

[1] http://codetables.de/

[2] https://www.math.u-bordeaux.fr/~cbachocb/articles/handbook.pdf

Improve Representation Theory

Mentor

Travis Scrimshaw

Area

Representation theory, algebra, combinatorics

Skills

Understanding of algebra, basic understanding of combinatorics, experience with Cython preferred

Sage is currently the only software that provides systematic support for crystals, combinatorial realizations of Kac-Moody algebra representations. However, Sage does not have a lot of support for other aspects of representation theory and there is room for improvement in the current code. Some of the potential projects include:

  • Implement various bases for the symmetric group algebra.
  • Implement induction and restriction functors.
  • Implement representations for Hecke algebras.
  • Implement group representations as modules.
  • Algorithm to find invariant subspaces #11285.

  • Finalize implementations of Fock space, Lie algebras, cellular algebras, etc.

Implement Lie superalgebras

Mentor

Travis Scrimshaw

Area

Algebra, representation theory

Skills

Understanding of algebra, experience with Cython preferred

Lie superalgebras were introduced by Kac in order to unify bosons and fermions. The goal of this project is to extend the Lie algebra framework in Sage to Lie superalgebras and provide a basic implementation of the standard finite-dimensional Lie superalgebras and their representations.

Improve Root and Coxeter Systems

Mentor

Travis Scrimshaw

Area

Representation theory, combinatorics, geometry

Skills

Solid foundation of linear algebra, experience with root systems preferred

This project is above improving the implementation of root systems and Coxeter systems in Sage. It is divided into 3 main areas:

Root systems

We currently have an implementation of root systems with special inputs for finite and affine types, but there has been interest to implement an easy system for obtaining hyperbolic types. One goal is to implement such a system. Another aspect is to make the current implementation of Dynkin diagrams, Cartan matrices, and root systems more robust.

Coxeter systems

The currently implementation of Coxeter systems currently uses the root system code and needs to be improved. In particular, this removing any ambiguity between types B and C.

Complex reflection groups

One last aspect is that the root system code could be used to describe a permutation representation of finite complex reflection groups, but currently this relies on the (experimental) GAP3 package. This is not strictly necessary, and we should remove this as a dependency by doing a direct implementation.

Implement Quantum Cluster (Super)Algebras

Mentor

Travis Scrimshaw

Area

Combinatorics, algebra

Skills

Solid foundation of algebra, experience reading research papers preferable

Cluster algebras have been implemented in Sage (see, e.g., ClusterSeed and #21254). The next step is to implement the quantum version, where the variables now skew commute. Quantum cluster algebras are known to have deep connections with various areas of mathematics. (Quantum) Cluster superalgebras are a super version of (quantum) cluster algebras that are in the process of being developed, but there are currently some proposed structures. The primary goal of this project is to provide a basic implementation.

---

TEMPLATE

Project Title

Mentor

Name(s)

Area

Mathematical and/or technical scope ...

Skills

What the student should bring ...

...

  • ...
  • ...

GSoC/2018 (last edited 2018-02-20 00:32:41 by tscrim)