remove deprecated code from sage/matrix
Merge branch 'develop' into sage_depr
Merge remote-tracking branch 'origin/develop' into sage_depr
Trac 15931: implement a proper hash function for (combinatorial) free module elements
Trac 15931: add a @cached_method on the new hash function for (combinatorial) free module elements
Trac 15931: include the hash of the parent in the new hash function for (combinatorial) free module elements
Added global options to rigged configurations to improve printing.
Trac 15931: fix the doctests for the new hash function for (combinatorial) free module elements to be reproducible
    Trac 15931: do not include the hash of the parent in the new hash function for (combinatorial) free module elements after all; see #15959
Trac 15931: update a bunch of non-deterministic'' doctests that depend on the hash function for (combinatorial) free module elements, and try to make them more deterministic (root systems, crystals)
Trac 15931: update more non-deterministic'' doctests that depend on the hash function for (combinatorial) free module elements, and try to make them more deterministic (root systems)
Trac 15931: update even more ''non-deterministic'' doctests that depend on the hash function for (combinatorial) free module elements, and try to make them more deterministic (root systems)
fixed doc tests
Trac #15940: Improve printing for rigged configurations

So we can do things like this:
{{{
sage: RC = RiggedConfigurations(['A',3,1], [[2,2],[1,1],[1,1]])
sage: elt = RC(partition_list=[[3,1], [3], [1]])
sage: elt

-3[ ][ ][ ]-3
-1[ ]-1

1[ ][ ][ ]1

-1[ ]-1

sage: RiggedConfigurations.global_options(display="horizontal",
convention="french")
sage: elt
-1[ ]-1         1[ ][ ][ ]1   -1[ ]-1
-3[ ][ ][ ]-3
}}}

URL: http://trac.sagemath.org/15940
Reported by: tscrim
Ticket author(s): Travis Scrimshaw
Reviewer(s): Ben Salisbury
Trac #15931: Implement a proper hash function for (combinatorial) free module elements

Up to now, CombinatorialFreeModule elements used the (horrible)
default implementation of __hash__ provided by Element which uses the
string representation. This was slow! And further fragile! Indeed, the
string representation depends on a sorting of the support of the
elements.  In #14102 we got bitten by this with elements whose support
mixed int's, Integer's and string. The result of:
{{{
    sage: sorted([int(0), 'delta', 1])
    [0, 1, 'delta']
}}}
depends on the platform (that's ok) but also on which of 0 and 1 are
int's or Integer, whereas the corresponding lists test as equal.
This led to equal element with distinct hash values.

This ticket adds an implementation of `__hash__` inspired from that
proposed for frozendicts in PEP 0416. In particular this
implementation does not rely on sorting.

Some timings:
{{{
    sage: F = CombinatorialFreeModule(QQ, ['a','b','c'])
    sage: B = F.basis()
    sage: f = B['a'] + 3*B['c']
    sage: %timeit hash(f)                         # new hash function
    100000 loops, best of 3: 3.57 µs per loop
    sage: %timeit hash(f._repr_())                # equivalent to the
previous one
    10000 loops, best of 3: 85 µs per loop
}}}

There used to be a custom hash function for ambient space elements in
root systems, but this is not needed anymore:
{{{
    sage: F = RootSystem(['A',2]).ambient_space()
    sage: f = F.simple_root(0)
    sage: %timeit hash(f)                         # new hash function
    100000 loops, best of 3: 3.63 µs per loop
    sage: %timeit hash(f._repr_())                # equivalent to the
previous one
    10000 loops, best of 3: 42.3 µs per loop
}}}

See #15959 for a follow up.

URL: http://trac.sagemath.org/15931
Reported by: nthiery
Ticket author(s): Nicolas M. Thiéry
Reviewer(s): Florent Hivert, Travis Scrimshaw, Anne Schilling
Trac #15824: Remove deprecated code from matrix/

Removes deprecated code from #3794, #5460, #6094, #6115, #7852, #11603,
#12840, #13012 and #13643.

URL: http://trac.sagemath.org/15824
Reported by: aapitzsch
Ticket author(s): André Apitzsch
Reviewer(s): Ralf Stephan