X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Fpermutation_invariant.py;h=faa39f76fbe9072c54f1ff29cebb563d1e8524cb;hb=f38e111cd026f1ecdab6dd2d2ed194a8745252a8;hp=65e22f58b4ead8375795659330ad906a6a5087c4;hpb=f14bcc7d014547bca733363b2a32ce9b0722f251;p=sage.d.git diff --git a/mjo/cone/permutation_invariant.py b/mjo/cone/permutation_invariant.py index 65e22f5..faa39f7 100644 --- a/mjo/cone/permutation_invariant.py +++ b/mjo/cone/permutation_invariant.py @@ -1,10 +1,3 @@ -# Sage doesn't load ~/.sage/init.sage during testing (sage -t), so we -# have to explicitly mangle our sitedir here so that "mjo.cone" -# resolves. -from os.path import abspath -from site import addsitedir -addsitedir(abspath('../../')) - from sage.all import * def random_permutation_invariant_cone(lattice=None, @@ -40,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 = [] - - for g in K.rays(): - for permutation in Sn: - pgens.append(permutation * V(g)) + pgens = ( permutation*V(g) for permutation in Sn for g in K ) - L = ToricLattice(V.dimension()) - return Cone(pgens, lattice=L) + return Cone(pgens, K.lattice()) def is_permutation_invariant(K): @@ -60,11 +48,26 @@ def is_permutation_invariant(K): A cone is said to be permutation-invariant if ``P(K)`` is a subset of ``K`` for every permutation matrix ``P``. + SETUP:: + + 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: - sage: all([ is_permutation_invariant(rearrangement_cone(p,n)) + The rearrangement cone is permutation-invariant:: + + 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: set_random_seed() + sage: K = nonnegative_orthant(ZZ.random_element(5)) + sage: is_permutation_invariant(K) True """ @@ -73,13 +76,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)