Alternating Sign Matrices¶
AUTHORS:
- Mike Hansen (2007): Initial version
- Pierre Cange, Luis Serrano (2012): Added monotone triangles
- Travis Scrimshaw (2013-28-03): Added element class for ASM’s and made
MonotoneTriangles
inherit fromGelfandTsetlinPatterns
- Jessica Striker (2013): Added additional methods
-
class
sage.combinat.alternating_sign_matrix.
AlternatingSignMatrices
(n, use_monotone_triangles=None)¶ Bases:
sage.structure.parent.Parent
,sage.structure.unique_representation.UniqueRepresentation
Class of all
alternating sign matrices.
An alternating sign matrix of size
is an
matrix of
‘s,
‘s and
‘s such that the sum of each row and column is
and the non-zero entries in each row and column alternate in sign.
Alternating sign matrices of size
are in bijection with
monotone triangles
withrows.
INPUT:
– an integer, the size of the matrices.
use_monotone_triangle
– deprecated
EXAMPLES:
This will create an instance to manipulate the alternating sign matrices of size 3:
sage: A = AlternatingSignMatrices(3) sage: A Alternating sign matrices of size 3 sage: A.cardinality() 7
Notably, this implementation allows to make a lattice of it:
sage: L = A.lattice() sage: L Finite lattice containing 7 elements sage: L.category() Join of Category of finite lattice posets and Category of finite enumerated sets and Category of facade sets
-
Element
¶ alias of
AlternatingSignMatrix
-
cardinality
()¶ Return the cardinality of
self
.The number of
alternating sign matrices is equal to
EXAMPLES:
sage: [AlternatingSignMatrices(n).cardinality() for n in range(0, 11)] [1, 1, 2, 7, 42, 429, 7436, 218348, 10850216, 911835460, 129534272700]
-
cover_relations
()¶ Iterate on the cover relations between the alternating sign matrices.
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: for (a,b) in A.cover_relations(): ....: eval('a, b') ( [1 0 0] [0 1 0] [0 1 0] [1 0 0] [0 0 1], [0 0 1] ) ( [1 0 0] [1 0 0] [0 1 0] [0 0 1] [0 0 1], [0 1 0] ) ( [0 1 0] [ 0 1 0] [1 0 0] [ 1 -1 1] [0 0 1], [ 0 1 0] ) ( [1 0 0] [ 0 1 0] [0 0 1] [ 1 -1 1] [0 1 0], [ 0 1 0] ) ( [ 0 1 0] [0 0 1] [ 1 -1 1] [1 0 0] [ 0 1 0], [0 1 0] ) ( [ 0 1 0] [0 1 0] [ 1 -1 1] [0 0 1] [ 0 1 0], [1 0 0] ) ( [0 0 1] [0 0 1] [1 0 0] [0 1 0] [0 1 0], [1 0 0] ) ( [0 1 0] [0 0 1] [0 0 1] [0 1 0] [1 0 0], [1 0 0] )
-
from_contre_tableau
(comps)¶ Return an alternating sign matrix from a contre-tableau.
EXAMPLES:
sage: ASM = AlternatingSignMatrices(3) sage: ASM.from_contre_tableau([[1, 2, 3], [1, 2], [1]]) [0 0 1] [0 1 0] [1 0 0] sage: ASM.from_contre_tableau([[1, 2, 3], [2, 3], [3]]) [1 0 0] [0 1 0] [0 0 1]
-
from_corner_sum
(corner)¶ Return an alternating sign matrix from a corner sum matrix.
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A.from_corner_sum(matrix([[0,0,0,0],[0,1,1,1],[0,1,2,2],[0,1,2,3]])) [1 0 0] [0 1 0] [0 0 1] sage: A.from_corner_sum(matrix([[0,0,0,0],[0,0,1,1],[0,1,1,2],[0,1,2,3]])) [ 0 1 0] [ 1 -1 1] [ 0 1 0]
-
from_height_function
(height)¶ Return an alternating sign matrix from a height function.
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A.from_height_function(matrix([[0,1,2,3],[1,2,1,2],[2,3,2,1],[3,2,1,0]])) [0 0 1] [1 0 0] [0 1 0] sage: A.from_height_function(matrix([[0,1,2,3],[1,2,1,2],[2,1,2,1],[3,2,1,0]])) [ 0 1 0] [ 1 -1 1] [ 0 1 0]
-
from_monotone_triangle
(triangle)¶ Return an alternating sign matrix from a monotone triangle.
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A.from_monotone_triangle([[3, 2, 1], [2, 1], [1]]) [1 0 0] [0 1 0] [0 0 1] sage: A.from_monotone_triangle([[3, 2, 1], [3, 2], [3]]) [0 0 1] [0 1 0] [1 0 0]
-
gyration_orbit_sizes
()¶ Return the sizes of gyration orbits of
self
.EXAMPLES:
sage: AlternatingSignMatrices(3).gyration_orbit_sizes() [3, 2, 2] sage: AlternatingSignMatrices(4).gyration_orbit_sizes() [4, 8, 2, 8, 8, 8, 2, 2] sage: A = AlternatingSignMatrices(5) sage: li = [5,10,10,10,10,10,2,5,10,10,10,10,10,10,10,10,10,10,10,10,\ 4,10,10,10,10,10,10,4,5,10,10,10,10,10,10,10,2,4,5,10,10,10,10,10,10,\ 4,5,10,10,2,2] sage: A.gyration_orbit_sizes() == li True
-
gyration_orbits
()¶ Return the list of gyration orbits of
self
.EXAMPLES:
sage: AlternatingSignMatrices(3).gyration_orbits() (( [1 0 0] [0 0 1] [ 0 1 0] [0 1 0] [0 1 0] [ 1 -1 1] [0 0 1], [1 0 0], [ 0 1 0] ), ( [0 1 0] [1 0 0] [1 0 0] [0 0 1] [0 0 1], [0 1 0] ), ( [0 0 1] [0 1 0] [1 0 0] [0 0 1] [0 1 0], [1 0 0] ))
-
lattice
()¶ Return the lattice of the alternating sign matrices of size
, created by
LatticePoset
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: L = A.lattice() sage: L Finite lattice containing 7 elements
-
matrix_space
()¶ Return the underlying matrix space.
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A.matrix_space() Full MatrixSpace of 3 by 3 dense matrices over Integer Ring
-
size
()¶ Return the size of the matrices in
self
.TESTS:
sage: A = AlternatingSignMatrices(4) sage: A.size() 4
-
class
sage.combinat.alternating_sign_matrix.
AlternatingSignMatrix
(parent, asm)¶ Bases:
sage.structure.element.Element
An alternating sign matrix.
An alternating sign matrix is a square matrix of
‘s,
‘s and
‘s such that the sum of each row and column is
and the non-zero entries in each row and column alternate in sign.
These were introduced in [MiRoRu].
REFERENCES:
[MiRoRu] (1, 2) W. H. Mills, David P Robbins, Howard Rumsey Jr., Alternating sign matrices and descending plane partitions, Journal of Combinatorial Theory, Series A, Volume 34, Issue 3, May 1983, Pages 340–359. http://www.sciencedirect.com/science/article/pii/0097316583900687 -
ASM_compatible
(B)¶ Return
True
ifself
andB
are compatible alternating sign matrices in the sense of [EKLP92]. (Ifself
is of size,
B
must be of size.)
In [EKLP92], there is a notion of a pair of ASM’s with sizes differing by 1 being compatible, in the sense that they can be combined to encode a tiling of the Aztec Diamond.
REFERENCES:
[EKLP92] (1, 2, 3, 4) N. Elkies, G. Kuperberg, M. Larsen, J. Propp, Alternating-Sign Matrices and Domino Tilings, Journal of Algebraic Combinatorics, volume 1 (1992), p. 111-132. EXAMPLES:
sage: A = AlternatingSignMatrix(matrix([[0,0,1,0],[0,1,-1,1],[1,0,0,0],[0,0,1,0]])) sage: B = AlternatingSignMatrix(matrix([[0,0,1,0,0],[0,0,0,1,0],[1,0,0,-1,1],[0,1,0,0,0],[0,0,0,1,0]])) sage: A.ASM_compatible(B) True sage: A = AlternatingSignMatrix(matrix([[0,1,0],[1,-1,1],[0,1,0]])) sage: B = AlternatingSignMatrix(matrix([[0,0,1,0],[0,0,0,1],[1,0,0,0],[0,1,0,0]])) sage: A.ASM_compatible(B) False
-
ASM_compatible_bigger
()¶ Return all ASM’s compatible with
self
that are of size one greater thanself
.Given an
alternating sign matrix
, there are as many ASM’s of size
compatible with
as 2 raised to the power of the number of 1’s in
[EKLP92].
EXAMPLES:
sage: A = AlternatingSignMatrix(matrix([[1,0],[0,1]])) sage: A.ASM_compatible_bigger() [ [ 0 1 0] [1 0 0] [0 1 0] [1 0 0] [ 1 -1 1] [0 0 1] [1 0 0] [0 1 0] [ 0 1 0], [0 1 0], [0 0 1], [0 0 1] ] sage: B = AlternatingSignMatrix(matrix([[0,1],[1,0]])) sage: B.ASM_compatible_bigger() [ [0 0 1] [0 0 1] [0 1 0] [ 0 1 0] [0 1 0] [1 0 0] [0 0 1] [ 1 -1 1] [1 0 0], [0 1 0], [1 0 0], [ 0 1 0] ]
-
ASM_compatible_smaller
()¶ Return the list of all ASMs compatible with
self
that are of size one smaller thanself
.Given an alternating sign matrix
of size
, there are as many ASM’s of size
compatible with it as 2 raised to the power of the number of
‘s in
[EKLP92].
EXAMPLES:
sage: A = AlternatingSignMatrix(matrix([[0,0,1,0],[0,1,-1,1],[1,0,0,0],[0,0,1,0]])) sage: A.ASM_compatible_smaller() [ [0 0 1] [ 0 1 0] [1 0 0] [ 1 -1 1] [0 1 0], [ 0 1 0] ] sage: B = AlternatingSignMatrix(matrix([[1,0,0],[0,0,1],[0,1,0]])) sage: B.ASM_compatible_smaller() [ [1 0] [0 1] ]
-
corner_sum_matrix
()¶ Return the corner sum matrix from
self
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).corner_sum_matrix() [0 0 0 0] [0 1 1 1] [0 1 2 2] [0 1 2 3] sage: asm = A([[0, 1, 0],[1, -1, 1],[0, 1, 0]]) sage: asm.corner_sum_matrix() [0 0 0 0] [0 0 1 1] [0 1 1 2] [0 1 2 3] sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.corner_sum_matrix() [0 0 0 0] [0 0 0 1] [0 1 1 2] [0 1 2 3]
TESTS:
Some non-symmetric tests:
sage: A = AlternatingSignMatrices(3) sage: asm = A([[0, 1, 0], [0, 0, 1], [1, 0, 0]]) sage: asm.corner_sum_matrix() [0 0 0 0] [0 0 1 1] [0 0 1 2] [0 1 2 3] sage: B = AlternatingSignMatrices(4) sage: asm = B([[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, -1, 1], [0, 0, 1, 0]]) sage: asm.corner_sum_matrix() [0 0 0 0 0] [0 0 0 1 1] [0 1 1 2 2] [0 1 2 2 3] [0 1 2 3 4]
-
gyration
()¶ Return the alternating sign matrix obtained by applying the gyration to the height function in bijection with
self
.Gyration acts on height functions as follows. Go through the entries of the matrix, first those for which the sum of the row and column indices is even, then for those for which it is odd, and increment or decrement the squares by 2 wherever possible such that the resulting matrix is still a height function. Gyration was first defined in [Wieland00] as an action on fully-packed loops.
REFERENCES:
[Wieland00] B. Wieland. A large dihedral symmetry of the set of alternating sign matrices. Electron. J. Combin. 7 (2000). EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).gyration() [0 0 1] [0 1 0] [1 0 0] sage: asm = A([[0, 1, 0],[1, -1, 1],[0, 1, 0]]) sage: asm.gyration() [1 0 0] [0 1 0] [0 0 1] sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.gyration() [0 1 0] [0 0 1] [1 0 0] sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).gyration().gyration() [ 0 1 0] [ 1 -1 1] [ 0 1 0] sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).gyration().gyration().gyration() [1 0 0] [0 1 0] [0 0 1] sage: A = AlternatingSignMatrices(4) sage: M = A([[0,0,1,0],[1,0,0,0],[0,1,-1,1],[0,0,1,0]]) sage: for i in range(5): ....: M = M.gyration() sage: M [1 0 0 0] [0 0 0 1] [0 1 0 0] [0 0 1 0]
-
gyration_orbit
()¶ Return the gyration orbit of
self
(includingself
)EXAMPLES:
sage: AlternatingSignMatrix([[0,1,0],[1,-1,1],[0,1,0]]).gyration_orbit() [ [ 0 1 0] [1 0 0] [0 0 1] [ 1 -1 1] [0 1 0] [0 1 0] [ 0 1 0], [0 0 1], [1 0 0] ] sage: AlternatingSignMatrix([[0,1,0,0],[1,-1,1,0],[0,1,-1,1],[0,0,1,0]]).gyration_orbit() [ [ 0 1 0 0] [1 0 0 0] [ 0 0 1 0] [0 0 0 1] [ 1 -1 1 0] [0 1 0 0] [ 0 1 -1 1] [0 0 1 0] [ 0 1 -1 1] [0 0 1 0] [ 1 -1 1 0] [0 1 0 0] [ 0 0 1 0], [0 0 0 1], [ 0 1 0 0], [1 0 0 0] ] sage: len(AlternatingSignMatrix([[0,1,0,0,0,0],[0,0,1,0,0,0],[1,-1,0,0,0,1],\ [0,1,0,0,0,0],[0,0,0,1,0,0],[0,0,0,0,1,0]]).gyration_orbit()) 12
-
height_function
()¶ Return the height function from
self
. A height function corresponding to anASM is an
matrix such that the first row is
, the last row is
, and the difference between adjacent entries is 1.
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).height_function() [0 1 2 3] [1 0 1 2] [2 1 0 1] [3 2 1 0] sage: asm = A([[0, 1, 0],[1, -1, 1],[0, 1, 0]]) sage: asm.height_function() [0 1 2 3] [1 2 1 2] [2 1 2 1] [3 2 1 0] sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.height_function() [0 1 2 3] [1 2 1 2] [2 3 2 1] [3 2 1 0]
-
inversion_number
()¶ Return the inversion number of
self
.If we denote the entries of the alternating sign matrix as
, the inversion number is defined as
. When restricted to permutation matrices, this gives the usual inversion number of the permutation.
This definition is equivalent to the one given in [MiRoRu].
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).inversion_number() 0 sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.inversion_number() 2 sage: asm = A([[0, 1, 0],[1, -1, 1],[0, 1, 0]]) sage: asm.inversion_number() 2 sage: P=Permutations(5) sage: all(p.number_of_inversions()==AlternatingSignMatrix(p.to_matrix()).inversion_number() for p in P) True
-
is_permutation
()¶ Return
True
ifself
is a permutation matrix andFalse
otherwise.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: asm = A([[0,1,0],[1,0,0],[0,0,1]]) sage: asm.is_permutation() True sage: asm = A([[0,1,0],[1,-1,1],[0,1,0]]) sage: asm.is_permutation() False
-
left_key
()¶ Return the left key of the alternating sign matrix
self
.The left key of an alternating sign matrix was defined by Lascoux in [LascouxPreprint] and is obtained by successively removing all the
‘suntil what remains is a permutation matrix. This notion corresponds to the notion of left key for semistandard tableaux. So our algorithm proceeds as follows: we map
self
to its corresponding monotone triangle, view that monotone triangle as a semistandard tableaux, take its left key, and then map back through monotone triangles to the permutation matrix which is the left key.REFERENCES:
[Aval07] J.-C. Aval. Keys and alternating sign matrices. Sem. Lothar. Combin. 59 (2007/10), Art. B59f, 13 pp. [LascouxPreprint] A. Lascoux. Chern and Yang through ice. Preprint. EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[0,0,1],[1,0,0],[0,1,0]]).left_key() [0 0 1] [1 0 0] [0 1 0] sage: t = A([[0,1,0],[1,-1,1],[0,1,0]]).left_key(); t [1 0 0] [0 0 1] [0 1 0] sage: parent(t) Alternating sign matrices of size 3
-
left_key_as_permutation
()¶ Return the permutation of the left key of
self
.See also
EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[0,0,1],[1,0,0],[0,1,0]]).left_key_as_permutation() [3, 1, 2] sage: t = A([[0,1,0],[1,-1,1],[0,1,0]]).left_key_as_permutation(); t [1, 3, 2] sage: parent(t) Standard permutations
-
number_negative_ones
()¶ Return the number of entries in
self
equal to -1.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: asm = A([[0,1,0],[1,0,0],[0,0,1]]) sage: asm.number_negative_ones() 0 sage: asm = A([[0,1,0],[1,-1,1],[0,1,0]]) sage: asm.number_negative_ones() 1
-
rotate_ccw
()¶ Return the counterclockwise quarter turn rotation of
self
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).rotate_ccw() [0 0 1] [0 1 0] [1 0 0] sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.rotate_ccw() [1 0 0] [0 0 1] [0 1 0]
-
rotate_cw
()¶ Return the clockwise quarter turn rotation of
self
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).rotate_cw() [0 0 1] [0 1 0] [1 0 0] sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.rotate_cw() [0 1 0] [1 0 0] [0 0 1]
-
to_dyck_word
()¶ Return the Dyck word determined by the last diagonal of the monotone triangle corresponding to
self
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[0,1,0],[1,0,0],[0,0,1]]).to_dyck_word() [1, 1, 0, 0, 1, 0] sage: d = A([[0,1,0],[1,-1,1],[0,1,0]]).to_dyck_word(); d [1, 1, 0, 1, 0, 0] sage: parent(d) Complete Dyck words
-
to_matrix
()¶ Return
self
as a regular matrix.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: asm = A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]) sage: m = asm.to_matrix(); m [1 0 0] [0 1 0] [0 0 1] sage: m.parent() Full MatrixSpace of 3 by 3 dense matrices over Integer Ring
-
to_monotone_triangle
()¶ Return a monotone triangle from
self
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).to_monotone_triangle() [[3, 2, 1], [2, 1], [1]] sage: asm = A([[0, 1, 0],[1, -1, 1],[0, 1, 0]]) sage: asm.to_monotone_triangle() [[3, 2, 1], [3, 1], [2]] sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.to_monotone_triangle() [[3, 2, 1], [3, 1], [3]] sage: A.from_monotone_triangle(asm.to_monotone_triangle()) == asm True
-
to_permutation
()¶ Return the corresponding permutation if
self
is a permutation matrix.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: asm = A([[0,1,0],[1,0,0],[0,0,1]]) sage: p = asm.to_permutation(); p [2, 1, 3] sage: parent(p) Standard permutations sage: asm = A([[0,1,0],[1,-1,1],[0,1,0]]) sage: asm.to_permutation() Traceback (most recent call last): ... ValueError: Not a permutation matrix
-
to_semistandard_tableau
()¶ Return the semistandard tableau corresponding the monotone triangle corresponding to
self
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[0,0,1],[1,0,0],[0,1,0]]).to_semistandard_tableau() [[1, 1, 3], [2, 3], [3]] sage: t = A([[0,1,0],[1,-1,1],[0,1,0]]).to_semistandard_tableau(); t [[1, 1, 2], [2, 3], [3]] sage: parent(t) Semistandard tableaux
-
transpose
()¶ Return the counterclockwise quarter turn rotation of
self
.EXAMPLES:
sage: A = AlternatingSignMatrices(3) sage: A([[1, 0, 0],[0, 1, 0],[0, 0, 1]]).transpose() [1 0 0] [0 1 0] [0 0 1] sage: asm = A([[0, 0, 1],[1, 0, 0],[0, 1, 0]]) sage: asm.transpose() [0 1 0] [0 0 1] [1 0 0]
-
-
class
sage.combinat.alternating_sign_matrix.
ContreTableaux
¶ Bases:
sage.structure.parent.Parent
Factory class for the combinatorial class of contre tableaux of size
.
EXAMPLES:
sage: ct4 = ContreTableaux(4); ct4 Contre tableaux of size 4 sage: ct4.cardinality() 42
-
class
sage.combinat.alternating_sign_matrix.
ContreTableaux_n
(n)¶ Bases:
sage.combinat.alternating_sign_matrix.ContreTableaux
TESTS:
sage: ct2 = ContreTableaux(2); ct2 Contre tableaux of size 2 sage: ct2 == loads(dumps(ct2)) True
-
cardinality
()¶ EXAMPLES:
sage: [ ContreTableaux(n).cardinality() for n in range(0, 11)] [1, 1, 2, 7, 42, 429, 7436, 218348, 10850216, 911835460, 129534272700]
-
-
class
sage.combinat.alternating_sign_matrix.
MonotoneTriangles
(n)¶ Bases:
sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPatternsTopRow
Monotone triangles with
rows.
A monotone triangle is a number triangle
on
such that:
This notably requires that the bottom column is
[1,...,n]
.Alternatively a monotone triangle is a strict Gelfand-Tsetlin pattern with top row
.
INPUT:
n
– The number of rows in the monotone triangles
EXAMPLES:
This represents the monotone triangles with base
[3,2,1]
:sage: M = MonotoneTriangles(3) sage: M Monotone triangles with 3 rows sage: M.cardinality() 7
The monotone triangles are a lattice:
sage: M.lattice() Finite lattice containing 7 elements
Monotone triangles can be converted to alternating sign matrices and back:
sage: M = MonotoneTriangles(5) sage: A = AlternatingSignMatrices(5) sage: all(A.from_monotone_triangle(m).to_monotone_triangle() == m for m in M) True
-
cardinality
()¶ Cardinality of
self
.The number of monotone triangles with
rows is equal to
EXAMPLES:
sage: M = MonotoneTriangles(4) sage: M.cardinality() 42
-
cover_relations
()¶ Iterate on the cover relations in the set of monotone triangles with
rows.
EXAMPLES:
sage: M = MonotoneTriangles(3) sage: for (a,b) in M.cover_relations(): ....: eval('a, b') ([[3, 2, 1], [2, 1], [1]], [[3, 2, 1], [2, 1], [2]]) ([[3, 2, 1], [2, 1], [1]], [[3, 2, 1], [3, 1], [1]]) ([[3, 2, 1], [2, 1], [2]], [[3, 2, 1], [3, 1], [2]]) ([[3, 2, 1], [3, 1], [1]], [[3, 2, 1], [3, 1], [2]]) ([[3, 2, 1], [3, 1], [2]], [[3, 2, 1], [3, 1], [3]]) ([[3, 2, 1], [3, 1], [2]], [[3, 2, 1], [3, 2], [2]]) ([[3, 2, 1], [3, 1], [3]], [[3, 2, 1], [3, 2], [3]]) ([[3, 2, 1], [3, 2], [2]], [[3, 2, 1], [3, 2], [3]])
-
lattice
()¶ Return the lattice of the monotone triangles with
rows.
EXAMPLES:
sage: M = MonotoneTriangles(3) sage: P = M.lattice() sage: P Finite lattice containing 7 elements
-
class
sage.combinat.alternating_sign_matrix.
TruncatedStaircases
¶ Bases:
sage.structure.parent.Parent
Factory class for the combinatorial class of truncated staircases of size
n
with last columnlast_column
.EXAMPLES:
sage: t4 = TruncatedStaircases(4, [2,3]); t4 Truncated staircases of size 4 with last column [2, 3] sage: t4.cardinality() 4
-
class
sage.combinat.alternating_sign_matrix.
TruncatedStaircases_nlastcolumn
(n, last_column)¶ Bases:
sage.combinat.alternating_sign_matrix.TruncatedStaircases
TESTS:
sage: t4 = TruncatedStaircases(4, [2,3]); t4 Truncated staircases of size 4 with last column [2, 3] sage: t4 == loads(dumps(t4)) True
-
cardinality
()¶ EXAMPLES:
sage: T = TruncatedStaircases(4, [2,3]) sage: T.cardinality() 4
-
-
sage.combinat.alternating_sign_matrix.
nw_corner_sum
(M, i, j)¶ Return the sum of entries to the northwest of
in matrix.
EXAMPLES:
sage: from sage.combinat.alternating_sign_matrix import nw_corner_sum sage: A = matrix.ones(3,3) sage: nw_corner_sum(A,2,2) 4