]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/cone/permutation_invariant.py
README: rewrite it, it was rather out-of-date
[sage.d.git] / mjo / cone / permutation_invariant.py
index 7aad31e9e709114524bedd3f1354219867a99c57..d0715867a35770470cb47c384d3b84656d012a2c 100644 (file)
@@ -33,17 +33,12 @@ def random_permutation_invariant_cone(lattice=None,
     V = K.lattice().vector_space()
 
     # The set of all permutatin matrices on ``V``.
-    Sn = [ p.matrix() for p in SymmetricGroup(V.dimension()) ]
+    Sn = ( p.matrix() for p in SymmetricGroup(V.dimension()) )
 
     # Set of permuted generators
-    pgens = []
+    pgens = ( permutation*V(g) for permutation in Sn for g in K )
 
-    for g in K.rays():
-        for permutation in Sn:
-            pgens.append(permutation * V(g))
-
-    L = ToricLattice(V.dimension())
-    return Cone(pgens, lattice=L)
+    return Cone(pgens, K.lattice())
 
 
 def is_permutation_invariant(K):
@@ -55,14 +50,23 @@ def is_permutation_invariant(K):
 
     SETUP::
 
-        sage: from mjo.cone.rearrangement import rearrangement_cone
+        sage: from mjo.cone.nonnegative_orthant import nonnegative_orthant
         sage: from mjo.cone.permutation_invariant import is_permutation_invariant
+        sage: from mjo.cone.rearrangement import rearrangement_cone
+
+    EXAMPLES:
 
-    EXAMPLES::
+    The rearrangement cone is permutation-invariant::
 
-        sage: all([ is_permutation_invariant(rearrangement_cone(p,n))
+        sage: all( is_permutation_invariant(rearrangement_cone(p,n))
         ....:               for n in range(3, 6)
-        ....:               for p in range(1, n) ])
+        ....:               for p in range(1, n) )
+        True
+
+    As is the nonnegative orthant::
+
+        sage: K = nonnegative_orthant(ZZ.random_element(5))
+        sage: is_permutation_invariant(K)
         True
 
     """
@@ -71,13 +75,8 @@ def is_permutation_invariant(K):
     V = K.lattice().vector_space()
 
     # The set of all permutation matrices on ``V``.
-    Sn = [ p.matrix() for p in SymmetricGroup(V.dimension()) ]
-
-    for permutation in Sn:
-        L = ToricLattice(V.dimension())
-        permuted_gens = [ permutation * V(g) for g in K.rays() ]
-        for g in permuted_gens:
-            if not K.contains(g):
-                return False
+    Sn = ( p.matrix() for p in SymmetricGroup(V.dimension()) )
 
-    return True
+    return all(K.contains(permutation*V(g))
+                   for g in K
+                   for permutation in Sn)