# The double-import is needed to get the underscore methods.
from mjo.cone.cone import *
-from mjo.cone.cone import _restrict_to_space
#
# Tests for _restrict_to_space.
sage: K = random_cone(max_ambient_dim = 8,
....: strictly_convex=False,
....: solid=False)
- sage: K_S = _restrict_to_space(K, K.span())
- sage: K_SP = _restrict_to_space(K_S.dual(), K_S.dual().span()).dual()
+ sage: K_S = K._restrict_to_space(K.span())
+ sage: K_SP = K_S.dual()._restrict_to_space(K_S.dual().span()).dual()
sage: K_SP.is_proper()
True
- sage: K_SP = _restrict_to_space(K_S, K_S.dual().span())
+ sage: K_SP = K_S._restrict_to_space(K_S.dual().span())
sage: K_SP.is_proper()
True
sage: K = random_cone(max_ambient_dim = 8,
....: strictly_convex=True,
....: solid=False)
- sage: K_S = _restrict_to_space(K, K.span())
- sage: K_SP = _restrict_to_space(K_S.dual(), K_S.dual().span()).dual()
+ sage: K_S = K._restrict_to_space(K.span())
+ sage: K_SP = K_S.dual()._restrict_to_space(K_S.dual().span()).dual()
sage: K_SP.is_proper()
True
- sage: K_SP = _restrict_to_space(K_S, K_S.dual().span())
+ sage: K_SP = K_S._restrict_to_space(K_S.dual().span())
sage: K_SP.is_proper()
True
sage: K = random_cone(max_ambient_dim = 8,
....: strictly_convex=False,
....: solid=True)
- sage: K_S = _restrict_to_space(K, K.span())
- sage: K_SP = _restrict_to_space(K_S.dual(), K_S.dual().span()).dual()
+ sage: K_S = K._restrict_to_space(K.span())
+ sage: K_SP = K_S.dual()._restrict_to_space(K_S.dual().span()).dual()
sage: K_SP.is_proper()
True
- sage: K_SP = _restrict_to_space(K_S, K_S.dual().span())
+ sage: K_SP = K_S._restrict_to_space(K_S.dual().span())
sage: K_SP.is_proper()
True
sage: K = random_cone(max_ambient_dim = 8,
....: strictly_convex=True,
....: solid=True)
- sage: K_S = _restrict_to_space(K, K.span())
- sage: K_SP = _restrict_to_space(K_S.dual(), K_S.dual().span()).dual()
+ sage: K_S = K._restrict_to_space(K.span())
+ sage: K_SP = K_S.dual()._restrict_to_space(K_S.dual().span()).dual()
sage: K_SP.is_proper()
True
- sage: K_SP = _restrict_to_space(K_S, K_S.dual().span())
+ sage: K_SP = K_S._restrict_to_space(K_S.dual().span())
sage: K_SP.is_proper()
True
....: solid=False,
....: strictly_convex=False)
sage: K = Cone(random_sublist(J.rays(), 0.5), lattice=J.lattice())
- sage: K_W_star = _restrict_to_space(K, J.span()).dual()
- sage: K_star_W = _restrict_to_space(K.dual(), J.span())
+ sage: K_W_star = K._restrict_to_space(J.span()).dual()
+ sage: K_star_W = K.dual()._restrict_to_space(J.span())
sage: _look_isomorphic(K_W_star, K_star_W)
True
....: solid=True,
....: strictly_convex=False)
sage: K = Cone(random_sublist(J.rays(), 0.5), lattice=J.lattice())
- sage: K_W_star = _restrict_to_space(K, J.span()).dual()
- sage: K_star_W = _restrict_to_space(K.dual(), J.span())
+ sage: K_W_star = K._restrict_to_space(J.span()).dual()
+ sage: K_star_W = K.dual()._restrict_to_space(J.span())
sage: _look_isomorphic(K_W_star, K_star_W)
True
....: solid=False,
....: strictly_convex=True)
sage: K = Cone(random_sublist(J.rays(), 0.5), lattice=J.lattice())
- sage: K_W_star = _restrict_to_space(K, J.span()).dual()
- sage: K_star_W = _restrict_to_space(K.dual(), J.span())
+ sage: K_W_star = K._restrict_to_space(J.span()).dual()
+ sage: K_star_W = K.dual()._restrict_to_space(J.span())
sage: _look_isomorphic(K_W_star, K_star_W)
True
....: solid=True,
....: strictly_convex=True)
sage: K = Cone(random_sublist(J.rays(), 0.5), lattice=J.lattice())
- sage: K_W_star = _restrict_to_space(K, J.span()).dual()
- sage: K_star_W = _restrict_to_space(K.dual(), J.span())
+ sage: K_W_star = K._restrict_to_space(J.span()).dual()
+ sage: K_star_W = K.dual()._restrict_to_space(J.span())
sage: _look_isomorphic(K_W_star, K_star_W)
True
....: solid=True)
sage: A = random_matrix(QQ, K1.lattice_dim(), algorithm='unimodular')
sage: K2 = Cone( [ A*r for r in K1.rays() ], lattice=K1.lattice())
- sage: lyapunov_rank(K1) == lyapunov_rank(K2)
+ sage: K1.lyapunov_rank() == K2.lyapunov_rank()
True
::
....: solid=False)
sage: A = random_matrix(QQ, K1.lattice_dim(), algorithm='unimodular')
sage: K2 = Cone( [ A*r for r in K1.rays() ], lattice=K1.lattice())
- sage: lyapunov_rank(K1) == lyapunov_rank(K2)
+ sage: K1.lyapunov_rank() == K2.lyapunov_rank()
True
::
....: solid=True)
sage: A = random_matrix(QQ, K1.lattice_dim(), algorithm='unimodular')
sage: K2 = Cone( [ A*r for r in K1.rays() ], lattice=K1.lattice())
- sage: lyapunov_rank(K1) == lyapunov_rank(K2)
+ sage: K1.lyapunov_rank() == K2.lyapunov_rank()
True
::
....: solid=False)
sage: A = random_matrix(QQ, K1.lattice_dim(), algorithm='unimodular')
sage: K2 = Cone( [ A*r for r in K1.rays() ], lattice=K1.lattice())
- sage: lyapunov_rank(K1) == lyapunov_rank(K2)
+ sage: K1.lyapunov_rank() == K2.lyapunov_rank()
True
The Lyapunov rank of a dual cone should be the same as the original
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=False,
....: solid=False)
- sage: lyapunov_rank(K) == lyapunov_rank(K.dual())
+ sage: K.lyapunov_rank() == K.dual().lyapunov_rank()
True
::
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=False,
....: solid=True)
- sage: lyapunov_rank(K) == lyapunov_rank(K.dual())
+ sage: K.lyapunov_rank() == K.dual().lyapunov_rank()
True
::
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=True,
....: solid=False)
- sage: lyapunov_rank(K) == lyapunov_rank(K.dual())
+ sage: K.lyapunov_rank() == K.dual().lyapunov_rank()
True
::
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=True,
....: solid=True)
- sage: lyapunov_rank(K) == lyapunov_rank(K.dual())
+ sage: K.lyapunov_rank() == K.dual().lyapunov_rank()
True
The Lyapunov rank of a cone ``K`` is the dimension of
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=True,
....: solid=True)
- sage: lyapunov_rank(K) == len(K.lyapunov_like_basis())
+ sage: K.lyapunov_rank() == len(K.lyapunov_like_basis())
True
::
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=True,
....: solid=False)
- sage: lyapunov_rank(K) == len(K.lyapunov_like_basis())
+ sage: K.lyapunov_rank() == len(K.lyapunov_like_basis())
True
::
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=False,
....: solid=True)
- sage: lyapunov_rank(K) == len(K.lyapunov_like_basis())
+ sage: K.lyapunov_rank() == len(K.lyapunov_like_basis())
True
::
sage: K = random_cone(max_ambient_dim=8,
....: strictly_convex=False,
....: solid=False)
- sage: lyapunov_rank(K) == len(K.lyapunov_like_basis())
+ sage: K.lyapunov_rank() == len(K.lyapunov_like_basis())
True
"""