login
Number of not-necessarily-reduced pipe dreams that represent the identity permutation.
0

%I #18 May 18 2026 10:10:52

%S 1,1,2,6,34,342,6408

%N Number of not-necessarily-reduced pipe dreams that represent the identity permutation.

%C "Not-necessarily-reduced pipe dreams" in the sense of Moriah Elkin's paper below, proposition 5.5.

%H Nantel Bergeron and Sara Billey, <a href="https://doi.org/10.1080/10586458.1993.10504567">RC-Graphs and Schubert Polynomials</a>, Experimental Mathematics, Vol. 2, No. 4 (1993), pp. 257-269; <a href="https://projecteuclid.org/journals/experimental-mathematics/volume-2/issue-4/RC-graphs-and-Schubert-polynomials/em/1048516036.full">Project Euclid link</a>.

%H Moriah Elkin, <a href="https://doi.org/10.48550/arXiv.2511.17723">Three Formulas for CSM Classes of Open Quiver Loci</a>, arXiv:2511.17723 [math.CO], 2025-2026.

%e For n = 4, the not-necessarily-reduced pipe dreams that represent the identity permutation are shown below.

%e In this visualization, 1 represents a cross, and 0 represents a bump. There are 6 total.

%e [0 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 1 0] [0 0 0 0] [0 1 1 0]

%e [0 0 0 0] [1 0 0 0] [0 1 0 0] [0 0 0 0] [0 1 0 0] [1 0 0 0]

%e [0 0 0 0] [0 0 0 0] [0 0 0 0] [1 0 0 0] [1 0 0 0] [1 0 0 0]

%e [0 0 0 0], [0 0 0 0], [0 0 0 0], [0 0 0 0], [0 0 0 0], [0 0 0 0]

%o (SageMath)

%o from itertools import combinations

%o from sage.all import *

%o def mats(n):

%o """

%o Generate all n x n matrices with entries in {0,1}

%o such that all 1s occur strictly above the antidiagonal.

%o """

%o # Positions strictly above the antidiagonal:

%o # i + j < n - 1

%o positions = [

%o (i, j)

%o for i in range(n)

%o for j in range(n)

%o if i + j < n - 1

%o ]

%o mats = []

%o # For every subset of allowed positions

%o for r in range(len(positions) + 1):

%o for subset in combinations(positions, r):

%o M = matrix(ZZ, n, n)

%o for (i, j) in subset:

%o M[i, j] = 1

%o mats.append(M)

%o return mats

%o def diag_pos(n):

%o """

%o Return positions above the antidiagonal

%o ordered by diagonals i-j = const,

%o with diagonals listed from top-right

%o to bottom-left.

%o Within each diagonal, positions are read

%o from top to bottom.

%o """

%o pos = []

%o # Possible values of i-j

%o # start at the top-right corner and move toward bottom-left

%o for d in range(-(n - 2), n - 1):

%o diag = []

%o for i in range(n):

%o j = i - d

%o if (

%o 0 <= j < n and

%o i + j < n - 1

%o ):

%o diag.append((i, j))

%o pos.extend(diag)

%o return pos

%o def mat_to_perm(M):

%o """

%o Associate a permutation to M.

%o At position (i,j), associate the simple transposition

%o s_{i+j+1} = (i+j+1, i+j+2)

%o in Sage's 1-based convention.

%o Read entries in diagonal order from top-right

%o to bottom-left. Whenever an entry is 1,

%o left-multiply by the corresponding simple transposition.

%o """

%o n = M.nrows()

%o W = SymmetricGroup(n)

%o w = W.one()

%o for (i, j) in diag_pos(n):

%o if M[i, j] == 1:

%o k = i + j + 1

%o s = W.simple_reflection(k)

%o w = s * w

%o return w

%o def count_id_PDs(n):

%o counter = 0

%o for M in mats(n):

%o if mat_to_perm(M) == SymmetricGroup(n).one():

%o counter +=1

%o return counter

%o def id_PD_seq(n):

%o '''

%o Prints the sequence of the number of not-necessarily-reduced pipe dreams from 1 to n

%o '''

%o for i in range(1,n+1):

%o print(count_id_PDs(i))

%K nonn,hard,more

%O 1,3

%A _Ariella Petersen_, May 07 2026