-
-
-def has_rearrangement_property(v, p):
- r"""
- Test if the vector ``v`` has the "rearrangement property."
-
- The rearrangement cone of order ``p`` in `n` dimensions has its
- members vectors of length `n`. The "rearrangement property,"
- satisfied by its elements, is to have its smallest ``p`` components
- sum to a nonnegative number.
-
- We believe that we have a description of the extreme vectors of the
- rearrangement cone: see ``rearrangement_cone()``. This function is
- used to test that conic combinations of those extreme vectors are in
- fact elements of the rearrangement cone. We can't test all conic
- combinations, obviously, but we can test a random one.
-
- To become more sure of the result, generate a bunch of vectors with
- ``random_element()`` and test them with this function.
-
- INPUT:
-
- - ``v`` -- An element of a cone suspected of being the rearrangement
- cone of order ``p``.
-
- - ``p`` -- The suspected order of the rearrangement cone.
-
- OUTPUT:
-
- If ``v`` has the rearrangement property (that is, if its smallest ``p``
- components sum to a nonnegative number), ``True`` is returned. Otherwise
- ``False`` is returned.
-
- SETUP::
-
- sage: from mjo.cone.rearrangement import (has_rearrangement_property,
- ....: rearrangement_cone)
-
- EXAMPLES:
-
- Every element of a rearrangement cone should have the property::
-
- sage: for n in range(2,10):
- ....: for p in range(1, n-1):
- ....: K = rearrangement_cone(p,n)
- ....: v = K.random_element()
- ....: if not has_rearrangement_property(v,p):
- ....: print(v)
-
- """
- components = sorted(v)[0:p]
- return sum(components) >= 0