The double description implementation isn't really meant to be used 
directly, which is also why it is not by default in the global namespace.

Basically all input must be immutable to be able to use caching. To make an 
immutable vector, use:

sage: v = vector([1,2,3])
sage: v.set_immutable()

Immutable means the entries can't be changed any more:

sage: v[0] = 1
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-6-cd90ec5e6613> in <module>()
----> 1 v[Integer(0)] = Integer(1)

/mnt/disk/home/release/Sage/src/sage/modules/vector_integer_dense.pyx in 
sage.modules.vector_integer_dense.Vector_integer_dense.__setitem__ 
(build/cythonized/sage/modules/vector_integer_dense.c:3829)()
    183         """
    184         if not self._is_mutable:
--> 185             raise ValueError("vector is immutable; please change a 
copy instead (use copy())")
    186         cdef Integer z
    187         cdef Py_ssize_t k, d, n

ValueError: vector is immutable; please change a copy instead (use copy())


On Thursday, March 19, 2015 at 8:28:47 PM UTC+1, Jayant Apte wrote:
>
> Hi
> I was trying to use add_inequality( ) method 
> of sage.geometry.polyhedron.double_description.StandardDoubleDescriptionPair 
> when I encountered an error (see the MWE below). Upon pulling out the 
> functions required for add_inequality( ) and running it seperately, it 
> works fine. I wonder if this is a bug or I'm doing something wrong:
>
> sage: from sage.geometry.polyhedron.double_description import 
> StandardAlgorithm
> sage: A= matrix([(-1, -1, 0, 0), (-1, 0, 0, 0), (-1, 0, -1, 0), (-1, 0, 0, 
> -1)])
> sage: DD, _ = StandardAlgorithm(A).initial_pair()
> sage: ineq=vector([-1, -1, -1, -1])
> sage: DD = DD.add_inequality(ineq);  
> sage: print DD
> Double description pair (A, R) defined by
>     [-1 -1  0  0]    
>     [-1  0  0  0]        [ 0  0  0 -1 -1 -1]
> A = [-1  0 -1  0],   R = [-1  0  0 -1  1  1]
>     [-1  0  0 -1]        [ 0 -1  0  1 -1  1]
>     [-1 -1 -1 -1]        [ 0  0 -1  1  1 -1]
> sage: ineq=vector([-1,0,-1,-1])
> sage: DD = DD.add_inequality(ineq);  
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call last)
> <ipython-input-8-d81bd32d70b2> in <module>()
> ----> 1 DD = DD.add_inequality(ineq);
>
> /home/jayant/Software/sagemath6_6/sage/local/lib/python2.7/site-packages/sage/geometry/polyhedron/double_description.pyc
>  
> in add_inequality(self, a)
>     681         R_new = []
>     682         for rp, rn in CartesianProduct(R_pos, R_neg):
> --> 683             if not self.are_adjacent(rp, rn):
>     684                 continue
>     685             r = a.inner_product(rp) * rn - a.inner_product(rn) * rp
>
> /home/jayant/Software/sagemath6_6/sage/local/lib/python2.7/site-packages/sage/geometry/polyhedron/double_description.pyc
>  
> in are_adjacent(self, r1, r2)
>     418         Z_r1 = self.zero_set(r1)
>     419         Z_r2 = self.zero_set(r2)
> --> 420         Z_12 = set(Z_r1).intersection(Z_r2)
>     421         A_Z12 = matrix(self.problem.base_ring(), list(Z_12))
>     422         return A_Z12.rank() == self.problem.dim() - 2
>
> /home/jayant/Software/sagemath6_6/sage/src/sage/modules/vector_integer_dense.pyx
>  
> in sage.modules.vector_integer_dense.Vector_integer_dense.__hash__ 
> (build/cythonized/sage/modules/vector_integer_dense.c:3589)()
>     170             True
>     171         """
> --> 172         return free_module_element.FreeModuleElement.__hash__(self)
>     173 
>     174     def __setitem__(self, i, value):
>
> /home/jayant/Software/sagemath6_6/sage/src/sage/modules/free_module_element.pyx
>  
> in sage.modules.free_module_element.FreeModuleElement.__hash__ 
> (build/cythonized/sage/modules/free_module_element.c:7403)()
>     963         """
>     964         if self._is_mutable:
> --> 965             raise TypeError("mutable vectors are unhashable")
>     966         return hash(tuple(self))
>     967 
>
> TypeError: mutable vectors are unhashable
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to