trac #15627: (disjoint) Union of graphs with multiple edges
Implementation of universal coefficients
trac #14844 code clean-up
Avoid loading not needed functions and improve slightly the procedure to construct coroots.
trac #14844 tentative of simplification using CartanMatrix
Changed doctest to reflect coxeter3/Chevie being installed.
Fix: we were taking dual too many times
Removed comments that are no longer needed
Changed default implementation for CoxeterGroup.
Use 'almost_positive_root' method from
`sage/combinat/root_system/root_lattice_realizations.py`
trac #15627: rebase on 6.2.beta3
trac #15627: Fixed doctest
Trac #15910: Fix doctest in root_systems/coxeter_group.py when coxeter3 is install

Because the default behavior of `CoxeterGroup` is different when
coxeter3 is installed and when it is not.

More precisely, with coxeter3 installed the following doctest failure
happens

{{{
sage -t coxeter_group.py
**********************************************************************
File "coxeter_group.py", line 69, in
sage.combinat.root_system.coxeter_group.CoxeterGroup
Failed example:
    W
Expected:
    Coxeter group over Universal Cyclotomic Field with Coxeter matrix:
    [1 3 2]
    [3 1 5]
    [2 5 1]
Got:
    Permutation Group with generators [(2,6)(3,18)(4,8)(5,9)(7,10)(11,12
)(13,14)(17,21)(19,23)(20,24)(22,25)(26,27)(28,29), (1,4)(2,17)(3,6)(5,7
)(9,11)(10,12)(14,15)(16,19)(18,21)(20,22)(24,26)(25,27)(29,30), (1,16)(
2,5)(4,7)(6,9)(8,10)(11,13)(12,14)(17,20)(19,22)(21,24)(23,25)(26,28)(27
,29)]
}}}

URL: http://trac.sagemath.org/15910
Reported by: tscrim
Ticket author(s): Travis Scrimshaw
Reviewer(s): Anne Schilling
Trac #14844: Implement cluster algebras with universal coefficients

This is a first implementation of cluster algebras with universal
coefficients.

It is far from being optimal for several reasons. The biggest issues
comes from an incompatibility between QuiverMutationType and CartanType:
there is no clean way to translate one into the other. A more subtle
issue is that CartanType does not allow to choose the ordering on simple
roots while in a cluster algebra everything is defined up to relabeling.
To solve these issues, in this patch,  the set of positive roots is
computed by hand. As a consequence the order in which they appear is not
the standard one.

For the overall development of sage we might consider a cleanup and
extension of CartanType, RootSystem etc to allow Cartan matrices as
input.

URL: http://trac.sagemath.org/14844
Reported by: etn40ff
Ticket author(s): Salvatore Stella
Reviewer(s): Frédéric Chapoton
Trac #15627: (disjoint) Union of graphs with multiple edges

Err... Right now, the disjoint union of two graphs with multiedges/loops
is the disjoint union of those two graphs without loops nor multiple
edges. That's clearly missing from the code.

Here is the new behaviour
{{{
        Multiple edges and loops::

            sage: g = Graph(multiedges=True, loops=True)
            sage: g.add_edges(graphs.PetersenGraph().edges())
            sage: g.add_edges(graphs.PetersenGraph().edges())
            sage: g.add_edge(0,0)
            sage: g.add_edge(0,0,"Hey")
            sage: g.add_edge(0,9)
            sage: g.add_edge(0,9)
            sage: g.add_edge(0,9)
            sage: (2*g.size()) == (2*g).size()
            True

        Immutable input ? Immutable output::

            sage: g = g.copy(immutable=True)
            sage: (2*g)._backend
            <class
'sage.graphs.base.static_sparse_backend.StaticSparseBackend'>
}}}

I hate multiedges. I hate loops. I hate labels.

Nathann

URL: http://trac.sagemath.org/15627
Reported by: ncohen
Ticket author(s): Nathann Cohen
Reviewer(s): Frédéric Chapoton