mostly documentational improvements on sage-combinat
speed up check of column-strictness for tableaux
documented Lascoux-Schuetzenberger action on tableaux; order of multiplication of permutations might remain unexplained
deepcopy is superslow
#10843 faster lising of number field homsets
trac #10843: remove trailing whitespaces
trac #10843: documentation, indentation
trac #10843: improved caching

We remove the caching for .order() (which just call len on self.list())
and use cached_method for .list() instead of adding an attribute.
Merge branch 'public/combinat/tableaux-et-al-doc' of git://trac.sagemath.org/sage into morestat
minor improvements to semistandardness testing
Fix SageNB graphics
floor and ceiling mutability for integer lists fixed
remove deprecated and hideously confusing list function
trac #10843: remove separate absolute/relative branches
trac #10843: add check keywords and an associated doctest

We add a keyword 'check' to the __call__ method for RelativeNumberFieldHomset
and make two changes so that its value is passed on to other methods.
This solves an issue raised in
http://ask.sagemath.org/question/24173/homomorphisms-for-relative-number-fields
A doctest based on the example given there is included.
fix the documentation blunder Viviane found
C++ -> C/C++
Trac #14019: equality is broken for Posets

Plain and simple :

{{{
sage: d = DiGraph({2:[1],3:[1]})
sage: p1 = Poset(d)
sage: p2 = p1.relabel({1:1,2:3,3:2})
sage: p1.hasse_diagram() == p2.hasse_diagram()
True
sage: p1 == p2
False
}}}

This can be fixed by saying that two posets are equal if their hasse
diagrams are equal, as it should have been since the beginning.

This will probably make poset equality much slower. On the bright side
it will work correctly.

Of course this patch could have been almost trivial, but there is in the
FinitePoset class a "key" argument, whose purpose is to make two posets
different if they have different keys. So this patch checks that too.

And the next time that somebody will need to store pairs "(a poset, a
key)", the best will be to store pairs "(a poset, a key)". And not "A
poset with a key included inside, which is useful just for my own code"
as one could easily believe.

Oh. And the same with linear orderings, of course.

Nathann

URL: http://trac.sagemath.org/14019
Reported by: ncohen
Ticket author(s): Travis Scrimshaw, Anne Schilling
Reviewer(s): Travis Scrimshaw, Anne Schilling, John Palmieri, Nathann
Cohen
Trac #17047: Isomorphism of incidence structures

Heeeeeere it is !

Adds three functions: `is_isomorphic`, `canonical_label`, and `copy` (I
needed that).

Nathann

URL: http://trac.sagemath.org/17047
Reported by: ncohen
Ticket author(s): Nathann Cohen
Reviewer(s): Dima Pasechnik
Trac #17163: Speed improvement for DiGraph.in_degree

As reported by Jori, the following is... unexpected:

{{{
sage: g = digraphs.RandomDirectedGNP(300,.2)
sage: %timeit g.sinks() # vertices of outdegree 0
1000 loops, best of 3: 376 µs per loop
sage: %timeit g.sources() # vertices of indegree 0
100 loops, best of 3: 7.78 ms per loop
}}}

With this patch:
{{{
sage: g = digraphs.RandomDirectedGNP(300,.2)
sage: %timeit g.sinks() # vertices of outdegree 0
1000 loops, best of 3: 370 µs per loop
sage: %timeit g.sources() # vertices of indegree 0
1000 loops, best of 3: 361 µs per loop
}}}

Cause:

This is because the function `in_degree` was not implemented at the data
structure level, but "abstractly" by iterating over all incoming edges
of a vertices and counting them. This is bad, especially since any
sensible backends already stores that information.

What the branch does:

1) Add a `in_degree` function in the CGraph backend.

2) Add a `in_degree` and `out_degree` (empty) function in the
`GenericGraph` backend (the only point is to write somewhere that the
`in_degree/out_degree` functions should be implemented by all graph
backends

3) Add a `in_degree/out_degree` function to the NetworkX backend. This
backend is only used in one doctest, and this is the only backend that
did not have this function.

4) Because all backends now have the `in_degree/out_degree` functions,
it is now useless to 'check if the backend has the function' before
calling it. As a result the code of `DiGraph.in_degree/out_degree` is
simplified.

Nathann

URL: http://trac.sagemath.org/17163
Reported by: ncohen
Ticket author(s): Nathann Cohen
Reviewer(s): David Coudert