X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Fpermutation_invariant.py;h=d0715867a35770470cb47c384d3b84656d012a2c;hb=928b7d49fda98ff105c92293b5797bb7a2b9873a;hp=7aad31e9e709114524bedd3f1354219867a99c57;hpb=411f3b1863b7ee61b9e4fa651e14ef13a68e8349;p=sage.d.git diff --git a/mjo/cone/permutation_invariant.py b/mjo/cone/permutation_invariant.py index 7aad31e..d071586 100644 --- a/mjo/cone/permutation_invariant.py +++ b/mjo/cone/permutation_invariant.py @@ -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)