\documentclass[finalversion]{FPSAC2025}
\articlenumber{107}

\newtheorem{thm}{Theorem}[section]
\newtheorem{prop}[thm]{Proposition}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\newtheorem{ex}[thm]{Example}
\newtheorem{rem}[thm]{Remark}
\usepackage{tikz}
\usetikzlibrary{calc}
%\usepackage{cleveref}
\usepackage{ytableau}

\DeclareMathOperator{\GL}{GL}
\DeclareMathOperator{\cc}{\mathbb{C}}
\DeclareMathOperator{\zz}{\mathbb{Z}}
\DeclareMathOperator{\sh}{sh}
\DeclareMathOperator{\id}{id}
\DeclareMathOperator{\ssrt}{SSRT}
\DeclareMathOperator{\wt}{wt}
\DeclareMathOperator{\svrt}{SVRT}

\title{Rhombic Tableaux for Partial Flag Varieties}

\author[I. Axelrod-Freed, J. Gao, and S. Zhang]{\texorpdfstring{Ilani Axelrod-Freed\thanks{\href{mailto:ilani_af@mit.edu}{ilani\_af@mit.edu}}\addressmark{1}, Jiyang Gao\thanks{\href{mailto:jgao@math.harvard.edu}{jgao@math.harvard.edu}}\addressmark{2}, \and Sylvester W. Zhang\thanks{\href{mailto:swzhang@umn.edu}{swzhang@umn.edu}.}\addressmark{3}}{I. Axelrod-Freed, J. Gao, and S. Zhang}}

\address{\addressmark{1} Department of Mathematics, Massachusetts Institute of Tehcnology, MA, USA \\ \addressmark{2}Department of Mathematics, Harvard University, MA, USA \\ \addressmark{3}School of Mathematics, University of Minnesota, MN, USA}

\received{\today}

\abstract{We introduce semi-standard rhombic tableaux as a new combinatorial model for Schubert polynomials corresponding to cohomology classes of a partial flag variety. Based on Elnitsky's rhombic tilings, our model generalizes semi-standard Young tableaux in the case of Grassmannian. Our construction naturally extends to infinite flag varieties (Stanley symmetric functions) and to $K$-theory using set-valued tableaux. We also discuss a generalization of Bender--Knuth involution.}



\keywords{Schubert polynomials, partial flag varieties, rhombic tableaux}

\usepackage[backend=bibtex, giveninits]{biblatex}
\addbibresource{main.bib}
\appto\bibfont{\setlength{\emergencystretch}{1.4em}}



\begin{document}

\maketitle

\section{Introduction}

Let $G=\GL_n(\cc)$ be the complex general linear group and $B\subset G$ the Borel subgroup consisting of upper triangular matrices. The \emph{full flag variety} $G/B=\{V_1\subset V_2\subset\cdots \subset V_n = \cc^n:\dim(V_i)=i\}$ has finitely many $B$-orbits, which are parametrized by elements of the Weyl group $S_n$. For $w\in S_n$, the Schubert variety $X_w$ is defined to be the closure of the $B$-orbits corresponding to $w$.

The cohomology ring of the flag variety $H^*_\mathbb{Z}(G/B)$ has basis given by cohomology classes of the Schubert varieties $[X_w]$ for $w\in S_n$. Borel presented $H^*_\mathbb{Z}(G/B)$ as the quotient of the polynomial ring $R_n:=\mathbb{Z}[x_1,\cdots,x_n]/I$ where $I=\langle e_1,\cdots,e_n\rangle$ is the ideal generated by elementary symmetric functions. The structure of $H^*_\mathbb{Z}(G/B)$ was further revealed by Bernstein--Gelfand--Gelfand \cite{bernstein1973} and Demazure \cite{demazure1974} using divided difference operators. Based on the divided difference operators, Lascoux and Sch\"utzenberger \cite{alain1982polynomes} identified polynomial representatives called \emph{Schubert polynomials} in the cosets of the quotient ring $R_n$, which can be defined and studied purely algebraically and combinatorially. 

Motivated by Hilbert's 15th problem, modern Schubert calculus focuses on the multiplicative structure of $H^*_{\zz}(G/B)$, where the major open problems is to combinatorially characterize the multiplicative structure constant $c_{u,v}^w$ of $H^*_{\zz}(G/B)$, where $c_{u,v}^w$ is the number such that
\[[X_w]\cdot [X_u] = \sum_{v} c_{u,v}^w [X_v].\]
Via works of Lascoux and Sch\"utzenberger, this problem is equivalent to finding structure constants for multiplying Schubert polynomials. As means to better understand these polynomials, many combinatorial models are given, including pipe-dreams \cite{bergeron1993rc,fomin1996yang} and bumpless pipe-dreams \cite{lam2021back}, which allow combinatorial analysis of these polynomials. 

One might also consider the cohomology ring of partial flag varieties when $G/B$ is replaced with $G/P$ for a parabolic subgroup $P$. In the special case of the Grassmannian (when $P$ is maximal parabolic), the Schubert structure constants are well studied and well understood, namely the Littlewood--Richardson rule and its many variants \cite{littlewood1934group,stembridge2002concise,knutson2003puzzles}. A key to success in this case is that the Grassmannian Schubert polynomials are actually Schur polynomials, an important class of symmetric polynomials which admits a combinatorial model using \emph{semi-standard Young tableaux} (SSYT). 

In this paper, we give a tableau-like model for Schubert polynomials corresponding to any choice of partial flag variety, called \emph{semi-standard rhombic tableaux}, which generalizes the SSYT model for Schur polynomials. Our model has the flexibility to work within a particular partial flag variety (including the full flag variety). We also give a generalization of the Bender--Knuth involution to rhombic tableaux, and defer other generalizations of tableau-operations to the final version of this paper. We also extend our model to the $K$-theory of partial flag varieties, generalizing the semi-standard set-valued tableaux of Buch \cite{buch2002littlewood}.

The structure of this paper is as follows. In \Cref{sec:background} we review backgrounds of Schur and Schubert polynomials. In \Cref{sec:rhombic} we define rhombic tableaux and state our main theorem therein. In \Cref{sec:bk}, we describe a generalized Bender--Knuth involution on rhombic tableaux. To close this manuscript, in \Cref{sec:ktheory}, we define set-valued rhombic tableaux for the $K$-theory of flag varieties.

\section{Background on Schur and Schubert polynomials}\label{sec:background}

Let $\partial_i:\zz[x_1,x_2,\cdots]\to \zz[x_1,x_2,\cdots]$ be the divided difference operators defined by
\[\partial_i(f) = \frac{f-s_i(f)}{x_i - x_{i+1}}\]
where $s_if$ is the polynomial obtained from $f$ by swapping $x_i\leftrightarrow x_{i+1}$. Schubert polynomials are the only family of polynomials `compatible' with these operators, and can be defined recursively
\begin{align*}
\mathfrak{S}_{w_0} &= x_1^{n-1}x_2^{n-2}\cdots x_{n-1}\\	
\partial_i\mathfrak{S}_{w} & =  \begin{cases}
	\mathfrak{S}_{w s_i}&\text{if }w s_i<w\\
	0&\text{otherwise}
\end{cases}\end{align*}
where $w_0\in S_n$ is the longest word $w_0=[n,n-1,\cdots,2,1]$.


In case of the Grassmannian $\text{Gr}_k(\cc^n) = \{V\subset \cc^n:\dim(V)=k\}$, its Schubert cells are indexed by $k$-\emph{Grassmannian permutations}, which are permutations with at most one descent at position $k$. Let $\lambda(w)$ denote the bijection between Grassmannian permutations and partitions. The Schubert polynomials of a $k$-Grassmannian permutation are certain Schur polynomials in the first $k$ variables, i.e. $\mathfrak{S}_w(x_1,\cdots,x_{n-1}) = s_{\lambda(w)}(x_1,\cdots,x_k)$.

Schur functions are generating functions of \emph{semi-standard Young tableaux}, defined as follows. A SSYT of shape $\lambda$ is a filling of the Young diagram of $\lambda$ with numbers such that every row is weakly increasing and every column is strictly increasing. Denote $\text{SSYT}(\lambda)$ the set of all such tableau and $\text{SSYT}^{(k)}(\lambda)$ the set of SSYT's with maximal entry $k$. For $T\in\text{SSYT}(\lambda)$, define ${\wt(T)}:=\prod_i x_i^{\text{number of }i\text{ in }T}$. For example, the following is a SSYT with ${\wt(T)}=x_1^3x_2^2x_3^2$.
\[
\begin{ytableau}
3& 3&2\\
2& 1&1\\
1
\end{ytableau}
\]
Then the Schur polynomials are defined as follows
\[s_{\lambda}(x_1,x_2,\cdots, x_k)=\sum_{T\in\text{SSYT}^{(k)}(\lambda)}{\wt(T)}\]
And the Schur symmetric functions are defined as

\[s_{\lambda}(x_1,x_2,\cdots)=\sum_{T\in\text{SSYT}(\lambda)}{\wt(T)}\]

\begin{rem}
    We note that the SSYT's in our paper are actually \emph{reverse} tableaux. Since we will use reverse labeling throughout this paper, we will simply drop the adjective reverse.
\end{rem}
 
\section{Rhombic Tableaux}\label{sec:rhombic}
Let $P$ be a parabolic subgroup of $B$. There exist an indexing set $I_P=\{k_1,\cdots,k_l\}\subset [n-1]$ such that the partial flag variety is given by $G/P=G(I_P;n)=\{V_1\subset \cdots \subset V_l:\dim V_i = k_i\}$. The Schubert cells in $G/P$ are indexed by permutations in the corresponding parabolic subgroup $W^P$ of $S_n$, which consists of permutations of given descent structure $W^P=\{w\in S_n: w(i) > w(i+1) \text{ only if } i\in I_P\}$. For the rest of this section, we fix some $P$ and abbreviate $I=I_P=\{k_1,\cdots,k_l\}$.

We first define \emph{$I$-Elnitsky path} which are in bijection with elements in $W^P$.

\begin{defn}

    Given $I=\{k_1,\cdots,k_l\}\subset [n-1]$, we define $d_i = k_{i}-k_{i-1}$ (setting $k_0:=0$ and $k_{l+1}:=n$) and let $\tilde I=(d_1,\cdots,d_{l+1})$. An $I$-Elnitsky path is a sequence of $n+1$ points in $\mathbb{R}^2$ connected by $n$ steps satisfying the following properties:
    \begin{enumerate}
        \item Starting at $(0,0)$.
        \item Each step moves in the direction of $\frac{(i-1)\pi}{ l+1}$ for some $i\in [l+1]$ by one unit.
        \item For each $i$, there are $d_i$ steps in the direction of $\frac{(i-1)\pi}{ l+1}$.
    \end{enumerate}
    Let $D_I$ denote the collection of $I$-Elnitsky paths. To simplify our notation, we shall denote $\alpha_i=\frac{(i-1)\pi}{l+1}$, and write an $I$-Elnitsky path as $p=(p_1,\cdots,p_n)$ if its $i$-th step is in direction $\alpha_{p_i}$.
\end{defn}

\begin{ex}\label{ex:ex_1}
    Let $l=4$, the following diagram illustrates the possible moves in an Elnitsky path.
 
\[\begin{tikzpicture}
% Define the length of the vectors
\def\vectorlength{3.5}

% Draw vectors at specified angles
\foreach \angle/\radian in {0/{0}, 36/{\frac{\pi}{5}}, 72/{\frac{2\pi}{5}}, 108/{\frac{3\pi}{5}}, 144/{\frac{4\pi}{5}}} {
    \draw[->, thick] (0, 0) -- ({\vectorlength*cos(\angle)}, {\vectorlength*sin(\angle)});
    \node at ({1.1*\vectorlength*cos(\angle)}, {1.1*\vectorlength*sin(\angle)}) {$\radian$};
}

% Add a dotted line at 180 degrees
\draw[dotted, thick] (0, 0) -- ({\vectorlength*cos(180)}, {\vectorlength*sin(180)});
\node at ({1.1*\vectorlength*cos(180)}, {1.1*\vectorlength*sin(180)}) {$\pi$};

\end{tikzpicture}\]
The following are several examples of $I$-Elnitsky paths, with $\tilde I=(3,2,3,1,2)$.

\[
\begin{tikzpicture}
% Define directions (angles in degrees)
\pgfmathsetmacro{\step}{1} % Step length
% Starting point
\coordinate (current) at (0,0);
% Add the origin dot
\draw[fill] (0,0) circle (0.05);
%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {1,1,1,2,2,3,3,3,4,5,5} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*36} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    \draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\end{tikzpicture}
\begin{tikzpicture}
% Define directions (angles in degrees)
\pgfmathsetmacro{\step}{1} % Step length
% Starting point
\coordinate (current) at (0,0);
% Add the origin dot
\draw[fill] (0,0) circle (0.05);
%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {3, 1, 5, 4, 2, 3, 1, 5, 3, 2, 1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*36} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    \draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\end{tikzpicture}
\begin{tikzpicture}
% Define directions (angles in degrees)
\pgfmathsetmacro{\step}{1} % Step length
% Starting point
\coordinate (current) at (0,0);
% Add the origin dot
\draw[fill] (0,0) circle (0.05);
%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {5,3, 4, 2, 1, 2, 3, 1, 1,5, 3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*36} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    \draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\end{tikzpicture}
\]
\end{ex}

It is important to note that every $I$-Elnitsky path ends at the same point.
We will now define a bijection between $I$-Elnitsky path and $W^P$. 





\begin{prop}[\cite{elnitsky1997rhombic}]
    For $p=(p_1,\cdots,p_n)\in D_I$, let $\Phi(p)=w$ be the permutation such that $w^{-1}(i)=p_{i}+\#\{j< i:p_j=p_i\}$. Meanwhile, the inverse map is given as follows: $\Phi^{-1}(w)=p$ is the sequence such that $p_i=j$ if $k_{j-1}<w^{-1}(i)\leq k_{j}$. Then $\Phi$ is a bijection between $D_I$ and $W^P$.
\end{prop}
\begin{ex}
   Let $I=(3,6;8),\tilde I=(3,3,2)$ and $p=(1,2,1,3,3,2,1,2)$ be an $I$-Elnitsky path. Then $\Phi(p)^{-1}=[1,4,2,7,8,5,3,6]$, and $\Phi(p)=[1, 3, 7, 2, 6, 8, 4, 5]$ is a permutation whose descents only occur at positions $3,6$. 
\end{ex}
To each $w\in W^P$, we associate a possibly degenerate polygon of $2n$ sides.
\begin{defn}
    For $w\in W^P$, we define the \emph{Elnitsky polygon} of $w$ to be the $2n$-gon bounded by $\Phi(\id) $ and $\Phi(w)$, denoted $\sh(w)$, also called the its \emph{shape} of $w$.
\end{defn}
The $2n$-gon $\sh(w)$ is possibly degenerate but must contain at most one non-empty bounded region. In the case of Grassmannian ($l=1$), the shape of a permutation in $W^P$ is the same as the corresponding Young diagram.

\begin{ex}
    Continuing Example 2, the following is the Elnitsky polygon of $w=13726845$.

    \[\begin{tikzpicture}
% Define directions (angles in degrees)
\pgfmathsetmacro{\step}{1.2} % Step length
% Starting point
\coordinate (current) at (0,0);
% Add the origin dot
\draw[fill] (0,0) circle (0.05);
%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {1,1,1,2,2,2,3,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    \draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);
\foreach \stepdir in {1,2,1,3,3,2,1,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    \draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}

\end{tikzpicture}\]
    
\end{ex}

\begin{defn}For $w\in W^P$, we define a \emph{rhombic tiling} of $\sh(w)$ to be a tiling using $\binom{l+1}{2}$ different rhombus tiles, where the sides of a rhombus tile are unit length line segment of two different slopes in $\{\alpha_i:i\in[l+1]\}$. Note that we do not allow rotation of rhombi in a rhombic tiling. We say a rhombus is of type $(i,j)$ if it uses slopes $\alpha_i,\alpha_j$ with $i< j$. Further, every edge in a rhombic tiling is directed in the positive direction (see \Cref{ex:ex_1}).
\end{defn}
\begin{thm}[\cite{elnitsky1997rhombic}]
For $w\in W^P$, there exists a rhombic tiling of $\sh(w)$. Further, each rhombic tiling of $\sh(w)$ uses exactly $\ell(w)$ many tiles.
\end{thm}


\begin{defn}\label{def:weak-strong}
Given a rhombic tiling, each edge is defined to be \emph{weak} or \emph{strict} as follows. Take an edge $e$ in the rhombic tiling, and denote its slope by $\theta_e$. Now if we orient it upward according to its direction, then there is a rhombus connected to $e$ from the left, suppose it uses slopes $\theta_e,\theta_L$. Similarly there is a rhombus connected to $e$ from the right, and suppose it uses slopes $\theta_e,\theta_R$. Then the $e$ is said to be a \emph{weak edge} if $\theta_e<\min\{\theta_L,\theta_R\}$, and \emph{strick} otherwise. See \Cref{fig:tiling_eg} for an illustration.
\end{defn}

\begin{figure}[ht]
    \centering
   \begin{tikzpicture}
% Define directions (angles in degrees)
\pgfmathsetmacro{\step}{1.2} % Step length
% Starting point
\coordinate (current) at (0,0);
% Add the origin dot
\draw[fill] (0,0) circle (0.05);
%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {1,1,2,2,2,3,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    \draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);
\foreach \stepdir in {2,3,1,3,2,1,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    \draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}

\coordinate (current) at (0,0);

\foreach \stepdir in {1,2,1,3,2,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    %\draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);

\foreach \stepdir in {2,1,3,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    %\draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);

\foreach \stepdir in {1,1,2,2,3,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    %\draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}

\coordinate (current) at (0,0);

\foreach \stepdir in {2,3,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    %\draw[thick,color=red] (current) -- (next);
    
    % Add a bullet dot at the new position
    %\draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}
\foreach \stepdir in {2,3} {
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    \coordinate (current) at (next);
}

\coordinate (current) at (0,0);

\foreach \stepdir in {2,3,1,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);

    \coordinate (current) at (next);
}
\foreach \stepdir in {1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Add a bullet dot at the new position
    %\draw[fill] (next) circle (0.05);
    
    % Update current point
    \coordinate (current) at (next);
}

%coloring weakness
\coordinate (current) at (0,0);

\foreach \stepdir in {2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \coordinate (current) at (next);
}

\foreach \stepdir in {1,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \draw[ultra thick,color = red] (current) -- (next);
    \coordinate (current) at (next);
     
}

\coordinate (current) at (0,0);

\foreach \stepdir in {2,3,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \coordinate (current) at (next);
}
\foreach \stepdir in {1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \draw[ultra thick,color = red] (current) -- (next);
    \coordinate (current) at (next);
     
}
\coordinate (current) at (0,0);

\foreach \stepdir in {2,3,1,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \coordinate (current) at (next);
}
\foreach \stepdir in {1,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \draw[ultra thick,color = red] (current) -- (next);
    \coordinate (current) at (next);
     
}


\end{tikzpicture}
    \caption{Example of a rhombic tiling of an Elnitsky polygon. The weak edges are colored red, and the rest of the edges are strict.}
    \label{fig:tiling_eg}
\end{figure}


We are now ready to introduce the main object of this paper.

\begin{defn}
 For each pair of connected rhombi in a rhombic tiling, denote the connecting edge $e$. And similar to \Cref{def:weak-strong}, we orient $e$ upward and denote $e^L$ the rhombus to its left and $e^R$ the rhombus to its right. A \emph{semi-standard rhombic tableaux} $T$ is filling of the rhombi in a rhombic tiling using numbers such that for every edge $e$, $T(e^L)<T(e^R)$ if $e$ is strict and $T(e^L)\leq T(e^R)$ if $e$ is weak. 

Denote $\ssrt(w)$ the set of all semi-standard rhombic tableaux on $\sh(w)$. We say a semi-standard rhombic tableaux has \emph{restricted entries} if a rhombus of type $(i,j)$ can take value in $[k_{j}]$, denote the set of such tableaux as $\ssrt^{I}(w)$.
\end{defn}

\begin{figure}[ht]
\centering
\begin{tikzpicture}[scale = 1, rotate = 60]
    % Set the step size (adjust as needed)
    \def\step{1.1}
    
    % Start point
    \coordinate (start) at (0,0);

    % Draw the first path
    \path (start) coordinate (p0);
    \draw[black] (p0) -- ++(60:\step) coordinate (p1)  % Up
                          -- ++(-60:\step) coordinate (p2) % Down
                          -- ++(0:\step) coordinate (p3)   % Right
                          -- ++(60:\step) coordinate (p4)  % Up
                          -- ++(-60:\step) coordinate (p5) % Down
                          -- ++(60:\step) coordinate (p6)  % Up
                          -- ++(-60:\step) coordinate (p7) % Down
                          -- ++(0:\step) coordinate (p8);  % Right

    % Draw the second path
    \draw[black] (start) -- ++(-60:\step) coordinate (q1) % Down
                          -- ++(60:\step) coordinate (q2)  % Up
                          -- ++(-60:\step) coordinate (q3) % Down
                          -- ++(0:\step) coordinate (q4)   % Right
                          -- ++(60:\step) coordinate (q5)  % Up
                          -- ++(-60:\step) coordinate (q6) % Down
                          -- ++(60:\step) coordinate (q7)  % Up
                          -- ++(0:\step) coordinate (q8);  % Right

    % Draw the third path
    \draw[black] (start) -- ++(-60:\step) coordinate (r1) % Down
                          -- ++(-60:\step) coordinate (r2) % Down
                          -- ++(60:\step) coordinate (r3)  % Up
                          -- ++(0:\step) coordinate (r4)   % Right
                          -- ++(-60:\step) coordinate (r5) % Down
                          -- ++(60:\step) coordinate (r6)  % Up
                          -- ++(60:\step) coordinate (r7)  % Up
                          -- ++(0:\step) coordinate (r8);  % Right

    % Draw the fourth path (DDDDURUUR)
    \draw[black] (start) -- ++(-60:\step) coordinate (s1) % Down
                          -- ++(-60:\step) coordinate (s2) % Down
                          -- ++(-60:\step) coordinate (s3) % Down
                          -- ++(60:\step) coordinate (s4)  % Up
                          -- ++(0:\step) coordinate (s5)   % Right
                          -- ++(60:\step) coordinate (s6)  % Up
                          -- ++(60:\step) coordinate (s7)  % Up
                          -- ++(0:\step) coordinate (s8);  % Right

    % Draw the fifth path (DDDRRUUU)
    \draw[black] (start) -- ++(-60:\step) coordinate (t1) % Down
                          -- ++(-60:\step) coordinate (t2) % Down
                          -- ++(-60:\step) coordinate (t3) % Down
                          -- ++(0:\step) coordinate (t4)   % Right
                          -- ++(0:\step) coordinate (t5)   % Right
                          -- ++(60:\step) coordinate (t6)  % Up
                          -- ++(60:\step) coordinate (t7)  % Up
                          -- ++(60:\step) coordinate (t8); % Up

    % Draw edges between the first and second paths to form lozenges
    \draw[black] (p0) -- (q1);
    \draw[black] (p1) -- (q2);
    \draw[black] (p2) -- (q3);
    \draw[black] (p3) -- (q4);
    \draw[black] (p4) -- (q5);
    \draw[black] (p5) -- (q6);
    \draw[black] (p6) -- (q7);
    \draw[black] (p7) -- (q8);

    % Place "1" in the center of the specified lozenges for paths 1 and 2
    \node at ($ (p1)!0.5!(q1) $) {1}; % Between p1 and q1
    \node at ($ (p3)!0.5!(q3) $) {1}; % Between p3 and q3
    \node at ($ (p4)!0.5!(q4) $) {1}; % Between p4 and q4
    \node at ($ (p6)!0.5!(q6) $) {1}; % Between p6 and q6

    % Place "2" in the center of the specified lozenges for paths 2 and 3
    \node at ($ (q2)!0.5!(r2) $) {2}; % Between q2 and r2
    \node at ($ (q5)!0.5!(r5) $) {2}; % Between q5 and r5

    % Draw the single edge between the third and fourth paths
    \draw[black] (r3) -- (s4);

    % Place "3" in the center of the specified lozenges for paths 3 and 4
    \node at ($ (r3)!0.5!(s3) $) {3}; % Between r3 and s3
    \node at ($ (r4)!0.5!(s4) $) {3}; % Between r4 and s4

    % Draw edges between the fourth and fifth paths as specified
    \draw[black] (s5) -- (t4);
    \draw[black] (s5) -- (t6);
    \draw[black] (s6) -- (t7);
    \draw[black] (s7) -- (t8);

    % Place "4" in the center of the specified lozenges for paths 4 and 5
    \node at ($ (s4)!0.5!(t4) $) {4}; % Between s4 and t4
    \node at ($ (s7)!0.5!(t7) $) {4}; % Between s7 and t7

    % Place "5" in the center of the specified lozenges for paths 4 and 5
    \node at ($ (s5)!0.5!(t5) $) {5}; % Between s5 and t5
    \node at ($ (s6)!0.5!(t6) $) {5}; % Between s6 and t6

\end{tikzpicture}
\caption{A rhombic tableau with weight $x_1^4x_2^2x_3x_4^2x_5^2$ for $I=(3,5)$ and $\tilde I=(3,2,3)$}
\label{fig:lozenge}
\end{figure}

Similar to the case of Young tableaux, we define the weight of an SSRT to be $\wt(T)=\prod_{i}x_i^{\text{number of }i\text{ in T}}$. Then our main result is the following
\begin{thm}
    Let $I=\{k_1,\cdots,k_l\}$ and for any $w\in W^P$. We have that
    \[\mathfrak{S}_w(x_1,\cdots,x_{k_l})= \sum_{T \in \ssrt^{I}(w)} \wt(T)\]
    and 
    \[F_w(x_1,x_2,\cdots) = \sum_{T \in \ssrt(w)} \wt(T)\]
    where $\mathfrak{S}_w$ is the Schubert polynomial associated to $w$ and ${F}_w$ is the Stanley symmetric function of $w$.
\end{thm}

\begin{proof}
	We will sketch the proof via a bijection with reduced compatible sequences. For a definition of Schubert polynomials using compatible sequences, see \cite{bergeron1993rc}. A semi-standard rhombic tableaux $T\in\ssrt^{(k_l)}(w)$ can be interpreted as a sequence of Elnitsky polygons as follows. Let $P_i$ be the sub-polygon of $\sh(w)$ formed by including the rhombi in $T$ numbered by $i,\cdots,k_l$. It turns out that each of $P_i$ must also be an Elnitsky polygon of some permutation, thus we set $P_i=\sh(w^i)$. Then $w=w^1 \supset w^2\supset \cdots\supset w^{k_l}$ is corresponding reduced compatible sequence. Proof of the bijectivity will be omitted.
	
	Further, to show that removing the constraint of maximal entry gives Stanley symmetric function, one can simply notice that embedding $w\in S_n$ into the larger symmetric group $S_{n+1}$ will add a degenerate edge to the Elnitsky polygon while leaving the possible rhombus tilings unchanged, and allow one more number to put in the tableaux, which precisely corresponds to the stabilization definition of Stanley symmetric functions.
\end{proof}


\section{Bender--Knuth Involution}\label{sec:bk}
In \cite{bender1972enumeration}, Bender and Knuth introduced a family of involutive operations on semistandard Young tableaux, now called Bender--Knuth involutions. They generalize the \emph{jeu de taquin} operations on SSYTs, which lead to the important Littlewood--Richardson rule. In this section we present a generalization of Bender--Knuth involution on rhombic tableaux. For the classical version of Bender--Knuth involution on SSYTs, we refer the readers to \cite{macdonald1998symmetric}.

We will define an action $\tau_i$ on $\ssrt(w)$ which possibly changes the rhombi labeled by $i$ and $i+1$, and leave the rest of the rhombi unchanged. We shall first make some definitions.


	
	\begin{enumerate} [noitemsep]
\item Two rhombi are said to be \emph{linked} if they are connected by a strict edge. Note that a linked component can be either a hexagon of three rhombi or a component of two rhombi. The rhombi that are not linked are called {singled}.
\item Two linked components are said to be \emph{bonded} if they are connected via two weak edges. Note that a bonded component may contain at most one hexagon that is formed by three rhombi.
\item 
A bonded component has \emph{content} $i$ (resp. $j$) is it contains exactly one more occurrence of $i$ (resp. $j$) than $j$ (resp. $i$).\footnote{Note that in any bonded component, the number of $i$ and the number of $j$ must differ by one.} Further, the content of a singled rhombus is the same as the number it contains.\end{enumerate}


On a bonded component containing a hexagon, we define the \emph{braid operation} to be iteratively applying the ``star-triangle'' involution
\[  \begin{tikzpicture}[scale = 1.3,baseline = 2.4em]
% Define directions (angles in degrees)
\pgfmathsetmacro{\step}{1} % Step length
% Starting point
\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {1,2,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}

\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {3,2,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {2,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {2,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);
\coordinate (old) at (current);
%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {1,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    %\draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);}
 \node at ($(old)!0.5!(current) $) {$i+1$};
 
 \coordinate (current) at (0,0);
 \foreach \stepdir in {2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    %\draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);}
   \coordinate (old) at (current);
    \foreach \stepdir in {1,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    %\draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);}
     \node at ($(old)!0.5!(current) $) {$i+1$};
     
     \coordinate (current) at (0,0);
     \coordinate (old) at (current);
      \foreach \stepdir in {3,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \coordinate (current) at (next);}
     \node at ($(old)!0.5!(current) $) {$i$};
\end{tikzpicture}
\longleftrightarrow
\begin{tikzpicture}[xscale = - 1.3,yscale=1.3,baseline = 2.4em]
% Define directions (angles in degrees)
\pgfmathsetmacro{\step}{1} % Step length
% Starting point
\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {1,2,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}

\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {3,2,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {2,1} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);

%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {2,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    \draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);
}
\coordinate (current) at (0,0);
\coordinate (old) at (current);
%\node[below left] at (0,0) {Origin};
% Path sequence
\foreach \stepdir in {1,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    %\draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);}
 \node at ($(old)!0.5!(current) $) {$i$};
 
 \coordinate (current) at (0,0);
 \foreach \stepdir in {2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    %\draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);}
   \coordinate (old) at (current);
    \foreach \stepdir in {1,3} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    
    % Draw the segment
    %\draw[thick] (current) -- (next);
    
    % Update current point
    \coordinate (current) at (next);}
     \node at ($(old)!0.5!(current) $) {$i$};
     
     \coordinate (current) at (0,0);
     \coordinate (old) at (current);
      \foreach \stepdir in {3,2} {
    % Calculate the next point
    \pgfmathsetmacro{\angle}{(\stepdir-1)*60} % Direction angle
    \coordinate (next) at ({\step*cos(\angle)}, {\step*sin(\angle)});
    \coordinate (next) at ($(current) + (next)$);
    \coordinate (current) at (next);}
     \node at ($(old)!0.5!(current) $) {$i+1$};
\end{tikzpicture}\]
until all the labelling in the bonded component become valid.

We are now ready to define the Bender--Knuth involution $\tau_i$.

\begin{defn} \hfill
\begin{enumerate}
	\item First remove the bonded components without any hexagon, as 
    these rhombi will remain unchanged. 
	\item The bonded components and the other singled rhombi will form several stripes connected by weak edges.
	\item  We will toggle the bonded components and the singled rhombi---like the usual Bender--Knuth involution---such that within every strip, the total number of $i$ and the total number of $i+1$ in the contents are swapped. When toggling a singled rhombi, we simply just change the number; when toggling a bonded component, we apply the braid operation.
\end{enumerate}
\end{defn}

\begin{ex}The following is an example of a Bender--Knuth involution, with the number $1$ representing $i$ and $2$ representing $i+1$.

\[ \scalebox{.9}{\includegraphics[scale = 0.43]{BK_ex.jpg}}\]

From left to right we have: (1) a rhombic tableau restricted to the numbers $i$ and $i+1$, (2) highlighted bonded components, (3) removing the bonded components that don't contain a hexagon, leaving out two strips connected by weak edges, and (4) toggling each of the strips. The highlighted numbers are the contents of the bonded-components and the singled rhombi. Note that only the top bonded component is applied a braid operation, the other two bonded components are unchanged.
	
\end{ex}


\begin{thm}
	The Bender--Knuth action $\tau_i$ is an involution on $\ssrt(w)$ for any $w$.\end{thm}
Since each Bender--Knuth operator exchanges $x_i$ with $x_{i+1}$ in the monomials, similar to the case of Schur functions, this implies:
\begin{cor}
The Stanley symmetric functions are symmetric.
\end{cor}

\begin{rem}
	We note that the Bender--Knuth action on the set of SSRT with maximal entry is more intricate than on all SSRT. In particular, for $I=\{k_1,\cdots,k_l\}$, the numbers $1,\cdots,k_l$ are grouped into different sets $\{1,\cdots,k_1\},\{k_1+1,\cdots,k_2\},\cdots,\{k_{l-1}+1,\cdots,k_l\}$. When imposing a maximal entry, numbers of different group will inherit additional rules of which type of rhombi they can appear. In fact, for $\ssrt^I$, the Bender--Knuth involution implies that Schubert polynomials are symmetric within each variable groups, as we expected.
\end{rem}





\section{Set-valued Rhombic Tableaux and \texorpdfstring{$K$}{K}-Theory}\label{sec:ktheory}
In \cite{lascoux2007anneau}, Lascoux introduced Grothendieck polynomials as
polynomial representative of Schubert classes in the $K$-theory ring of the flag variety.
In \cite{buch2002littlewood}, Buch introduced a set-valued tableau model for the $K$-theory of Grassmannians. A set-valued tableau is, loosely speaking, a semi-standard Young tableaux whose entries can be a set of different numbers.
In this section, we extend our model to $K$-theory, using a set-valued analogue of rhombic tableaux.

\begin{defn}
 Recall the definition of weak and strong edges in \Cref{def:weak-strong}. For an edge  $e$ let $e^L$ denote the rhombus to its left and $e^R$ the rhombus to its right. A \emph{set-valued rhombic tableaux} $T$ is filling of the rhombi in a rhombic tiling using non-empty sets of natural numbers such that for every edge $e$, $\max T(r_L)<\min T(r_R)$ if $e$ is strict and $\max T(r_L)\leq \min T(r_R)$ if $e$ is weak. See \Cref{fig:set-valued-lozenge} for an example.

Denote $\svrt(w)$ the set of all set-valued rhombic tableaux on $\sh(w)$. Similarly, we define set-valued rhombic tableaux with restricted entries if the numbers in a rhombus of type $(i,j)$ is taken from the set $[k_j]$, and denote the set of such tableaux as $\svrt^I(w)$.
\end{defn}

\begin{figure}[ht]
\centering
\begin{tikzpicture}[scale = 1,rotate = 60]
    % Set the step size (adjust as needed)
    \def\step{1.2}
    
    % Start point
    \coordinate (start) at (0,0);

    % Draw the first path
    \path (start) coordinate (p0);
    \draw[black] (p0) -- ++(60:\step) coordinate (p1)  % Up
                          -- ++(-60:\step) coordinate (p2) % Down
                          -- ++(0:\step) coordinate (p3)   % Right
                          -- ++(60:\step) coordinate (p4)  % Up
                          -- ++(-60:\step) coordinate (p5) % Down
                          -- ++(60:\step) coordinate (p6)  % Up
                          -- ++(-60:\step) coordinate (p7) % Down
                          -- ++(0:\step) coordinate (p8);  % Right

    % Draw the second path
    \draw[black] (start) -- ++(-60:\step) coordinate (q1) % Down
                          -- ++(60:\step) coordinate (q2)  % Up
                          -- ++(-60:\step) coordinate (q3) % Down
                          -- ++(0:\step) coordinate (q4)   % Right
                          -- ++(60:\step) coordinate (q5)  % Up
                          -- ++(-60:\step) coordinate (q6) % Down
                          -- ++(60:\step) coordinate (q7)  % Up
                          -- ++(0:\step) coordinate (q8);  % Right

    % Draw the third path
    \draw[black] (start) -- ++(-60:\step) coordinate (r1) % Down
                          -- ++(-60:\step) coordinate (r2) % Down
                          -- ++(60:\step) coordinate (r3)  % Up
                          -- ++(0:\step) coordinate (r4)   % Right
                          -- ++(-60:\step) coordinate (r5) % Down
                          -- ++(60:\step) coordinate (r6)  % Up
                          -- ++(60:\step) coordinate (r7)  % Up
                          -- ++(0:\step) coordinate (r8);  % Right

    % Draw the fourth path (DDDDURUUR)
    \draw[black] (start) -- ++(-60:\step) coordinate (s1) % Down
                          -- ++(-60:\step) coordinate (s2) % Down
                          -- ++(-60:\step) coordinate (s3) % Down
                          -- ++(60:\step) coordinate (s4)  % Up
                          -- ++(0:\step) coordinate (s5)   % Right
                          -- ++(60:\step) coordinate (s6)  % Up
                          -- ++(60:\step) coordinate (s7)  % Up
                          -- ++(0:\step) coordinate (s8);  % Right

    % Draw the fifth path (DDDRRUUU)
    \draw[black] (start) -- ++(-60:\step) coordinate (t1) % Down
                          -- ++(-60:\step) coordinate (t2) % Down
                          -- ++(-60:\step) coordinate (t3) % Down
                          -- ++(0:\step) coordinate (t4)   % Right
                          -- ++(0:\step) coordinate (t5)   % Right
                          -- ++(60:\step) coordinate (t6)  % Up
                          -- ++(60:\step) coordinate (t7)  % Up
                          -- ++(60:\step) coordinate (t8); % Up

    % Draw edges between the first and second paths to form lozenges
    \draw[black] (p0) -- (q1);
    \draw[black] (p1) -- (q2);
    \draw[black] (p2) -- (q3);
    \draw[black] (p3) -- (q4);
    \draw[black] (p4) -- (q5);
    \draw[black] (p5) -- (q6);
    \draw[black] (p6) -- (q7);
    \draw[black] (p7) -- (q8);

    % Place "1" in the center of the specified lozenges for paths 1 and 2
    \node at ($ (p1)!0.5!(q1) $) {$1$}; % Between p1 and q1
    \node at ($ (p3)!0.5!(q3) $) {$1,2$}; % Between p3 and q3
    \node at ($ (p4)!0.5!(q4) $) {$1$}; % Between p4 and q4
    \node at ($ (p6)!0.5!(q6) $) {$1,2$}; % Between p6 and q6

    % Place "2" in the center of the specified lozenges for paths 2 and 3
    \node at ($ (q2)!0.5!(r2) $) {$2$}; % Between q2 and r2
    \node at ($ (q5)!0.5!(r5) $) {$2,3$}; % Between q5 and r5

    % Draw the single edge between the third and fourth paths
    \draw[black] (r3) -- (s4);

    % Place "3" in the center of the specified lozenges for paths 3 and 4
    \node at ($ (r3)!0.5!(s3) $) {$3$}; % Between r3 and s3
    \node at ($ (r4)!0.5!(s4) $) {$4$}; % Between r4 and s4

    % Draw edges between the fourth and fifth paths as specified
    \draw[black] (s5) -- (t4);
    \draw[black] (s5) -- (t6);
    \draw[black] (s6) -- (t7);
    \draw[black] (s7) -- (t8);

    % Place "4" in the center of the specified lozenges for paths 4 and 5
    \node at ($ (s4)!0.5!(t4) $) {$4$}; % Between s4 and t4
    \node at ($ (s7)!0.5!(t7) $) {$3$}; % Between s7 and t7

    % Place "5" in the center of the specified lozenges for paths 4 and 5
    \node at ($ (s5)!0.5!(t5) $) {$5$}; % Between s5 and t5
    \node at ($ (s6)!0.5!(t6) $) {$4,5$}; % Between s6 and t6

\end{tikzpicture}
\caption{A set-valued rhombic tableau with weight $x_1^4x_2^4x_3^3x_4^3x_5^2$ for $I=(3,5)$ and $\tilde I=(3,2,3)$}
\label{fig:set-valued-lozenge}
\end{figure}

Analogous to Buch's formula \cite{buch2002littlewood}, we have

\begin{thm}
    Let $I=\{k_1,\cdots,k_l\}$ and for any $w\in W^P$. We have that
    \[\mathfrak{G}_w(x_1,\cdots,x_{k_l})= \sum_{T \in \svrt^{I}(w)} \wt(T)\]
    and 
    \[G_w(x_1,x_2,\cdots) = \sum_{T \in \svrt(w)} \wt(T)\]
    where $\mathfrak{G}_w$ is the Grothendieck polynomial associated to $w$ and ${G}_w$ is the stable Grothendieck symmetric function of $w$.
\end{thm}



\acknowledgements{We thank Alex Postnikov and Vic Reiner for helpful conversations and especially for referring us to Elnitsky's work \cite{elnitsky1997rhombic}. }


\printbibliography




\end{document}

