return (phi,phi_inv)
-
-def unrestrict_span(K, K2=None):
- if K2 is None:
- K2 = K
-
- _,phi_inv = ips_iso(K2)
- V_iso = iso_space(K2)
- (W, W_perp) = V_iso.cartesian_factors()
-
- rays = []
- for r in K.rays():
- w = sum([ r[idx]*W.basis()[idx] for idx in range(0,len(r)) ])
- pair = V_iso( (w, W_perp.zero()) )
- rays.append( phi_inv(pair) )
-
- L = ToricLattice(W.dimension() + W_perp.dimension())
-
- return Cone(rays, lattice=L)
-
-
-
-def restrict_span(K, K2=None):
+def rho(K, K2=None):
r"""
Restrict ``K`` into its own span, or the span of another cone.
sage: K_S.lattice_dim() == K.dual().dim()
True
- This function has ``unrestrict_span()`` as its inverse::
-
- sage: set_random_seed()
- sage: K = random_cone(max_dim = 8, solid=True)
- sage: J = restrict_span(K)
- sage: K == unrestrict_span(J,K)
- True
-
This function should not affect the dimension of a cone::
sage: set_random_seed()