%% if you are submitting an initial manuscript then you should have submission as an option here
%% if you are submitting a revised manuscript then you should have revision as an option here
%% otherwise options taken by the article class will be accepted
\documentclass[submission]{FPSAC2019}
%% but DO NOT pass any options (or change anything else anywhere) which alters page size / layout / font size etc

\articlenumber{63}
\addbibresource{63.bib}

%% note that the class file already loads {amsmath, amsthm, amssymb}

\usepackage{enumerate}
\usepackage{tikz}

%python
%import re
%def draw_pipe_dream(D,n):
%    s = ""
%    for i in xrange(1,n+1):
%        for j in xrange(1,n-i+2):
%            s += "\\filldraw (%s, %s) circle[radius=.6mm];\n" % (j-.5, n-i+.5)
%            s += "\\draw\n"
%            if (i,j) in D:
%                s += "(%s,%s) to (%s,%s)\n" % (j-1, n-i+.5, j, n-i+.5)   # horizontal pipe
%                s += "(%s,%s) to (%s,%s);\n" % (j-.5, n-i, j-.5, n-i+1) # vertical pipe
%            elif i+j < n+1:
%                s += "(%s,%s) to[bend right] (%s,%s)\n" % (j-1, n-i+.5, j-.5, n-i+1) # left-to-top pipe
%                s += "(%s,%s) to[bend left] (%s,%s);\n" % (j-.5, n-i, j, n-i+.5) # bottom-to-right pipe
%            elif i+j == n+1:
%                s += "(%s,%s) to[bend right] (%s,%s);\n" % (j-1, n-i+.5, j-.5, n-i+1) # left-to-top pipe
%    return s
%
%def draw_inv_pipe_dream(D,n):
%    s = ""
%    for i in xrange(1,n+1):
%        for j in xrange(1,min(n-i+2,i+1)):
%            s += "\\filldraw (%s, %s) circle[radius=.6mm];\n" % (j-.5, n-i+.5)
%            s += "\\draw\n"
%            if (i,j) in D:
%                s += "(%s,%s) to (%s,%s)\n" % (j-1, n-i+.5, j, n-i+.5)   # horizontal pipe
%                s += "(%s,%s) to (%s,%s);\n" % (j-.5, n-i, j-.5, n-i+1) # vertical pipe
%            elif i+j < n+1:
%                s += "(%s,%s) to[bend right] (%s,%s)\n" % (j-1, n-i+.5, j-.5, n-i+1) # left-to-top pipe
%                s += "(%s,%s) to[bend left] (%s,%s);\n" % (j-.5, n-i, j, n-i+.5) # bottom-to-right pipe
%            elif i+j == n+1:
%                s += "(%s,%s) to[bend right] (%s,%s);\n" % (j-1, n-i+.5, j-.5, n-i+1) # left-to-top pipe
%    return s
%def draw_old_inv_pipe_dream(bottom, top,n):
%    s_bot = draw_pipe_dream(bottom,n)
%    s_top = draw_pipe_dream(top,n)    
%    s_top = re.sub('\(([\d\.]+), ?([\d\.]+)\)', lambda m : str(tuple([float(m.group(1)), 2*n-float(m.group(2))])), s_top)
%    s_top = re.sub('right|left', lambda m : 'left' if m.group(0) == 'right' else 'right', s_top)
%    connections = ''
%    cdist = .3
%
%    for i in xrange(1, n+1):
%        connections += "\\draw[rounded corners]\n"
%        connections += "(%s, %s) to (%s, %s)  to" % (0, n-i+.5,  -cdist*i, n-i+.5)
%        connections += "(%s, %s) to (%s, %s);\n" % (-cdist*i, n+i-.5, 0, n+i-.5)
%    return s_bot + s_top + connections
%

%%%        

\newtheorem{thm}{Theorem}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{prop}[thm]{Proposition}
\newtheorem{conj}[thm]{Conjecture}
\newtheorem{cor}[thm]{Corollary}
\theoremstyle{definition} \newtheorem{defn}[thm]{Definition}
\theoremstyle{definition} \newtheorem{ex}[thm]{Example}
\theoremstyle{definition} \newtheorem{rem}[thm]{Remark}

\newcommand{\CC}{\mathbb{C}}
\newcommand{\ZZ}{\mathbb{Z}}
\newcommand{\NN}{\mathbb{N}}

\renewcommand{\O}{\operatorname{O}}

\newcommand{\fpf}{\mathrm{{FPF}}}

\newcommand{\I}{\mathcal{I}}
\newcommand{\A}{\mathcal{A}}
\newcommand{\Afpf}{\mathcal{A}^{\fpf}}
\newcommand{\B}{\mathcal{B}}
\newcommand{\R}{\mathcal{R}}
\newcommand{\CI}{\mathcal{CI}}
\newcommand{\fkS}{\mathfrak{S}}
\newcommand{\iS}{\hat{\mathfrak{S}}}
\newcommand{\iSfpf}{\hat{\mathfrak{S}}^{\fpf}}
\newcommand{\idfpf}{1^{\fpf}}


\DeclareMathOperator{\Fl}{Fl}
\DeclareMathOperator{\GL}{GL}
\DeclareMathOperator{\Sp}{Sp}
\DeclareMathOperator{\id}{id}
\DeclareMathOperator{\Cyc}{Cyc}
\DeclareMathOperator{\exCyc}{exCyc}
\DeclareMathOperator{\rk}{rk}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\prj}{prj}
\DeclareMathOperator{\wt}{wt}
\DeclareMathOperator{\diag}{diag}
\DeclareMathOperator{\init}{\mathbf{in}}

\newcommand{\eqdef}{\overset{\text{def}}{=}}
\newcommand{\RP}{\mathcal{RP}}
\newcommand{\IRP}{\mathcal{IP}}
\newcommand{\IP}{\mathcal{IP}}
\newcommand{\FP}{\mathcal{FP}}
\newcommand{\iell}{\hat\ell}
\newcommand{\iellfpf}{\hat\ell^{\fpf}}
\newcommand{\ellfpf}{\iellfpf}
\newcommand{\Ifpf}{\I^{\fpf}}

\renewcommand{\R}{\mathcal{R}}
\newcommand{\iR}{\hat{\mathcal{R}}}
\newcommand{\iRfpf}{\hat{\mathcal{R}}^{\fpf}}

\newcommand{\cwt}[3]{m_{#1#2,#3}}

\newcommand{\MX}{MX}
\newcommand{\iX}{\hat X}
\newcommand{\iXfpf}{\hat X^{\fpf}}
\newcommand{\iMX}{M\hat X}
\newcommand{\iMXfpf}{M\hat X^{\fpf}}
\newcommand{\iI}{\hat I}
\newcommand{\Dbot}{D_{\text{bot}}}
\newcommand{\iDbot}{\hat D_{\text{bot}}}
\newcommand{\iDbotfpf}{\hat D_{\text{bot}}^{\fpf}}
\newcommand{\iD}{\hat D}
\newcommand{\iDfpf}{\hat D^{\fpf}}
\newcommand{\ic}{\hat c}
\newcommand{\icfpf}{\hat c^{\fpf}}

\newcommand{\ltriang}{\raisebox{-0.5pt}{\tikz{\draw (0,0) -- (.3,0) -- (0,.3) -- (0,0);}}}
\newcommand{\ltriangeq}{\ltriang}
\newcommand{\ltriangneq}{\ltriang^{\!\!\neq}}

\usepackage{lipsum}

%% define your title in the usual way
\title{Involution pipe dreams}

%% define your authors in the usual way
%% use \addressmark{1}, \addressmark{2} etc for the institutions, and use \thanks{} for contact details
\author{Zachary Hamaker\addressmark{1}, Eric Marberg\addressmark{2}, \and Brendan Pawlowski\addressmark{3}}

%% then use \addressmark to match authors to institutions here
\address{\addressmark{1}University of Michigan \\ \addressmark{2}Hong Kong University of Science and Technology \\ \addressmark{3}University of Southern California\\}

%% put the date of submission here
\received{\today}

%% leave this blank until submitting a revised version
%\revised{}

%% put your English abstract here, or comment this out if you don't have one yet
%% please don't use custom commands in your abstract / resume, as these will be displayed online
%% likewise for citations -- please don't use \cite, and instead write out your citation as something like (author year)
\abstract{Involution Schubert polynomials represent cohomology classes of $K$-orbits in the complete flag variety, where $K$ is the orthogonal or symplectic group. We show that they also represent $T$-equivariant cohomology classes of subvarieties defined by upper-left rank conditions in the spaces of symmetric or skew-symmetric matrices. This geometry implies that these polynomials are positive combinations of monomials in the variables $x_i + x_j$, and we give explicit formulas of this kind as sums over new objects called \emph{involution pipe dreams}. In Knutson and Miller's approach to matrix Schubert varieties, pipe dream formulas reflect Gr\"obner degenerations of the ideals of those varieties, and we conjecturally identify analogous degenerations in our setting.}


%% put your keywords here, or comment this out if you don't have them yet
\keywords{Schubert polynomials, pipe dreams, spherical orbits}

%% you can include your bibliography however you want, but using an external .bib file is STRONGLY RECOMMENDED and will make the editor's life much easier
%% regardless of how you do it, please use numerical citations, ie. [xx, yy] in the text

%% this sample uses biblatex, which (among other things) takes care of URLs in a more flexible way than bibtex
%% but you can use bibtex if you want
%\usepackage[backend=bibtex]{biblatex}
%\addbibresource{inv-pipedreams.bib}
%% note the \printbibliography command at the end of the file which goes with these biblatex commands

\begin{document}

\maketitle
%% note that you DO NOT have to put your abstract here -- it is generated by \maketitle and the \abstract and \resume commands above

\section{Introduction}

Let $[n] = \{1, 2, \ldots, n\}$ for a nonnegative integer $n$. A \emph{pipe dream} is a subset of $\{(i,j) \in [n] \times [n] : i+j \leq n\}$ for some $n$. The name arises because one often draws a pipe dream $D$ on an $n \times n$ grid by representing each $(i,j) \in D$ as a crossing of two strands (a \tikz[scale=0.9]{ \draw (-0.2,0) -- (0.2,0); \draw (0,-0.2) -- (0,0.2);} tile) and each $(i,j) \notin D$ as two strands bending away from each other (a \tikz[scale=0.9]{ \draw (-0.2,0) to[bend right] (0,0.2); \draw (0,-0.2) to[bend left] (0.2,0); } tile):

\begin{center}
    \raisebox{10mm}{$\{(1,3),(2,1)\} = $}
    \begin{tikzpicture}[scale=0.5]
        \node at (-0.5,3.5) {$\scriptstyle 1$};
        \node at (-0.5,2.5) {$\scriptstyle 2$};
        \node at (-0.5,1.5) {$\scriptstyle 3$};
        \node at (-0.5,0.5) {$\scriptstyle 4$};
        
        \node at (0.5,4.5) {$\scriptstyle 1$};
        \node at (1.5,4.5) {$\scriptstyle 2$};
        \node at (2.5,4.5) {$\scriptstyle 3$};
        \node at (3.5,4.5) {$\scriptstyle 4$};
        %python
        %draw_pipe_dream([(1,3),(2,1)],4)
        \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
        (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
        \filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,3.5) to[bend right] (1.5,4) %%%inserted by pymacro
        (1.5,3) to[bend left] (2,3.5); %%%inserted by pymacro
        \filldraw (2.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,3.5) to (3,3.5) %%%inserted by pymacro
        (2.5,3) to (2.5,4); %%%inserted by pymacro
        \filldraw (3.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (3,3.5) to[bend right] (3.5,4); %%%inserted by pymacro
        \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,2.5) to (1,2.5) %%%inserted by pymacro
        (0.5,2) to (0.5,3); %%%inserted by pymacro
        \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
        (1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
        \filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
        \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
        (0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
        \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
        \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
        %%%
    \end{tikzpicture}
\end{center}
A pipe dream is \emph{reduced} if no pair of strands crosses more than once. From now on we use ``pipe dream'' to mean ``reduced pipe dream''. A pipe dream determines a permutation $w \in S_n$: label the left endpoints of the strands by $1, 2, \ldots, n$ from top to bottom, and the top endpoints by $1, 2, \ldots, n$ from left to right, and take $w$ so that the strand with left endpoint $i$ has top endpoint $w(i)$. For instance, the pipe dream $\{(1,3),(2,1)\}$ above is associated to the permutation $w = w(1)w(2)w(3)w(4) = 1423$.

Let $\RP(w)$ denote the set of reduced pipe dreams associated to $w \in S_n$. The \emph{double Schubert polynomial} of $w$ is
%\begin{equation} \label{eq:double-schubert-def}
  $  \fkS_w(x,x') \eqdef \sum_{D \in \RP(w)} \prod_{(i,j) \in D} (x_i - x'_j).$
%\end{equation}
Double Schubert polynomials represent classes of Schubert varieties in the torus-equivariant cohomology of the complete flag variety $\Fl(n)$, and classes of matrix Schubert varieties in the torus-equivariant cohomology of the space of matrices. Pipe dreams as described here were introduced by Bergeron and Billey \cite{bergeron-billey}, after related diagrams of Fomin and Kirillov \cite{fomin-kirillov-yang-baxter}.

%\begin{itemize}
%    \item The classes in equivariant cohomology $H_T^*(\Fl(n))$ Poincar\'e dual to the $B^-$-orbit closures (\emph{Schubert varieties}) on the complete flag variety $\Fl(n)$, where $B^-$ and $B^+$ are the subgroups of lower and upper triangular matrices in $\GL(n)$ acting on the left of $\Fl(n) \simeq \GL(n)/B$, and $T \subseteq B^-$ is the torus of diagonal matrices.
%    \item The classes in equivariant cohomology $H_{T \times T}^*(M_n)$ Poincar\'e dual to the $B^- \times B^+$-orbit closures (\emph{matrix Schubert varieties}) on the space $M_n$ of $n \times n$ matrices, where $(b_1, b_2) \in B^- \times B^+$ acts on $A \in M_n$ by $(b_1, b_2)\cdot A = b_1 A b_2^{-1}$.
%\end{itemize}

%Our definition \eqref{eq:double-schubert-def} of $\fkS_w$ is ahistorical. Lascoux and Sch\"utzenberger \cite{} introduced the \emph{single} Schubert polynomials $\fkS_w = \fkS_w(x,y)|_{y=0}$ via a different definition, and Billey, Jockusch, and Stanley \cite{} proved that $\fkS_w = \sum_{D \in \RP(w)} \prod_{(i,j) \in D} x_i$, although not exactly in the language of pipe dreams. Pipe dreams themselves were introduced by Bergeron and Billey under the name ``rc-graphs'' \cite{} after similar diagrams of Fomin and Kirillov \cite{}. Knutson and Miller used Gr\"obner degeneration techniques to extract pipe dreams directly from the geometry, showed that the double Schubert polynomial $\fkS_w(x,y)$ is given by $\sum_{D \in \RP(w)} \prod_{(i,j) \in D} (x_i-y_j)$, and introduced the term ``pipe dreams''.

Let $\I_n$ be the set of involutions in $S_n$, and $\Ifpf_n$ the subset of fixed-point-free involutions; note that $n$ must be even for $\Ifpf_n$ to be non-empty. The strong Bruhat order restricted to either $\I_n$ and $\Ifpf_n$ is a ranked poset; let $\iell$ and $\iellfpf$ be the respective rank functions  \cite{incitti}.   \emph{The involution Schubert polynomial} $\iS_y$ of $y \in \I_n$ is a degree $\iell(y)$ homogeneous polynomial in $\ZZ[x_1, \ldots, x_n]$, and similarly the \emph{fixed-point-free (fpf) involution Schubert polynomial} $\iS_z$ of $z \in \Ifpf_n$ is homogeneous of degree $\iellfpf(z)$ (see \cref{defn:inv-schubert}).

Let $SM_n$ (resp. $SSM_n$) be the space of symmetric (resp. skew-symmetric) matrices over $\CC$, and write $A_{[i][j]}$ for the upper-left $i \times j$ corner of a matrix $A$.
\begin{defn} 
    Define the \emph{involution matrix Schubert variety} associated to $y \in \I_n$ is
    \begin{equation*}
        \iMX_y = \{A \in SM_n : \text{$\rank A_{[i][j]} \leq \rank y_{[i][j]}$ for $i,j \in [n]$}\},
    \end{equation*}
    where we identify $y$ with its permutation matrix having $1$'s in positions $(i,y(i))$. The \emph{fpf involution matrix Schubert variety} 
    associated to $z \in \Ifpf_n$ is
        \begin{equation*}
        \iMXfpf_z = \{A \in SSM_n : \text{$\rank A_{[i][j]} \leq \rank z_{[i][j]}$ for $i,j \in [n]$}\},
    \end{equation*}
\end{defn}

Wyser and Yong \cite{wyser-yong-orthogonal-symplectic} showed that the rescaled polynomials $2^{\kappa(y)}\iS_y$ represent equivariant cohomology classes of $\O(n,\CC)$-orbit closures on $\Fl(n)$, where $\kappa(y)$ is the number of 2-cycles of $y$, and that the polynomials $\iSfpf_z$ represent the classes of the $\Sp(n,\CC)$-orbit closures. Our first main result is a matrix analogue of these facts. Let $T$ be the torus of diagonal matrices in $\GL(n,\CC)$, and $H_T^*(X)$ the $T$-equivariant cohomology ring of a space $X$ with $T$-action. Both $H_T^*(SM_n)$ and $H_T^*(SSM_n)$ can be identified with polynomial rings, where the action of $t \in T$ on a matrix $A$ is given by $t \cdot A = tAt$.
\begin{thm} \label{thm:inv-schubert-classes} The class $[\iMX_y] \in H_T^*(SM_n)$ equals $2^{\kappa(y)}\iS_y$, and the class $[\iMXfpf_z] \in H_T^*(SSM_n)$ equals $\iSfpf_z$. \end{thm}
    A proof of \cref{thm:inv-schubert-classes} in the $H_T^*(SM_n)$ case will be sketched in \cref{sec:inv-matrix-schubert}, with the other case following by a similar argument. \cref{thm:inv-schubert-classes} implies that $2^{\kappa(y)}\iS_y$ and $\iSfpf_z$ have expansions as positive combinations of monomials in the variables $x_i+x_j$.  \cref{thm:inv-pipe-dream-formula} below will show how to index these monomials by certain weighted pipe dreams. We first define the relevant class of pipe dreams.  Let $\ltriangeq_n = \{(i,j) \in [n] \times [n] : i \geq j\}$ and $\ltriangneq_n = \{(i,j) \in [n] \times [n] : i > j\}$.
\begin{defn} \label{defn:inv-pipe-dreams-1} A pipe dream $D$ is \emph{symmetric} if $(i,j) \in D$ implies $(j,i) \in D$. We call $D$ \emph{almost-symmetric} if, whenever $n \geq i > j$,
\begin{itemize}
\item $(j,i) \in D$ implies $(i,j) \in D$;
\item If $(i,j) \in D$ but $(j,i) \notin D$, then the strands crossing at $(i,j)$ are also the strands that avoid each other at $(j,i)$.
\end{itemize}

The set of \emph{involution pipe dreams} of $y \in \I_n$ is
\begin{equation*}
\IP(y) \eqdef \{D \cap \ltriangeq_n : D \in \RP(y) \text{ is almost-symmetric}\}.
\end{equation*}
The set of \emph{fpf involution pipe dreams} of $z \in \Ifpf_{n}$ is
\begin{equation*}
\FP(z) \eqdef \{D \cap \ltriangneq_n : D \in \RP(z) \text{ is symmetric and contains $(i,i)$ for $1 \leq i \leq n/2$}\}
\end{equation*}
\end{defn}
Informally, $D$ is almost-symmetric if it is as symmetric across the main diagonal as possible while respecting the condition that no pair of strands crosses twice, and any violation of symmetry forced by this condition takes the form of a crossing $(i,j)$ below the diagonal and no crossing at the transpose $(j,i)$, rather than the reverse.

Our second main result gives formulas for $\iS_y$ and $\iSfpf_z$ in terms of involution pipe dreams. For $(i,j) \in D$ and $D \in \IRP(y)$, let $r$ and $s$ be the labels of the strands passing through $(i,j)$: define $\cwt{i}{j}{D}$ to be $2$ if $(r,s)$ is a 2-cycle of $y$ and $i \neq j$, and $1$ otherwise.
\begin{thm} \label{thm:inv-pipe-dream-formula} For any $y \in \I_n$ and $z \in \Ifpf_n$ we have
\begin{equation*}
2^{\kappa(z)} \iS_y = \sum_{D \in \IRP(y)} \prod_{(i,j) \in D} \cwt{i}{j}{D}(x_i + x_j) \qquad \text{and} \qquad \iSfpf_z = \sum_{D \in \FP(z)} \prod_{(i,j) \in D} (x_i + x_j)
\end{equation*}
\end{thm}
A proof of \cref{thm:inv-pipe-dream-formula} in the $\I_n$ case is sketched in \cref{sec:inv-schubert}.

\begin{ex}
    The involution $z = 1432 = (2,4)$ has 5 pipe dreams:
    \begin{center}
        \begin{tikzpicture}[scale=0.5]
        %python
        %draw_pipe_dream([(2,1),(2,2),(3,1)], 4)
        \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
        (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
        \filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,3.5) to[bend right] (1.5,4) %%%inserted by pymacro
        (1.5,3) to[bend left] (2,3.5); %%%inserted by pymacro
        \filldraw (2.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,3.5) to[bend right] (2.5,4) %%%inserted by pymacro
        (2.5,3) to[bend left] (3,3.5); %%%inserted by pymacro
        \filldraw (3.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (3,3.5) to[bend right] (3.5,4); %%%inserted by pymacro
        \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,2.5) to (1,2.5) %%%inserted by pymacro
        (0.5,2) to (0.5,3); %%%inserted by pymacro
        \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,2.5) to (2,2.5) %%%inserted by pymacro
        (1.5,2) to (1.5,3); %%%inserted by pymacro
        \filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
        \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,1.5) to (1,1.5) %%%inserted by pymacro
        (0.5,1) to (0.5,2); %%%inserted by pymacro
        \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
        \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
        %%%
        \end{tikzpicture} \qquad  
       \begin{tikzpicture}[scale=0.5]
        %python
        %draw_pipe_dream([(1,2),(1,3),(3,1)], 4)
        \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
        (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
        \filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,3.5) to (2,3.5) %%%inserted by pymacro
        (1.5,3) to (1.5,4); %%%inserted by pymacro
        \filldraw (2.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,3.5) to (3,3.5) %%%inserted by pymacro
        (2.5,3) to (2.5,4); %%%inserted by pymacro
        \filldraw (3.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (3,3.5) to[bend right] (3.5,4); %%%inserted by pymacro
        \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
        (0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
        \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
        (1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
        \filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
        \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,1.5) to (1,1.5) %%%inserted by pymacro
        (0.5,1) to (0.5,2); %%%inserted by pymacro
        \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
        \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
        %%%
        \end{tikzpicture} \qquad 
        \begin{tikzpicture}[scale=0.5]
        %python
        %draw_pipe_dream([(1,2),(1,3),(2,2)], 4)
        \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
        (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
        \filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,3.5) to (2,3.5) %%%inserted by pymacro
        (1.5,3) to (1.5,4); %%%inserted by pymacro
        \filldraw (2.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,3.5) to (3,3.5) %%%inserted by pymacro
        (2.5,3) to (2.5,4); %%%inserted by pymacro
        \filldraw (3.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (3,3.5) to[bend right] (3.5,4); %%%inserted by pymacro
        \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
        (0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
        \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,2.5) to (2,2.5) %%%inserted by pymacro
        (1.5,2) to (1.5,3); %%%inserted by pymacro
        \filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
        \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
        (0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
        \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
        \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
        %%%
        \end{tikzpicture} \qquad 
        \begin{tikzpicture}[scale=0.5]
        %python
        %draw_pipe_dream([(1,3),(2,1),(3,1)], 4)
        \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
        (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
        \filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,3.5) to[bend right] (1.5,4) %%%inserted by pymacro
        (1.5,3) to[bend left] (2,3.5); %%%inserted by pymacro
        \filldraw (2.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,3.5) to (3,3.5) %%%inserted by pymacro
        (2.5,3) to (2.5,4); %%%inserted by pymacro
        \filldraw (3.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (3,3.5) to[bend right] (3.5,4); %%%inserted by pymacro
        \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,2.5) to (1,2.5) %%%inserted by pymacro
        (0.5,2) to (0.5,3); %%%inserted by pymacro
        \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
        (1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
        \filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
        \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,1.5) to (1,1.5) %%%inserted by pymacro
        (0.5,1) to (0.5,2); %%%inserted by pymacro
        \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
        \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
        %%%
        \end{tikzpicture} \qquad 
        \begin{tikzpicture}[scale=0.5]
        %python
        %draw_pipe_dream([(1,2),(2,1),(2,2)], 4)
        \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
        (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
        \filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,3.5) to (2,3.5) %%%inserted by pymacro
        (1.5,3) to (1.5,4); %%%inserted by pymacro
        \filldraw (2.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,3.5) to[bend right] (2.5,4) %%%inserted by pymacro
        (2.5,3) to[bend left] (3,3.5); %%%inserted by pymacro
        \filldraw (3.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (3,3.5) to[bend right] (3.5,4); %%%inserted by pymacro
        \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,2.5) to (1,2.5) %%%inserted by pymacro
        (0.5,2) to (0.5,3); %%%inserted by pymacro
        \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,2.5) to (2,2.5) %%%inserted by pymacro
        (1.5,2) to (1.5,3); %%%inserted by pymacro
        \filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
        \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
        (0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
        \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
        \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
        \draw %%%inserted by pymacro
        (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
        %%%
        \end{tikzpicture}  
    \end{center}
    The last two of these are almost-symmetric, so give involution pipe dreams when intersected with $\ltriang_4$:
    \begin{center}
        \begin{tikzpicture}[scale=0.6]
            %python
            %draw_inv_pipe_dream([(2,1),(3,1)],4)
            \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
            (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
            \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,2.5) to (1,2.5) %%%inserted by pymacro
            (0.5,2) to (0.5,3); %%%inserted by pymacro
            \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
            (1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
            \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,1.5) to (1,1.5) %%%inserted by pymacro
            (0.5,1) to (0.5,2); %%%inserted by pymacro
            \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
            \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
            %%%
        \end{tikzpicture} \qquad
        \begin{tikzpicture}[scale=0.6]
            %python
            %draw_inv_pipe_dream([(2,1),(2,2)],4)
            \filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
            (0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
            \filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,2.5) to (1,2.5) %%%inserted by pymacro
            (0.5,2) to (0.5,3); %%%inserted by pymacro
            \filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (1,2.5) to (2,2.5) %%%inserted by pymacro
            (1.5,2) to (1.5,3); %%%inserted by pymacro
            \filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
            (0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
            \filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
            \filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
            \draw %%%inserted by pymacro
            (0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
            %%%
        \end{tikzpicture}
    \end{center}
    \cref{thm:inv-pipe-dream-formula} now says that $2^1\iS_{(2,4)} = 2(x_2+x_1)(x_3+x_1) + (x_2+x_1)(x_2 + x_2)$.
\end{ex}
In \cref{sec:reduced-words}, we recast the definition of involution pipe dreams in terms of reduced words. In \cref{sec:generating-pipe-dreams}, we describe an effective algorithm for generating the set $\IRP(z)$ by starting with a distinguished pipe dream and repeatedly applying certain transformations to obtain the rest. These transformations are analogous to the \emph{ladder moves} of Bergeron and Billey \cite{bergeron-billey}. Definitions of involution Schubert polynomials are recalled in \cref{sec:inv-schubert}, and a proof of \cref{thm:inv-pipe-dream-formula} is sketched. \cref{sec:inv-matrix-schubert} discusses involution matrix Schubert varieties, and contains a proof sketch of \cref{thm:inv-schubert-classes}.

Knutson and Miller obtained pipe dreams directly from the geometry of matrix Schubert varieties, by finding Gr\"obner degenerations of the prime ideals of these varieties to monomial ideals whose components correspond naturally to pipe dreams \cite{knutson-miller}. In particular, this implies the formula $\fkS_w(x,x') = \sum_{D \in \RP(w)} \prod_{(i,j) \in D} (x_i-x'_j)$. In \cref{sec:ideals}, we describe conjectural results along the same lines for involution matrix Schubert varieties, which would have \cref{thm:inv-pipe-dream-formula} as a corollary.

\section{Involution pipe dreams via reduced words} \label{sec:reduced-words}

Let $s_i$ be the adjacent transposition $(i,i{+}1)$. Recall that a \emph{reduced word} for $w \in S_n$ is a minimal-length word $a_1 \cdots a_\ell$ such that $s_{a_1} \cdots s_{a_\ell} = w$, and that the \emph{length} $\ell(w)$ is the length of any reduced word of $w$, or equivalently the number of inversions of $w$. Given a finite set $D \subseteq \NN \times \NN$, order its elements $(i_1, j_1), \ldots, (i_\ell, j_\ell)$ by reading from right to left across the top row, then the next row down, etc. Associate to $D$ the word $a(D) = (j_1{+}i_1{-}1, \ldots, j_\ell{+}i_\ell{-}1)$. Then $D \in \RP(w)$ if and only if $a(D)$ is reduced for $w$.

The \emph{Demazure product} is the unique associative binary operation $\circ$ on $S_n$ such that
\begin{equation*}
w \circ s_i = \begin{cases}
ws_i & \text{if $\ell(ws_i) > \ell(w)$}\\
w & \text{otherwise}
\end{cases}.
\end{equation*} 

\begin{defn}[\cite{richardson-springer}] An \emph{involution word} for $y \in \I_n$ is a minimal-length word $a_1 \cdots a_\ell$ with
\begin{equation*}
y = s_{a_\ell} \circ \cdots \circ s_{a_1} \circ 1 \circ s_{a_1} \circ \cdots \circ s_{a_\ell}.
\end{equation*}
An \emph{fpf involution word} for $z \in \Ifpf_{n}$ is a minimal-length word $a_1 \cdots a_\ell$ with
\begin{equation*}
y = s_{a_\ell} \circ \cdots \circ s_{a_1} \circ \idfpf_n \circ s_{a_1} \circ \cdots \circ s_{a_\ell}
\end{equation*}
where $\idfpf_n = (1,2)(3,4)\cdots (n-1,n)$.
\end{defn}
Let $\R(w)$ be the set of reduced words for $w \in S_n$, and $\iR(y)$ the set of involution words for $y \in \I_n$, and $\iRfpf(z)$ the set of fpf involution words for $z \in \Ifpf_n$. Involution words are a special case of a more general construction of Richardson and Springer \cite{richardson-springer}, and have been studied by various authors \cite{HMP1, hansson-hultman, hu-zhang, hultman-twisted-involutions}

The notion of involution pipe dream can be rephrased in terms of involution words. 
\begin{lem} A subset $D \subseteq \ltriangeq_n$ is an involution pipe dream for $y \in \I_n$ if and only if $a(D)$ is an involution word for $y$. A subset $D \subseteq \ltriangneq_n$ is an fpf involution pipe dream for $z \in \Ifpf_n$ if and only if $a(D)$ is an fpf involution word for $z$.
\end{lem}

\begin{ex}
Since
$s_3 \circ s_2 \circ 1 \circ  s_2 \circ s_3 = (2,4) = s_2 \circ s_3 \circ 1 \circ s_3 \circ s_2$, both ${\bf 23}$ and ${\bf 32}$ are involution words for $y=(2,4)$, arising as words $a(D)$ from the involution pipe dreams
\begin{center}
\begin{tikzpicture}[scale=0.6]
%python
%draw_inv_pipe_dream([(2,1),(3,1)], 4)
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
(0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to (1,2.5) %%%inserted by pymacro
(0.5,2) to (0.5,3); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
(1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to (1,1.5) %%%inserted by pymacro
(0.5,1) to (0.5,2); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture} \qquad 
\begin{tikzpicture}[scale=0.6]
%python
%draw_inv_pipe_dream([(2,1),(2,2)], 4)
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
(0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to (1,2.5) %%%inserted by pymacro
(0.5,2) to (0.5,3); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to (2,2.5) %%%inserted by pymacro
(1.5,2) to (1.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
(0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture} 
\end{center}
\end{ex}

\begin{proof}[Proof sketch]
When $a = a_1 \cdots a_\ell$ is a word with positive integer letters, let $[[a]] = s_{a_1} \cdots s_{a_\ell}$. Given such a word $a$, we define a list of words $b^{(0)}, \ldots, b^{(\ell)}$ recursively as follows: let $b^{(0)}$ be the empty word, and for $i \in [\ell]$ let
\begin{equation*}
b^{(i)} = \begin{cases}
b^{(i-1)} a_i & \text{if $s_{a_i}[[b^{(i-1)}]] = [[b^{(i-1)}]] s_{a_i}$}\\
a_i b^{(i-1)} a_i & \text{otherwise}
\end{cases}
\end{equation*}
For instance, if $a = {\bf 132}$, then $b^{(1)} = {\bf 1}$, $b^{(2)} = {\bf 13}$, $b^{(3)} = {\bf 2132}$. The useful formula
\begin{equation*} \label{eq:demazure-conj}
    s_i \circ z \circ s_i = \begin{cases}
        z s_i & \text{if $z s_i = s_i z$}\\
        s_i z s_i & \text{otherwise}
    \end{cases}
\end{equation*}
shows that $a \in \iR(y)$ if and only if $b \in \R(y)$, from which one can deduce that if $D \in \RP(y)$ is almost-symmetric, then $a(D \cap \ltriangeq_n) \in \iR(y)$. Conversely, take $\hat D \subseteq \ltriangeq_n$ such that $a = a(\hat D) \in \iR(y)$. Let $E \subseteq \hat D$ be the set of crossings in $\hat D$ corresponding to the letters $a_i$ of $a$ with $b^{(i)} = a_i b^{(i-1)} a_i$. Then $\hat D \cup E^t$ is an almost-symmetric pipe dream for $y$, where $E^t \eqdef \{(q,p) : (p,q) \in E\}$.

Similarly, if $z \in \Ifpf_n$ and $D \in \RP(z)$ is symmetric and contains $(i,i)$ for $1 \leq i \leq n/2$, then $a(D \cap \ltriangneq_n) \in \iRfpf(z)$. Conversely, if $\hat D \subseteq \ltriangneq_n$ is such that $a(\hat D) \in \iRfpf(z)$, then $\hat D \cup \{(i,i) : 1 \leq i \leq n/2\} \cup \hat D^t$ is in $\RP(z)$.
\end{proof}

\section{Generating involution pipe dreams from Rothe diagrams} \label{sec:generating-pipe-dreams}
The \emph{Rothe diagram} of  $w \in S_n$ is $D(w) \eqdef \{(i,j) \in [n] \times [n] : j < w(i), i < w^{-1}(j)\}$: this is the set of positions in the permutation matrix of $w$ which are strictly above the $1$ in their column, and strictly left of the $1$ in their row.  It is not hard to see that $|D(w)| = \ell(w)$. The \emph{code} of $w$ is the sequence $c(w) = (c(w)_1, \ldots, c(w)_n)$ of row lengths of $D(w)$, and the \emph{bottom pipe dream} $\Dbot(w)$ is then $\{(i,j) : i \in [n], j \in [c(w)_i]\}$. The bottom pipe dream is obtained by left-justifying $D(w)$: the name ``bottom'' arises from its status as the unique minimum in a certain partial order on pipe dreams \cite{bergeron-billey}.

\begin{ex}
If $w = 35142$, then $D(w)$ is the set of $\square$'s below, where we have drawn the $1$'s in the permutation matrix for reference:
\begin{equation*}
\begin{array}{ccccc}
\square & \square & 1 & \cdot & \cdot\\
\square & \square & \cdot & \square & 1\\
1 & \cdot & \cdot & \cdot & \cdot\\
\cdot & \square & \cdot & 1 & \cdot\\
\cdot & 1 & \cdot & \cdot & \cdot
\end{array}
\quad \text{so} \quad c(w) = (2,3,0,1,0) \quad \text{and} \quad
\Dbot(w) =\ \raisebox{-8mm}{\begin{tikzpicture}[scale=0.5]
%python
%draw_pipe_dream([(1,1),(1,2),(2,1),(2,2), (2,3),(4,1)], 5)
\filldraw (0.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,4.5) to (1,4.5) %%%inserted by pymacro
(0.5,4) to (0.5,5); %%%inserted by pymacro
\filldraw (1.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,4.5) to (2,4.5) %%%inserted by pymacro
(1.5,4) to (1.5,5); %%%inserted by pymacro
\filldraw (2.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,4.5) to[bend right] (2.5,5) %%%inserted by pymacro
(2.5,4) to[bend left] (3,4.5); %%%inserted by pymacro
\filldraw (3.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(3,4.5) to[bend right] (3.5,5) %%%inserted by pymacro
(3.5,4) to[bend left] (4,4.5); %%%inserted by pymacro
\filldraw (4.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(4,4.5) to[bend right] (4.5,5); %%%inserted by pymacro
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to (1,3.5) %%%inserted by pymacro
(0.5,3) to (0.5,4); %%%inserted by pymacro
\filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,3.5) to (2,3.5) %%%inserted by pymacro
(1.5,3) to (1.5,4); %%%inserted by pymacro
\filldraw (2.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,3.5) to (3,3.5) %%%inserted by pymacro
(2.5,3) to (2.5,4); %%%inserted by pymacro
\filldraw (3.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(3,3.5) to[bend right] (3.5,4); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
(0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
(1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
\filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to (1,1.5) %%%inserted by pymacro
(0.5,1) to (0.5,2); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}}
\end{equation*}
\end{ex}

\begin{defn}
    A \emph{chute move} on a pipe dream $D$ replaces a configuration
    \begin{equation*}
    \arraycolsep=1.5pt
    \begin{array}{cccccc}
        \cdot & + & + & \cdots & + & +\\
        \cdot & + & + & \cdots & + & \cdot
    \end{array}
     \quad \leadsto \quad 
    \begin{array}{cccccc}
        \cdot & + & + & \cdots & + & \cdot\\
        + & + & + & \cdots & + & \cdot
    \end{array}
    \end{equation*}
For simplicity, we indicate elements of $D$ by $+$ in this picture and omit the strands.
A \emph{ladder move} is the transpose of a chute move.
 More formally, assume that $(i,j) \in D$, $(i,j+1) \notin D$, and that for some $1 \leq k \leq i$, $D$ contains $(p,j)$ and $(p,j+1)$ for all $k < p < i$ but that $(k,j), (k,j+1) \notin D$. Then a ladder move replaces $D$ by $D \setminus \{(i,j)\} \cup \{(k,j+1)\}$.
\end{defn}

\begin{thm}[\cite{bergeron-billey}] The bottom pipe dream $\Dbot(w)$ is in $\RP(w)$, and the smallest set containing $\Dbot(w)$ which is closed under ladder moves is $\RP(w)$. \end{thm}

\begin{defn} The \emph{involution Rothe diagram} of $y \in \I_n$ is $\iD(y) \eqdef D(y) \cap \ltriang_n$, the \emph{involution code} is the sequence $\ic(y)$ of row lengths of $\iD(y)$, and the \emph{bottom involution pipe dream} $\iDbot(y)$ is $\{(i,j) : i \in [n], j \in [\ic(y)_i]\}$.  

The \emph{fpf involution Rothe diagram} of $z \in \Ifpf_n$ is $\iDfpf(z) \eqdef D(z) \cap \ltriangneq_n$, from which we define the \emph{fpf involution code} $\icfpf(z)$ and \emph{bottom fpf involution pipe dream} $\iDbotfpf(z)$ as before.
\end{defn}

\begin{ex}
\label{ex:code}
If $y = (1,3)(2,5) = 35142$, then
\begin{equation*}
\iD(y) = \begin{array}{ccccc}
\square & \cdot & 1 & \cdot & \cdot\\
\square & \square & \cdot & \cdot & 1\\
1 & \cdot & \cdot & \cdot & \cdot\\
\cdot & \square & \cdot & 1 & \cdot\\
\cdot & 1 & \cdot & \cdot & \cdot
\end{array} \quad \text{so} \quad \ic(y) = (1,2,0,1,0) \quad \text{and} \quad \iDbot(y) =\  \raisebox{-8mm}{\begin{tikzpicture}[scale=0.5]
%python
%draw_inv_pipe_dream([(1,1),(2,1),(2,2),(4,1)], 5)
\filldraw (0.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,4.5) to (1,4.5) %%%inserted by pymacro
(0.5,4) to (0.5,5); %%%inserted by pymacro
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to (1,3.5) %%%inserted by pymacro
(0.5,3) to (0.5,4); %%%inserted by pymacro
\filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,3.5) to (2,3.5) %%%inserted by pymacro
(1.5,3) to (1.5,4); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
(0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
(1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
\filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to (1,1.5) %%%inserted by pymacro
(0.5,1) to (0.5,2); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}}
\end{equation*}
\end{ex}

\begin{defn}
    An \emph{involution ladder move} (respectively, \emph{fpf involution ladder move}) makes the following change to a configuration in a pipe dream $D$:
    \begin{equation*}
%        \begin{array}{cc}
%            + & .\\
%            + & +\\
%            \vdots & \vdots\\
%            + & +\\
%            + & \cdot
%        \end{array} \quad \leadsto \quad \begin{array}{cc}
%            + & +\\
%            + & +\\
%            \vdots & \vdots\\
%            + & +\\
%            \cdot & \cdot
%        \end{array}
%\qquad \left(\text{respectively, } \ \ 
%        \begin{array}{ccc}
%            \cdot & + & .\\
%            & + & +\\
%            & \vdots & \vdots\\
%            & + & +\\
%            & + & \cdot
%        \end{array} \quad \leadsto \quad \begin{array}{ccc}
%            + & + & +\\
%            & + & +\\
%            & \vdots & \vdots\\
%            & + & +\\
%            & \cdot & \cdot
%        \end{array}\right)
\arraycolsep=1.5pt
 \begin{array}{cccccc}
   & \cdot & \cdot & \cdot & \cdot\\
 \cdot & \cdot  & \cdot & \cdot\\
   + & \cdot  & \cdot\\
   + & + \\
   + & +  & {\color{white}+} &  {\color{white}+} &  {\color{white}+} \\
   + & \cdot
   \end{array}
\leadsto\ \ 
\arraycolsep=1.5pt
 \begin{array}{cccccc}
   & \cdot & \cdot & \cdot & \cdot\\
 \cdot & \cdot  & \cdot & \cdot\\
   + & +  & \cdot\\
   + & + \\
   + & +  & {\color{white}+} &  {\color{white}+} &  {\color{white}+} \\
   \cdot & \cdot
   \end{array}
   \quad \left(\text{respectively, } \ \  
\arraycolsep=1.5pt
 \begin{array}{cccccc}
 & \cdot & \cdot & \cdot & \cdot &\cdot \\
 \cdot &\cdot & \cdot  & \cdot & \cdot\\
\cdot &   + & \cdot  & \cdot\\
 &  + & + \\
{\color{white}+}  &  + & +  &  {\color{white}+} & {\color{white}+} &  {\color{white}+} \\
 &  + & \cdot
      \end{array}
 \leadsto\ \
\arraycolsep=1.5pt
 \begin{array}{cccccc}
 & \cdot & \cdot & \cdot & \cdot &\cdot \\
 \cdot &\cdot & \cdot  & \cdot & \cdot\\
+ &   + & \cdot  & \cdot\\
 &  + & + \\
 &  + & +  &  {\color{white}+} & {\color{white}+} &  {\color{white}+} \\
 &  \cdot & \cdot
      \end{array} 
   \right)
    \end{equation*}
For these moves to be allowed, the resulting set must still be contained in $\ltriang_n$ or $\ltriangneq_n$, respectively,
and no other positions can occur in the northeast diagonals that are shown continuing above each configuration of pluses.
\end{defn}

\begin{thm} \label{thm:ladder-moves} The bottom involution pipe dream $\iDbot(y)$ is in $\IP(y)$, and the smallest set containing $\iDbot(y)$  which is closed under involution ladder moves \emph{and} ordinary ladder moves is $\IP(y)$. Similarly, $\iDbotfpf(z) \in \FP(z)$ and $\FP(z)$ is the smallest set containing $\iDbotfpf(z)$ which is closed under fpf involution ladder moves and ordinary ladder moves. \end{thm}

\section{Involution Schubert polynomials} \label{sec:inv-schubert}

Work of Richardson and Springer \cite{richardson-springer} implies that there are sets of permutations $\A(y)$ and $\Afpf(z)$ with $\iR(y) = \bigcup_{w \in \A(y)} \R(w)$ and $\iRfpf(z) = \bigcup_{w \in \Afpf(z)} \R(w)$.  Let $\fkS_w = \fkS_w(x, 0)$ be the Schubert polynomial $\sum_{D \in \RP(w)} \prod_{(i,j) \in D} x_i$.

\begin{defn} \label{defn:inv-schubert} The \emph{involution Schubert polynomial} of $y \in \I_n$ is $\iS_y \eqdef \sum_{w \in \A(y)} \fkS_w$, and the \emph{fpf involution Schubert polynomial} of $z \in \Ifpf_n$ is $\iSfpf_z \eqdef \sum_{w \in \Afpf(z)} \fkS_w$.
\end{defn}
These polynomials were introduced by Wyser and Yong \cite{wyser-yong-orthogonal-symplectic}, although with a different definition; work of Brion \cite{brion} implies that the definitions agree.

\begin{ex} $\iR((2,4)) = \{\bf 23, 32\}$ so $\A((2,4)) = \{1342, 1423\}$ and
\begin{equation*}
\iS_{(2,4)} = \fkS_{1342} + \fkS_{1423} = (x_2 x_3 + x_1 x_3 + x_1 x_2) + (x_2^2 + x_1 x_2 + x_1^2).
\end{equation*}
\end{ex}

The definitions above immediately give the monomial expansions
\begin{equation} \label{eq:monomial-expansion-1}
\iS_y = \sum_{w \in \A(y)} \sum_{D \in \RP(w)} \prod_{(i,j) \in D} x_i \qquad \text{and} \qquad \iSfpf_z = \sum_{w \in \A(z)} \sum_{D \in \RP(w)} \prod_{(i,j) \in D} x_i.
\end{equation}
As described in \cref{sec:inv-matrix-schubert}, one can view $2^{\kappa(y)} \iS_y$ and $\iSfpf_z$ as representing classes in equivariant cohomology in two different ways. One of these interpretations suggests positive expansions into monomials in $x_1, \ldots, x_n$ as provided by \eqref{eq:monomial-expansion-1}. The other suggests positive expansions into monomials in $x_i+x_j$ for $i \leq j$ (or $i < j$ in the fpf case), and the next theorem provides such expansions.
Let
\begin{equation*}
\mathfrak{P}_y = \sum_{D \in \IP(y)} \prod_{(i,j) \in D} \cwt{i}{j}{D} (x_i + x_j) \qquad \text{and} \qquad \mathfrak{P}^\fpf_z = \sum_{D \in \FP(z)} \prod_{(i,j) \in D}  (x_i + x_j),
\end{equation*}
so \cref{thm:inv-pipe-dream-formula} is equivalent to showing $\mathfrak{P}_y = 2^{\kappa(y)}\iS_y$ and $\mathfrak{P}^\fpf_z = \iSfpf_z$.


We now outline a proof of these identities, confining our discussion to the $\I_n$ case.
In~\cite{HMP3}, the authors gave an involution analogue of Lascoux and Sch\"utzenberger's Schubert polynomial transition equations \cite{LS-transitions}. These equations write $2^{-\delta_{ij}}(x_i{+}x_j)\iS_y$ as a linear combination of polynomials $\iS_{z}$ with coefficients $\pm 1$.
To prove our pipe dream formulas, we use an unpublished idea of Allen Knutson called \emph{cotransition} which exploits these equations.
%Here, the strategy is to describe the procedure of adding certain cells to pipedreams via transitions.
%In the end, each pipedream corresponds to a Laurent monomial $x_1^{n-1}x_2^{n-2} \dots x_{n-1}/m(x_1,\dots,x_{n-1})$ that is actually a monomial.
%In the involution case, the same outline can be carried out.
The key to the proof is the following pair of technical lemmas.

A permutation $w$ is \emph{dominant} if $D(w)$ is the Young diagram of a partition, justified so that its upper left corner is $(1,1)$.
In~\cite{HMP1}, the authors showed for $y \in \I_n$ dominant that $\iD(y)$ is the transpose of an upper-left-justified \emph{shifted} Young diagram, where the shifted Young diagram of a strict partition $\lambda_1 > \cdots > \lambda_\ell > 0$ is the set of cells $\{(i, j) : i \in [\ell], i \leq j \leq \lambda_i+i-1\}$.
If $y$ is dominant, then its only involution pipe dream is $\iD(y)$ itself.
\begin{lem}
\label{l:dominant}
Let $y, z\in \I_n$ with $y$ dominant and $\IP(y) = \{D\}$.
Then for $D' \in \IP(z)$ we have $D \subseteq D'$  if and only if $y \leq z$ in strong Bruhat order.
\end{lem}
In the permutation case, a similar result holds for Edelman-Greene insertion tableaux and extends easily to pipe dreams.
We can prove \cref{l:dominant} similarly using properties of the \emph{shifted Hecke insertion} of Patrias and Pylyavskyy \cite{shifted-hecke}.

%\begin{ex}
%Continuing Example~\ref{ex:code} with $z = 35142$, we see $y = 35124 < z$.
%Note $\IP(y) = \{\iDbot(y)\}$, where $\iDbot(y)$ is the transpose of the shifted diagram of $(2,1)$.
%By Lemma~\ref{l:dominant}, we see $\iDbot(y) \subseteq D$ for each $D \in \IP(z)$ and that \textbf{no larger} partition can fit inside such a $D$.
%\end{ex}

The second lemma shows that certain transition equations for involution Schubert polynomials have a natural interpretation in terms of involution pipe dreams. Let $\lambda^y$ be the maximal upper-left-justified transposed shifted Young diagram contained in $\iDbot(y)$.
\cref{l:dominant} implies that this maximal subdiagram is the same for every $D \in \IP(y)$.
\begin{lem}
\label{l:add_cell}
For $y \in \I_n$, let $(i,j) \in \ltriangeq_n$ be such that $\lambda^y \cup \{(i,j)\}$ is the transpose of a shifted Young diagram.
Then there is a set $\Phi \subset \I_n$ so that
\begin{equation}
\label{eq:recurrence}
2^{-\delta_{ij}}(x_i + x_j) \iS_y = \sum_{z \in \Phi} \iS_z \quad \mbox{and} \quad \left\{D \cup \{(i,j)\}:D \in \IP(y)\right\} = \bigcup_{z \in \Phi} \IP(z).
\end{equation}
\end{lem}
The existence of a set $\Phi$ satisfying the first equality in~\eqref{eq:recurrence} is a consequence of the transition equations for involution Schubert polynomials in \cite{HMP3}.
The main content of \cref{l:add_cell} is then in showing $\Phi$ satisfies the second equality as well. The set $\Phi$ consists of certain covers of $y$ in Bruhat order restricted to $\I_n$, so this equality relies on \cref{l:dominant}.
%To prove this, first observe that both sides of the second equality in \eqref{eq:recurrence} are closed under ladder and involution ladder moves and their inverses, so it suffices to show that $\{\iDbot(z) : z \in \Phi\}$ is the set of pipe 
%To prove this, we first show any $z \in \Phi$ must satisfy $\lambda^{z} = \lambda^y \cup \{(i,j)\}$.
%By combining Lemma~\ref{l:dominant} with properties of Bruhat order for involutions, we can then complete the proof.

\cref{l:add_cell} shows that $2^{\kappa(y)}\iS_y$ and $\mathfrak{P}_y$ satisfy the same recurrence (it is not hard to check that the powers of $2$ work out correctly). Every application of \cref{l:add_cell} replaces $y$ by some involutions $z$ such that $\ell(z) > \ell(y)$. We can always apply the recurrence unless $y = w_0$, which is dominant, so after repeated application each of the $z$'s is dominant.
In this case the equality of $\mathfrak{P}_y$ and $2^{\kappa(y)}\iS_y$ is easy to prove using a result from~\cite{HMP1} since $|\IP(y)| = 1$.
This completes the proof of \cref{thm:inv-pipe-dream-formula}.
 \begin{ex}
 Continuing \cref{ex:code} with $y = 35142$, we see $\lambda^y = (2,1)$.
 Applying \cref{l:add_cell} with $(i,j) = (3,1)$, we have $\Phi = \{53241,45312\}$. 
 Then
 \[
\IP(y) = 
\left\{
\raisebox{-8mm}{
\begin{tikzpicture}[scale=.5]
%python
%draw_inv_pipe_dream([(1,1),(2,1),(2,2),(4,1)], 5)
\filldraw (0.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,4.5) to (1,4.5) %%%inserted by pymacro
(0.5,4) to (0.5,5); %%%inserted by pymacro
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to (1,3.5) %%%inserted by pymacro
(0.5,3) to (0.5,4); %%%inserted by pymacro
\filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,3.5) to (2,3.5) %%%inserted by pymacro
(1.5,3) to (1.5,4); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
(0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
(1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
\filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to (1,1.5) %%%inserted by pymacro
(0.5,1) to (0.5,2); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}
,
\begin{tikzpicture}[scale=.5]
%python
%draw_inv_pipe_dream([(1,1),(2,1),(2,2),(3,2)], 5)
\filldraw (0.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,4.5) to (1,4.5) %%%inserted by pymacro
(0.5,4) to (0.5,5); %%%inserted by pymacro
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to (1,3.5) %%%inserted by pymacro
(0.5,3) to (0.5,4); %%%inserted by pymacro
\filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,3.5) to (2,3.5) %%%inserted by pymacro
(1.5,3) to (1.5,4); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
(0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to (2,2.5) %%%inserted by pymacro
(1.5,2) to (1.5,3); %%%inserted by pymacro
\filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
(0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}
}
\right\}
,
\ 
\IP(53241) = 
\left\{
\raisebox{-8mm}{
\begin{tikzpicture}[scale=.5]
%python
%draw_inv_pipe_dream([(1,1),(2,1),(2,2),(4,1),(3,1)], 5)
\filldraw (0.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,4.5) to (1,4.5) %%%inserted by pymacro
(0.5,4) to (0.5,5); %%%inserted by pymacro
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to (1,3.5) %%%inserted by pymacro
(0.5,3) to (0.5,4); %%%inserted by pymacro
\filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,3.5) to (2,3.5) %%%inserted by pymacro
(1.5,3) to (1.5,4); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to (1,2.5) %%%inserted by pymacro
(0.5,2) to (0.5,3); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
(1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
\filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to (1,1.5) %%%inserted by pymacro
(0.5,1) to (0.5,2); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}
}
\right\},
\ 
\IP(45312) = 
\left\{
\raisebox{-8mm}{
\begin{tikzpicture}[scale=.5]
%python
%draw_inv_pipe_dream([(1,1),(2,1),(2,2),(3,1),(3,2)], 5)
\filldraw (0.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,4.5) to (1,4.5) %%%inserted by pymacro
(0.5,4) to (0.5,5); %%%inserted by pymacro
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to (1,3.5) %%%inserted by pymacro
(0.5,3) to (0.5,4); %%%inserted by pymacro
\filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,3.5) to (2,3.5) %%%inserted by pymacro
(1.5,3) to (1.5,4); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to (1,2.5) %%%inserted by pymacro
(0.5,2) to (0.5,3); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to (2,2.5) %%%inserted by pymacro
(1.5,2) to (1.5,3); %%%inserted by pymacro
\filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
(0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}
}
\right\}
\]
so $53241$ and $45312$ are both dominant.
Therefore we can compute
 \begin{align*}
 \iS_y & = \frac{\iS_{53241} + \iS_{45312}}{x_1 + x_3} = \frac{4x_1x_2(x_1 + x_2)(x_1 + x_3)((x_1 + x_4) + (x_2 + x_3))}{x_1 + x_3} \\
 & = 4x_1x_2(x_1 + x_2)(x_1 + x_4) + 4x_1x_2(x_1 + x_2)(x_2 + x_3) = \sum_{D \in \IP(y)}\prod_{(i,j) \in D} \cwt{i}{j}{D} (x_i + x_j).
 \end{align*}
 \end{ex}


%The polynomials $2^{\kappa(y)} \iS_y$ and $\iSfpf_z$ represent classes of certain subvarieties in equivariant cohomology $H_T^*(M_n)$, where $M_n$ is the space of $n \times n$ matrices and $T$ is the group of invertible diagonal matrices. The nonnegative monomial expansions \eqref{eq:monomial-expansion-1} reflect this geometry, given that a diagonal matrix $x = \diag(x_1, \ldots, x_n) \in T$ acts on $M_n$ with weights $x_1, \ldots, x_n$. But $2^{\kappa(y)} \iS_y$ and $\iSfpf_z$ also represent classes in $H_T^*(SM_n)$ and $H_T^*(SSM_n)$, where $SM_n$ and $SSM_n$ are the spaces of symmetric and skew-symmetric $n \times n$ matrices, and $x \in T$ now acts by $x \cdot A = xAx$---see \S\ref{sec:inv-matrix-schubert}. Now $x \in T$ acts with weights $x_i+x_j$ for $i, j \in [n]$, which suggests the existence of natural positive expansions of $2^{\kappa(y)} \iS_y$ and $\iSfpf_z$ into monomials in the weights $x_i+x_j$. 

\section{Classes of involution matrix Schubert varieties} \label{sec:inv-matrix-schubert}

Let $M_n$ be the space of $n \times n$ complex matrices, $G = \GL(n,\CC) \subseteq M_n$, $B \subseteq G$ the Borel subgroup of upper-triangular matrices, and $T \subseteq B$ the torus of diagonal matrices. Write $A_{[i][j]}$ for the upper-left $i \times j$ corner of $A \in M_n$. The \emph{matrix Schubert variety} of $w \in S_n$ is 
\begin{equation*}
    \MX_w \eqdef \{A \in M_n : \text{$\rank A_{[i][j]} \leq \rank w_{[i][j]}$ for $i,j \in [n]$}\},
\end{equation*}
where we think of $w$ as a permutation matrix with $1$'s in positions $(i,w(i))$. The classical \emph{Schubert variety} $X_w$ is the image of $G \cap \MX_w$ under the quotient map $\pi_B : G \to B \backslash G$. 

Let $G \times G$ act on $A \in M_n$ by $(g_1, g_2) \cdot A = g_1 A g_2^{-1}$. The equivariant cohomology ring $H_{B \times T}^*(M_n)$ is isomorphic to $\ZZ[x_1, \ldots, x_n, x_1', \ldots, x_n']$, while $H_T^*(B\backslash G)$ is isomorphic to a quotient of this ring. The class $[X_w] \in H_T^*(B\backslash G)$ of a Schubert variety can be represented by the double Schubert polynomial $\fkS_w(x,x')$, and this is more or less equivalent to the fact that $[\MX_w] \in H_{B \times T}^*(M_n)$ equals $\fkS_w(x,x')$, as shown by Knutson and Miller \cite{knutson-miller}.




Let $K = \O(n)$ and $SM_n \subseteq M_n$ be the set of symmetric matrices. Fix $\Omega \in SM_n \cap \GL(n)$, i.e. fix a nondegenerate symmetric bilinear form on $\CC^n$. For $y \in \I_n$ define
\begin{equation*}
    \iX_y \eqdef \{Bg \in B\backslash G : \text{$\rank (g\Omega g^t)_{[i][j]} \leq \rank y_{[i][j]}$ for $i,j \in [n]$} \}.
\end{equation*}
The sets $\iX_y$ for $y \in \I_n$ are the closures of the $K$-orbits on $B\setminus G$ \cite{wyser-degeneracy-loci}, and Wyser and Yong \cite{wyser-yong-orthogonal-symplectic} showed that the class $[\iX_y] \in H_K^*(B\setminus G)$ is represented by $2^{\kappa(y)} \iS_y(x_1, \ldots, x_n)$, where $x_i = c_1^K(\ell_i^*)$ and $\ell_1, \ldots, \ell_n$ are the tautological quotient line bundles over $B\backslash G \simeq \Fl(n)$.

One possible matrix analogue of $\iX_y$ is
\begin{equation*}
\overline{\pi_B^{-1}(\iX_y)} = \{A \in M_n : \text{$\rank (A \Omega A^t)_{[i][j]} \leq \rank y_{[i][j]}$ for $i,j \in [n]$} \}.
\end{equation*}
The class of $\overline{\pi_B^{-1}(\iX_y)}$ in $H_{B \times K}^*(M_n)$ is indeed represented by $2^{\kappa(y)}\fkS_y$, and since a diagonal matrix $x = \diag(x_1, \ldots, x_n) \in T \subseteq B$ acts on $M_n$ with weights $x_1, \ldots, x_n$, this interpretation leads to positive expansions of $2^{\kappa(y)}\fkS_y$ into monomials in $x_1, \ldots, x_n$.

However, we are interested in a different matrix analogue, which arises from considering the $B$-action on $K\backslash G$ rather than the $K$-action on $B\backslash G$. Recall that the \emph{involution matrix Schubert variety} $\iMX_y$ is defined to be
\begin{equation*}
    \MX_y \cap SM_n = \{\Omega \in SM_n : \text{$\rank \Omega_{[i][j]} \leq \rank y_{[i][j]}$ for $i,j \in [n]$} \}
\end{equation*}

\begin{thm} \label{thm:iMX-class} The class $[\iMX_y] \in H_B^*(SM_n) \simeq H_T^*(SM_n)$ equals $2^{\kappa(y)} \iS_y$, for any $y \in \I_n$, where $g \in G$ acts on $\Omega \in SM_n$ by $g \cdot \Omega = g\Omega g^t$. \end{thm}
\begin{proof}[Proof sketch] 
The inclusion $K \backslash G \hookrightarrow SM_n$ induces a pullback $H_B^*(SM_n) \to H_B^*(K \backslash G)$. It is a general fact that there is an isomorphism $H_B^*(K \backslash G) \simeq H_K^*(B \backslash G)$, and one checks that under these maps, the image of $[\iMX_y]$ in $H_K^*(B \backslash G)$ is $[\iX_y]$. The fact that $2^{\kappa(y)} \iS_y$ represents $[\iX_y]$ then shows that $[\iMX_y]$ and $2^{\kappa(y)} \iS_y$ are equal modulo the kernel of this chain of maps, which is the ideal $I_n$ of positive-degree $S_n$-invariants in $\ZZ[x_1, \ldots, x_n]$.

To see that equality holds, we use a stability argument. Let $y \times 1 \eqdef y_1 \cdots y_n (n+1) \in S_{n+1}$. The map $p : SM_{n+1} \to SM_n$, $A \mapsto A_{[n][n]}$ induces a map $p^* : H_B^*(SM_n) \to H_B^*(SM_{n+1})$ which can be identified with $\ZZ[x_1, \ldots, x_n] \hookrightarrow \ZZ[x_1, \ldots, x_n, x_{n+1}]$, and it is not hard to show that $p^*([\iX_y]) = [p^{-1}(\iX_y)] = [\iX_{y\times 1}]$. Similarly, $\iS_y = \iS_{y \times 1}$ because Schubert polynomials satisfy $\fkS_{w \times 1} = \fkS_w$. Thus, $[\iX_y] = 2^{\kappa(y)}\iS_y$ mod $\bigcap_{m \geq n} I_m = 0$.
\end{proof}
The weights of $x = \diag(x_1, \ldots, x_n)$ acting on $SM_n$ are $x_i+x_j$ for $i, j \in [n]$, so \cref{thm:iMX-class} leads to positive expansions of $2^{\kappa(y)} \fkS_y$ into monomials in variables $x_i+x_j$, as per \cref{thm:inv-pipe-dream-formula}. The results described here hold equally well for the fpf involution matrix Schubert varieties $\iMXfpf_z = \MX_z \cap SSM_n$, now taking $K = \Sp(n)$. In particular, the class $[\iMXfpf_z] \in H_T^*(SSM_n)$ equals $\iSfpf_z$.

\section{Ideals of involution matrix Schubert varieties} \label{sec:ideals}

Let $X$ be the matrix of indeterminates $[x_{ij}]_{i,j \in [n]}$. For $w \in S_n$, let $I_w \subseteq \CC[x_{ij} : i,j \in [n]]$ be the ideal generated by all $(\rank w_{[i][j]}+1) \times (\rank w_{[i][j]}+1)$ minors of $X_{[i][j]}$ for $i,j \in [n]$.  The vanishing locus of $I_w$ in $M_n$ is exactly $\MX_w$.

Let $\init(I_w)$ be the \emph{initial ideal} of leading terms in $I_w$ with respect to any term order on $\CC[x_{ij}]$ with the property that the leading term of $\det(A)$ for any submatrix $A$ of $X$ is the product of the antidiagonal entries of $A$. One can show that such term orders exist.
\begin{thm}[\cite{knutson-miller}]
For $w \in S_n$, the ideal $I_w$ is prime, there is a prime decomposition
\begin{equation*}
    \init(I_w) = \bigcap_{D \in \RP(w)} (x_{ij} : (i,j) \in D),
\end{equation*} and this implies $\fkS_w(x, x') = \sum_{D \in \RP(w)} \prod_{(i,j) \in D} (x_i - x'_j)$.
\end{thm}

Now let $\hat X$ be the symmetric matrix $[x_{\max(i,j), \min(i,j)}]_{i,j \in [n]}$, and $\hat I_y \subseteq \CC[x_{ij} : 1 \leq j < i \leq n] = \CC[SM_n]$ the ideal generated by all $(\rank y_{[i][j]}+1) \times (\rank y_{[i][j]}+1)$ minors of $\hat X_{[i][j]}$ for $i,j \in [n]$. The vanishing locus of $\hat I_y$ is the involution matrix Schubert variety $\iMX_y$.

\begin{conj} \label{conj:ideals} For $y \in \I_n$, the ideal $\hat I_y$ is prime, and there is a primary decomposition of $\init(\hat I_y)$ whose top-dimensional components are $\left(x_{ij}^{\cwt{i}{j}{D}} : (i,j) \in D\right)$ for $D \in \IP(y)$. \end{conj} 
\cref{conj:ideals} would give a direct geometric proof of \cref{thm:inv-pipe-dream-formula}.

\begin{ex}
Let $y = 1243 = (3,4)$.  Then $A \in \iMX_y$ if and only if $\rank A_{[i][j]}$ is at most the $(i,j)$ entry in the table
\begin{equation*}
\begin{array}{cccc}
1 & 1 & 1 & 1\\
1 & 2 & 2 & 2\\
1 & 2 & 3 & 3\\
1 & 2 & 3 & 4
\end{array}.
\end{equation*} 
All of these rank conditions are implied by the single condition $\rank A_{[3][3]} \leq 2$, and consequently $\hat I_y$ is generated by the $3 \times 3$ minors of
\begin{equation*}
\hat X_{[3][3]} = \begin{bmatrix} x_{11} & x_{21} & x_{31} \\ x_{21} & x_{22} & x_{32} \\ x_{31} & x_{32} & x_{33} \end{bmatrix},
\end{equation*}
i.e., $\hat I_y =  (\det \hat X_{[3][3]})$. The two ideals in the decomposition $\init(\hat I_y) = (x_{31}x_{22}^2) = (x_{31}) \cap (x_{22}^2)$ correspond to the two involution pipe dreams of $(3,4)$:
\begin{center}
\begin{tikzpicture}[scale=0.5]
%python
%draw_inv_pipe_dream([(3,1)], 4)
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
(0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
(0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to[bend right] (1.5,3) %%%inserted by pymacro
(1.5,2) to[bend left] (2,2.5); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to (1,1.5) %%%inserted by pymacro
(0.5,1) to (0.5,2); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture} \qquad \qquad 
\begin{tikzpicture}[scale=0.5]
%python
%draw_inv_pipe_dream([(2,2)], 4)
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to[bend right] (0.5,4) %%%inserted by pymacro
(0.5,3) to[bend left] (1,3.5); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to[bend right] (0.5,3) %%%inserted by pymacro
(0.5,2) to[bend left] (1,2.5); %%%inserted by pymacro
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to (2,2.5) %%%inserted by pymacro
(1.5,2) to (1.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
(0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}
\end{center}
\end{ex}

\begin{ex}
Let $y = 14523 = (2,4)(3,5)$. One computes that
\begin{equation*}
\init(\hat I_y) = (x_{21}^2, x_{31} x_{21}, x_{22}x_{31}, x_{31}^2, x_{32}x_{31}, x_{32}^2) = (x_{21}^2, x_{31}, x_{32}^2) \cap (x_{21}, x_{22}, x_{31}^2, x_{32}).
\end{equation*}
There is a single involution pipe dream for $y$:
\begin{center}
\begin{tikzpicture}[scale=0.5]
%python
%draw_inv_pipe_dream([(2,1),(3,1),(3,2)], 5)
\filldraw (0.5, 4.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,4.5) to[bend right] (0.5,5) %%%inserted by pymacro
(0.5,4) to[bend left] (1,4.5); %%%inserted by pymacro
\filldraw (0.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,3.5) to (1,3.5) %%%inserted by pymacro
(0.5,3) to (0.5,4); %%%inserted by pymacro
\filldraw (1.5, 3.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,3.5) to[bend right] (1.5,4) %%%inserted by pymacro
(1.5,3) to[bend left] (2,3.5); %%%inserted by pymacro
\filldraw (0.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,2.5) to (1,2.5) %%%inserted by pymacro
(0.5,2) to (0.5,3); %%%inserted by pymacro 
\filldraw (1.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,2.5) to (2,2.5) %%%inserted by pymacro
(1.5,2) to (1.5,3); %%%inserted by pymacro
\filldraw (2.5, 2.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(2,2.5) to[bend right] (2.5,3); %%%inserted by pymacro
\filldraw (0.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,1.5) to[bend right] (0.5,2) %%%inserted by pymacro
(0.5,1) to[bend left] (1,1.5); %%%inserted by pymacro
\filldraw (1.5, 1.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(1,1.5) to[bend right] (1.5,2); %%%inserted by pymacro
\filldraw (0.5, 0.5) circle[radius=.6mm]; %%%inserted by pymacro
\draw %%%inserted by pymacro
(0,0.5) to[bend right] (0.5,1); %%%inserted by pymacro
%%%
\end{tikzpicture}
\end{center}
It corresponds to the codimension $3$ component $(x_{21}^2, x_{31}, x_{32}^2)$ of $\init(\hat I_y)$, while the codimension $4$ component $(x_{21}, x_{22}, x_{31}^2, x_{32})$ does not correspond to a pipe dream of $y$.
\end{ex}


\section{Acknowledgments} We thank Allen Knutson for explaining the proof outline in \cref{sec:inv-schubert} to us in the permutation case.
 

%% if you use biblatex then this generates the bibliography
%% if you use some other method then remove this and do it your own way
\printbibliography



\end{document}
