%% 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[finalversion]{FPSAC2018}
\articlenumber{82}
%% but DO NOT pass any options (or change anything else anywhere) which alters page size / layout / font size etc

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

\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\newtheorem{prop}[thm]{Proposition}
\newtheorem{conj}[thm]{Conjecture}
\newtheorem{ques}[thm]{Question}
\newtheorem{definition}[thm]{Definition}

\usepackage{tikz-cd}
\usepackage{tkz-graph}
\usepackage{pst-node}
\renewcommand{\epsilon}{\varepsilon}
\newcommand{\xto}{\xrightarrow}
\newcommand{\vp}{\varphi}
\newcommand{\mbb}{\mathbb}
\newcommand{\Z}{\mbb Z}
\newcommand{\T}{\mathcal T}
\renewcommand{\a}{\mf a}
\renewcommand{\b}{\mf b}
\newcommand{\p}{\mf p}
\newcommand{\q}{\mf q}
\newcommand{\m}{\mf m}
\newcommand{\R}{\mbb R}

\newcommand{\Q}{\mbb Q}
\newcommand{\N}{\mbb N}
\newcommand{\lr}{\leftrightarrow}
\newcommand{\mf}{\mathfrak}
\newcommand{\im}{\text{im}}
\newcommand{\Tau}{\mathcal{T}}
\newcommand{\rib}{(G,\{\rho_{v_k}\})}
\newcommand{\ribs}{(G',\{\rho'_{v_k}\})}
\newcommand{\ribss}{(G'',\{\rho''_{v_k}\})}

%% define your title in the usual way
\title{Genus From Sandpile Torsor Algorithm}

%% define your authors in the usual way
%% use \addressmark{1}, \addressmark{2} etc for the institutions, and use \thanks{} for contact details
\author{Alex
McDonough\thanks{\href{mailto:amcd@math.brown.edu}{amcd@math.brown.edu}}\addressmark{1}}

%% then use \addressmark to match authors to institutions here
\address{\addressmark{1}Brown University, Providence, RI}

%% put the date of submission here
\received{11/14/2017}

%% leave this blank until submitting a revised version
\revised{3/31/2018}

%% 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{Previous work by Chan--Church--Grochow and Baker--Wang showed that the output of the rotor routing and Bernardi sandpile torsor algorithms can be used to distinguish a planar ribbon graph from a nonplanar ribbon graph. Here, we show that this output is not enough to determine the genus of a ribbon graph. Nevertheless, we provide an algorithm that is able to detect the genus of a ribbon graph from the output of the rotor routing process if further information is known. }

%% put your French abstract here, or comment this out if you don't have one
%\resume{\lipsum[2]}

%% put your keywords here, or comment this out if you don't have them yet
\keywords{sandpile torsor, rotor routing, Bernardi process, genus}

%% 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{82-McDonough.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{Background and Motivation}

In this paper, we work with connected graphs that may have multiple edges between the same pair of vertices but no self loops. For a graph $G$, we denote the set of vertices by $V(G)$, the set of edges by $E(G)$, and the set of spanning trees by $\Tau(G)$.

\subsection{The Sandpile Group}

For any graph $G$, define the group $\text{Div}(G)$ of $\textit{divisors}$ of $G$ as:

$$\text{Div}(G) := \{\sum_{v \in V(G)}n_vv\mid n_v\in\Z\}$$

\noindent Define the subgroup $\text{Div}^0(G)$ of \textit{degree-0 divisors} of $G$ as:

$$\text{Div}^0(G) := \{\sum_{v \in V(G)}n_vv\mid n_v\in\Z, \sum_{v \in V(G)}n_v = 0\}$$

\noindent The \textit{graph Laplacian} $\Delta: \text{Div}(G) \to \text{Div}(G)$ is the symmetric matrix with diagonal elements $\Delta_{vv} = -\text{deg}(v)$ and off-diagonals $\Delta_{vw} =$ number of edges connecting $v$ to $w$. Finally, define the \textit{sandpile group} or \textit{Picard group} $\text{Pic}^0(G)$ as:

$$\text{Pic}^0(G) := \text{Div}^0(G)/\im(\Delta)$$

We can view the elements of $\text{Div}^0(G)$ as configurations on a
graph where we place some number of ``chips'' on each vertex (allowing
for negative chips but not fractional chips). The image of the graph
Laplacian is generated by ``firing'' and ``unfiring'' vertices of $G$: when a vertex $v$ \textit{fires}, it sends one chip along each edge incident to $v$. This decreases the number of chips at $v$ by the degree of $v$ and increases the number of chips at every other vertex $w$ by the number of edges incident to both $v$ and $w$. When a vertex $v$ \textit{unfires}, it takes in one chip along each edge incident to $v$. This increases the number of chips at $v$ by the degree of $v$ and decreases the number of chips at every other vertex $w$ by the number of edges incident to both $v$ and $w$. Thus, an equivalent definition of $\text{Pic}^0(G)$ is the set of equivalence classes of $\text{Div}^0(G)$ under the equivalence relation generated by firing and unfiring vertices of $G$.

\subsection{Sandpile Torsors}

\subsubsection{Relating $\text{Pic}^0(G)$ and $\Tau(G)$}

It is a well known fact that the size of the sandpile group of a graph $G$ is the same as the number of spanning trees of $G$ (as shown e.g. in~\cite{Biggs} and~\cite{Holroyd}). Thus, it is natural to ask whether there exists a canonical (automorphism invariant) bijection between these two sets. However, this is not always the case because there is not always a distinguished spanning tree to associate with the identity element of the sandpile group. For example, a graph with 2 vertices and multiple edges has no distinguished spanning tree. 

The next best hope would be if there were a canonical free transitive action of $\text{Pic}^0(G)$ acting on $\Tau(G)$ (which can be thought of as a canonical bijection after fixing a tree). However, there is still potential ambiguity. For example, on a graph with 2 vertices and multiple edges, there is no canonical order to cycle through the trees, even after fixing one of them. 

To resolve this issue, we introduce additional structure on $G$. For each vertex $v \in V(G)$, assign a cyclic order $\{\rho_{v}\}$ to the edges incident to $v$. When this information is provided, $(G, \{\rho_{v_k}\})$ is called a \textit{ribbon graph}, sometimes referred to as a \textit{combinatorial embedding}. Nevertheless, even with the ribbon graph structure provided, there is not always a canonical choice of free transitive action. For example, if we have a graph with 2 vertices $v$ and $w$ and 3 edges $e_1,e_2$ and $e_3$ such that $\{\rho_{v}\} = \{\rho_{w}\} = (e_1,e_2,e_3)$, then there is no canonical way to decide whether the sandpile element $(1,-1)$ or the sandpile element $(-1,1)$ should send $e_1$ to $e_2$ (see Figure \ref{vertexneeded}).
\begin{figure}
\begin{center}
\begin{tikzpicture}
    
    \tikzstyle{every node} = [circle,fill,inner sep=1pt,minimum size = 1.5mm]
    \node[label={west:{\large$v$}}](e) at (3,3) {};
    \node[label={east:{\large$w$}}](f) at (7,3){};

    \tikzstyle{every node} = [draw = none,fill = none,scale = .7]
    \draw (e) .. controls (5,1.5) .. (f)
         node[pos = .1,sloped,above]{1}
         node[pos = .9,sloped,above]{1}
         node[pos = .5,sloped,above]{$e_1$};
    \draw (e) .. controls (5,3) .. (f)
         node[pos = .1,sloped,above]{2}
         node[pos = .9,sloped,above]{2}
         node[pos = .5,sloped,above]{$e_2$};
    \draw (e) .. controls (5,4.5) .. (f)
     	 node[pos = .1,sloped,above]{3}
         node[pos = .9,sloped,above]{3}
         node[pos = .5,sloped,above]{$e_3$};

\end{tikzpicture}
\caption{A ribbon graph with no canonical free transitive action of its sandpile group acting on its spanning trees. The numbers give the cyclic order around each vertex. In general, if no labels are given, the order is assumed to be clockwise.} 
\label{vertexneeded}
\end{center}
\end{figure}

This final ambiguity can be fixed by associating our free transitive action with a distinguished vertex, that we call the $\textit{basepoint}$. We will call such an action a \textit{sandpile torsor} of the graph.

Formally, we first define a $\textit{ribbon graph isomorphism}$. A ribbon graph isomorphism $(\psi,\psi')$ from $\rib$ to $\ribs$ is a pair of isomorphisms $\psi: V(G) \to V(G')$ and $\psi':E(G) \to E(G')$ such that if $v$ is incident to $e$ then $\psi(v)$ is incident to $\psi'(e)$ and if $\rho_v = (e_1,e_2,...,e_k)$ then $\rho_{\psi(v)} = (\psi'(e_1),\psi'(e_2), ... ,\psi'(e_k))$. In other words, this is a graph isomorphism that respects the ribbon structure. Note that $\psi$ induces an isomorphism from $\text{Pic}^0(G) \to \text{Pic}^0(G')$ (which by abuse of notation we will call $\psi$) and $\psi'$ induces an isomorphism from $\Tau(G) \to \Tau(G')$ (which by abuse of notation, we will call $\psi'$). 


\begin{definition} A \textit{sandpile torsor} with basepoint $v$ is a free transitive action $\vp_v:\text{Pic}^0(G) \times \Tau(G) \to \Tau(G)$ such that for all $S \in \text{Pic}^0(G)$, $T \in \Tau(G)$, and $(\psi,\psi') \in \text{Aut}(\rib)$ with $v$ fixed by $\psi$, $\vp_v(S,T) = \vp_v(\psi(S),\psi'(T))$.
\end{definition}

\begin{definition}A \textit{sandpile torsor algorithm} $\alpha$ is an algorithm for which the input is a ribbon graph and one of its vertices. The output is a sandpile torsor with the vertex as basepoint and which also satisfies the following condition: if $\rib$ and $\ribs$ are two ribbon graphs with $(\psi,\psi')$ an isomorphism between them, then for all $v \in V(G)$, $S \in \text{Pic}^0(G)$, and $T \in \Tau(G)$, we have the equality $\alpha_v(S,T) = \alpha_{\psi(v)}(\psi(S),\psi'(T))$.
\end{definition}

There are a few known sandpile torsor algorithms. The two that have been the most studied are the rotor routing process and the Bernardi process.

\begin{figure}
\begin{center}
\begin{tikzpicture}
    
    \tikzstyle{every node} = [circle,fill,inner sep=1pt,minimum size = 1.5mm]
    \node (a) at (3,4) {};
    \node(b) at (1.5,4){} ;
    \node[label={north:{\large$v$}}](c) at (2,5){};
    \node(d) at (3,5.5){};
    \node(e) at (4.5,4){};
    \node(f) at (4.5,5.5){};

    \node[fill = none]at (1.4,5.1) {-1};
    \node[fill = none]at (5,4) {1};
    
    \node (a2) at (8,4) {};
    \node(b2) at (6.5,4){} ;
    \node[label={north:{\large$v$}}](c2) at (7,5){};
    \node(d2) at (8,5.5){};
    \node(e2) at (9.5,4){};
    \node(f2) at (9.5,5.5){};
  
   \node[fill = none]at (6.4,5.1) {-1};
   \node[fill = none]at (10,5.5) {1};
    
   \node (a3) at (13,4) {};
    \node(b3) at (11.5,4){} ;
    \node[label={north:{\large$v$}}](c3) at (12,5){};
    \node(d3) at (13,5.5){};
    \node(e3) at (14.5,4){};
    \node(f3) at (14.5,5.5){};
 
    \node[fill = none]at (11.4,5.1) {-1};
    \node[fill = none]at (13,6) {1};
   
    \node (a4) at (3,1) {};
    \node(b4) at (1.5,1){} ;
    \node[label={north:{\large$v$}}](c4) at (2,2){};
    \node(d4) at (3,2.5){};
    \node(e4) at (4.5,1){};
    \node(f4) at (4.5,2.5){};
    
    \node[fill = none]at (1.4,2.1) {-1};
    \node[fill = none]at (3,.5) {1};
    
   \node (a5) at (8,1) {};
    \node(b5) at (6.5,1){} ;
    \node[label={north:{\large$v$}}](c5) at (7,2){};
    \node(d5) at (8,2.5){};
    \node(e5) at (9.5,1){};
    \node(f5) at (9.5,2.5){};
    
   \node (a6) at (13,1) {};
    \node(b6) at (11.5,1){} ;
    \node[label={north:{\large$v$}}](c6) at (12,2){};
    \node(d6) at (13,2.5){};
    \node(e6) at (14.5,1){};
    \node(f6) at (14.5,2.5){};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
    \tikzstyle{every node} = [draw = none,fill = none,scale = .7]
    
    \draw [->](a) --(b);
    \draw[loosely dashed](c) --(a);
    \draw[loosely dashed] (a) --(d);
    \draw [->](e)--(a);
    \draw [->](b) --(c);
    \draw[loosely dashed] (c) --(d);
    \draw[->](d) --(f);
    \draw[->](f) --(e);
    
    \draw [->](a2) --(b2);
    \draw[loosely dashed](c2) --(a2);
    \draw[loosely dashed] (a2) --(d2);
    \draw[loosely dashed](e2)--(a2);
    \draw [->](b2) --(c2);
    \draw[loosely dashed] (c2) --(d2);
    \draw[->](d2) --(f2);
    \draw[<->](f2) --(e2);
    
    \draw [->](a3) --(b3);
    \draw[loosely dashed](c3) --(a3);
    \draw[loosely dashed] (a3) --(d3);
    \draw[loosely dashed](e3)--(a3);
    \draw [->](b3) --(c3);
    \draw[loosely dashed] (c3) --(d3);
    \draw[<->](d3) --(f3);
    \draw[<-](f3) --(e3);

    \draw [->](a4) --(b4);
    \draw[loosely dashed](c4) --(a4);
    \draw[<-] (a4) --(d4);
    \draw[loosely dashed](e4)--(a4);
    \draw [->](b4) --(c4);
    \draw[loosely dashed] (c4) --(d4);
    \draw[<-](d4) --(f4);
    \draw[<-](f4) --(e4);
       
    \draw [loosely dashed](a5) --(b5);
    \draw[<-](c5) --(a5);
    \draw[<-] (a5) --(d5);
    \draw[loosely dashed](e5)--(a5);
    \draw [->](b5) --(c5);
    \draw[loosely dashed] (c5) --(d5);
    \draw[<-](d5) --(f5);
    \draw[<-](f5) --(e5);
    
    \draw [loosely dashed](a6) --(b6);
    \draw(c6) --(a6);
    \draw (a6) --(d6);
    \draw[loosely dashed](e6)--(a6);
    \draw (b6) --(c6);
    \draw[loosely dashed] (c6) --(d6);
    \draw(d6) --(f6);
    \draw(f6) --(e6);
\end{tikzpicture}
\caption{A demonstration of the rotor routing action with basepoint $v$ acting on the given spanning tree by the sandpile element with 1 chip on the bottom right vertex, -1 chips on $v$, and no chips elsewhere.} 
\label{rr}
\end{center}
\end{figure}

\subsubsection{Rotor Routing Process}

The \textit{rotor routing process} is a known sandpile torsor algorithm.

For $v \in V(G)$, denote $r_v$ as the sandpile torsor with basepoint $v$ determined by the rotor routing process (or the \textit{rotor routing torsor with basepoint $v$} for short). For $S \in \text{Pic}^0(G)$ and $T \in \Tau(G)$, define $r_v(S,T)$ in the following way:

Choose a representative of $S$ with a nonnegative number of chips away from $v$. Then, direct the edges of $T$ so that they point towards $v$ along the path of $T$. There is now one directed edge coming out of every vertex $w \not= v$. This edge is called the \textit{rotor} at $w$. If $w$ has a positive number of chips, rotate the rotor at $w$ to the next edge in $\rho_w$ and then send a chip to the other vertex incident to this edge. Continue this process until every vertex has zero chips (at which point the chips have all been deposited at $v$). The resulting position of the rotors gives a new spanning tree $T'$. See Figure \ref{rr} for an example and~\cite{Holroyd} for details and proofs.

\begin{figure}
\begin{center}
\begin{tikzpicture}
    
    \tikzstyle{every node} = [circle,fill,inner sep=1pt,minimum size = 1.5mm]
    \node (a) at (3,4) {};
    \node(b) at (1.5,4){} ;
    \node[label={north:{\large$v$}}](c) at (2,5){};
    \node(d) at (3,5.5){};
    \node(e) at (4.5,4){};
    \node(f) at (4.5,5.5){};
    
    \node (a2) at (8,4) {};
    \node(b2) at (6.5,4){} ;
    \node[label={north:{\large$v$}}](c2) at (7,5){};
    \node(d2) at (8,5.5){};
    \node(e2) at (9.5,4){};
    \node(f2) at (9.5,5.5){};
    
   \node (a3) at (13,4) {};
    \node(b3) at (11.5,4){} ;
    \node[label={north:{\large$v$}}](c3) at (12,5){};
    \node(d3) at (13,5.5){};
    \node(e3) at (14.5,4){};
    \node(f3) at (14.5,5.5){};
 
    \node[fill = none]at (11.4,5.1) {2};
    \node[fill = none]at (13,3.5) {1};
   
    \node (a4) at (3,1) {};
    \node(b4) at (1.5,1){} ;
    \node[label={north:{\large$v$}}](c4) at (2,2){};
    \node(d4) at (3,2.5){};
    \node(e4) at (4.5,1){};
    \node(f4) at (4.5,2.5){};
    
    \node[fill = none]at (1.4,2.1) {1};
    \node[fill = none]at (3,.5) {1};
    \node[fill = none]at (4.5,.5) {1};
    
   \node (a5) at (8,1) {};
    \node(b5) at (6.5,1){} ;
    \node[label={north:{\large$v$}}](c5) at (7,2){};
    \node(d5) at (8,2.5){};
    \node(e5) at (9.5,1){};
    \node(f5) at (9.5,2.5){};
    
   \node (a6) at (13,1) {};
    \node(b6) at (11.5,1){} ;
    \node[label={north:{\large$v$}}](c6) at (12,2){};
    \node(d6) at (13,2.5){};
    \node(e6) at (14.5,1){};
    \node(f6) at (14.5,2.5){};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
    \tikzstyle{every node} = [draw = none,fill = none,scale = .7]
    
    \draw (a) --(b);
    \draw[loosely dashed](c) --(a);
    \draw[loosely dashed] (a) --(d);
    \draw (e)--(a);
    \draw (b) --(c);
    \draw[loosely dashed] (c) --(d);
    \draw(d) --(f);
    \draw(f) --(e);
    
    \draw (a2) --(b2);
    \draw[loosely dashed](c2) --(a2);
    \draw[loosely dashed] (a2) --(d2);
    \draw(e2)--(a2);
    \draw (b2) --(c2);
    \draw[loosely dashed] (c2) --(d2);
    \draw(d2) --(f2);
    \draw(f2) --(e2);
    
    \draw[red] plot [smooth cycle] coordinates {(7.5,4.8)(7,4.4)(9.2,4.4)(9.2,5.2)(7.7,5.2)(7.7,5.8)(8,5.9)(9.8,5.8)(9.8,3.7)(6,3.7)(6.9,5.5)};
    \draw[red,->](6.85,5.65)--(7.15,5.65);
    
    \draw (a3) --(b3);
    \draw[loosely dashed](c3) --(a3)
    node[pos = .15,red]{x};
    \draw[loosely dashed] (a3) --(d3)
    node[pos = .15,red]{x};
    \draw(e3)--(a3);
    \draw (b3) --(c3);
    \draw[loosely dashed] (c3) --(d3)
    node[pos = .15,red]{x};
    \draw(d3) --(f3);
    \draw(f3) --(e3);


       
    \draw [loosely dashed](a5) --(b5);
    \draw(c5) --(a5);
    \draw (a5) --(d5);
    \draw[loosely dashed](e5)--(a5);
    \draw(b5) --(c5);
    \draw[loosely dashed] (c5) --(d5);
    \draw(d5) --(f5);
    \draw(f5) --(e5);
    
    \draw[red] plot [smooth cycle] coordinates {(7.3,2.25)(7.7,1.6)(7.7,2.8)(9.75,2.8)(9.75,.7)(9.2,.7)(9.2,2.1)(8.25,2.1)(8.25,.7)(7.6,.7)(7.1,1.5)(6.7,.7)(6.2,.7)(6.1,.9)(6.8,2.4)(7.15,2.4)};
    \draw[red,->](6.85,2.65)--(7.15,2.65);
    
    \draw [loosely dashed](a6) --(b6);
    \draw(c6) --(a6);
    \draw (a6) --(d6);
    \draw[loosely dashed](e6)--(a6);
    \draw (b6) --(c6);
    \draw[loosely dashed] (c6) --(d6);
    \draw(d6) --(f6);
    \draw(f6) --(e6);
    
\end{tikzpicture}
\caption{A demonstration of the Bernardi action with basepoint $v$ acting on the given spanning tree by the sandpile element with 1 chip on the bottom right vertex, $-1$ chips on $v$ and no chips elsewhere. Note that it is not a coincidence that this action produces the same spanning tree as the rotor routing action in Figure \ref{rr}. It is shown in~\cite{Baker} that the rotor routing and Bernardi actions are identical to each other on planar graphs.} 
\label{b}
\end{center}
\end{figure}
\subsubsection{Bernardi Process}

The \textit{Bernardi process} is another known sandpile torsor algorithm.

For $v \in V(G)$, denote $\beta_v$ as the sandpile torsor with basepoint $v$ determined by the Bernardi process (or the \textit{Bernardi torsor with basepoint $v$} for short). For $S \in \text{Pic}^0(G)$ and $T \in \Tau(G)$, define $\beta_v(S,T)$ in the following way:

Let $S \in \text{Pic}^0(G)$, $v \in V(G)$, and $T\in \Tau(G)$. Consider an edge $e$ incident to vertices $v_1$ and $v_2$ to be composed of two \textit{half-edges} $(e,v_1)$ and $(e,v_2)$. Choose an arbitrary edge $e$ incident to $v$. (The choice of $e$ does not affect the action). We first need to find the \textit{break divisor} associated with each spanning tree.  To get the break divisor associated with $T$, we follow a recursive procedure beginning at the half-edge $(e,v)$ and continuing until we return to $(e,v)$. Informally, this procedure traces around $T$ and places a chip the first time it crosses each edge that is not in $T$. Say that our current edge is $(e',v')$. There are 2 cases:

1) If $e' \in T$, we consider the other half edge associated to $e'$, say $(e',w')$. Then, we move to the half edge $(e'',w')$ where $e''$ is the next edge after $e'$ in $\rho_{w'}$ and restart the procedure with $(e'',w')$ as our new half edge.

2) If $e' \not\in T$, we consider the half edge $(\tilde e,v')$ where $\tilde e$ is the next edge after $e'$ in $\rho_{v'}$. Furthermore, if we have not already passed through the other half edge involving $e'$, we place a chip on $v'$. Then we restart the procedure with $(\tilde e, v')$ as our new half edge.

This process continues until we return to $(e,v)$. At this point, we will have placed one chip for each edge not in $T$, so this gives us an element of $\text{Div}^g(G)$ for $g = E(G) - V(G) + 1$ where

$$\text{Div}^g(G) := \{\sum_{v \in V(G)}n_vv\mid n_v\in\Z, \sum_{v \in V(G)}n_v = g\}$$

\noindent It can be shown that these elements are all unique as elements of

$$\text{Pic}^g(G) := \text{Div}^g(G)/\im(\Delta).$$

The element of $\text{Pic}^g(G)$ associated to the spanning tree $T$ in this way is called the \textit{break divisor} of $T$. $\beta_v(S,T)$ is given by adding $S$ to the break divisor associated to $T$, which gives us a new element of $\text{Pic}^g(G)$, and then finding the spanning tree $T'$ for which this is the break divisor. See Figure \ref{b} for an example and~\cite{Baker} for details and proofs, as well as an efficient algorithm to find the spanning tree associated with a given break divisor.


\subsection{Summary of Results}

The \textit{genus} of a ribbon graph $\rib$ is the genus of the surface obtained after thickening the edges of $G$ and then gluing disks to the boundary components. A ribbon graph is called \textit{planar} if its genus is equal to 0. The inspiration for this paper comes from the following theorem proven in~\cite{Chan} for the rotor routing case and~\cite{Baker} for the Bernardi case.

\begin{thm}\label{bigone}
The rotor routing and Bernardi processes map each vertex of a ribbon graph to the same sandpile torsor if and only if the graph is planar, i.e. the processes are invariant to the choice of basepoint if and only if the graph is planar. 
\end{thm}

The theorem suggests that we may be able to determine the genus of a ribbon graph from the structure of the sandpile torsors given by a sandpile torsor algorithm~\cite{Chan2}. In order for this to be possible, we need a positive answer to the following question 

\begin{conj}\label{question2}
Let $\rib$ and $\ribs$ be two ribbon graphs with genuses $g$ and $g'$ respectively and let $\alpha$ be a sandpile torsor algorithm. Assume that $V(G) = V(G')$, $\text{Pic}^0(G) = \text{Pic}^0(G')$, and $\vp: \Tau(G)\to\Tau(G')$ is a bijection such that for every vertex $v \in V(G)$ the following diagram commutes:

\[ \begin{tikzcd}[column sep = 4cm]
\text{Pic}^0(G) \times \Tau(G) \arrow{r}{\alpha_v(\text{Pic}^0(G))} \arrow[swap]{d}{\text{Id}\times \vp} & \Tau(G) \arrow{d}{\vp} \\
\text{Pic}^0(G') \times \Tau(G') \arrow{r}{\alpha_v(\text{Pic}^0(G'))}& \Tau(G')
\end{tikzcd}
\]

\noindent Is it necessarily true that $g = g'$?
\end{conj}

In the case where $g = 0$ or $g' = 0$, this is a corollary of Theorem \ref{bigone} (in fact, for this case we can weaken the assumptions by allowing the first vertical map to be $\psi\times \vp$ where $\psi$ is any isomorphism between $\text{Pic}^0(G)$ and $\text{Pic}^0(G')$. This case is studied at length in the full paper). We will give a counterexample to Conjecture \ref{question2} in Section \ref{counterexample} when $\alpha$ is either the rotor routing or Bernardi process.\footnote{Extending to the case where $\alpha$ is an arbitrary sandpile torsor appears difficult because the definition of a sandpile torsor algorithm relies on automorphisms. For a ribbon graph with no automorphisms, the sandpile torsors at different basepoints do not have to relate in any way.}

Because of the failure of this conjecture, any algorithm for determining the genus of a ribbon graph must require more information than just the orbits of the sandpile torsors produced by the rotor routing or Bernardi process. In Section \ref{example} we construct such an algorithm using the rotor routing process as well as information about the edges of $G$. Specifically, we prove the following theorem:

\begin{thm}\label{algorithm}
Let $\rib$ be a ribbon graph. Suppose that we are given $V(G)$, $E(G)$, $\text{Pic}^0(G)$, $\Tau(G) \subset \mathcal P(E(G))$ and for every $v \in V(G)$, we are given the map 

$$\text{Pic}^0(G) \times \Tau(G) \xto{r_v(\text{Pic}^0(G))} \Tau(G)$$

\noindent where $r_v$ is the rotor routing torsor with basepoint $v$. Then, it is possible to determine the genus of $\rib$.
\end{thm}

\section{Counterexample}\label{counterexample}

First, we note that there is a known formula for genus of a ribbon graph $\rib$. Define a \textit{cycle} on a ribbon graph $\rib$ as a closed loop such that whenever we enter a vertex, we exit along the next edge in the cyclic order at that vertex. Let cyc$\rib$ be the number of cycles in $\rib$. Then the following formula holds, see e.g. ~\cite{Kaufmann}.

\begin{prop}\label{kauf}
For a ribbon graph $\rib$, the genus $g$ satisfies $2g = 2 - |V(G)| +
|E(G)| - \text{cyc}\rib$.
\end{prop}

\begin{figure}
\begin{center}
\begin{tikzpicture}
    
    \tikzstyle{every node} =  [circle,fill,inner sep=1pt,minimum size = 1.5mm]
    \node[label={north west:{\large $v_1$}}] (a) at (0,5) {};
    \node[label={north:{\large $z_1$}}] (b) at (3,5) {};
    \node[label={north east:{\large $w_1$}}] (c) at (6,5) {};

    \node[label={north west:{\large $v_2$}}](d) at (9,5){};
    \node[label={north:{\large $z_2$}}](e) at (11,5){};
    \node[label={north east:{\large $w_2$}}](f) at (15,5){};

    \tikzstyle{every node} = [draw = none,fill = none, scale = 1.5]
    \node (g) at (2,6.5) {$G$};
    \node(h) at (11,6.5) {$G'$};

    \tikzstyle{every node} = [draw = none,fill = none,scale = .7]
    \draw (a) .. controls(1.5,6).. (b)
         node[pos = .2,sloped,above]{1}
         node[pos = .8,sloped,above]{x + 1};
    \draw (a) .. controls (1.5,4) .. (b)
         node[pos = .2,sloped,below]{2}
         node[pos = .8,sloped,below]{x + 2};
    \draw (b) .. controls (4.5,3) .. (c)
         node[pos = .2,sloped,below]{1}
         node[pos = .8,sloped,below]{1};
    \draw (b) .. controls (4.5,4) .. (c)
         node[pos = .2,sloped,below]{2}
         node[pos = .8,sloped,below]{2};
    \draw[loosely dashed] (b) .. controls (4.5,5) .. (c);
    \draw (b) .. controls (4.5,6) .. (c)
         node[pos = .2,sloped,above]{x-1}
         node[pos = .8,sloped,above]{x-1};
    \draw (b) .. controls (4.5,7) .. (c)
         node[pos = .2,sloped,above]{x}
         node[pos = .8,sloped,above]{x};

    \draw (d) .. controls (10,5) .. (e)
         node[pos = .15,sloped,below]{1}
         node[pos = .8,sloped,below]{2x + 1};
    \draw (e) .. controls (13,2.5) .. (f)
         node[pos = .2,sloped,below]{1}
         node[pos = .8,sloped,below]{1};
    \draw (e) .. controls (13,3.5) .. (f)
         node[pos = .2,sloped,below]{2}
         node[pos = .8,sloped,below]{2};
    \draw[loosely dashed] (e) .. controls (13,4.5) .. (f);
    \draw[loosely dashed] (e) .. controls (13,5.5) .. (f);
    \draw (e) .. controls (13,6.5) .. (f)
         node[pos = .2,sloped,above]{2x-1}
         node[pos = .8,sloped,above]{2x-1};
    \draw (e) .. controls (13,7.5) .. (f)
         node[pos = .2,sloped,above]{2x}
         node[pos = .8,sloped,above]{2x};
\end{tikzpicture}
\caption{Two graphs with the same rotor routing/ Bernardi torsors but different genus} 
\label{twographs}
\end{center}
\end{figure}

With this formula in mind, we can construct a counterexample to Conjecture \ref{question2}. Let $x$ be any odd integer. Consider 2 ribbon graphs, $\rib$ and $\ribs$ such that $|V(G)| = |V(G')| = 3$. Call the elements of $V(G)$ $v_1$, $z_1$, and $w_1$, and call the elements of $V(G')$ $v_2$, $z_2$, and $w_2$. Connect $v_1$ and $z_1$ with 2 edges, $z_1$ and $w_1$ with $x$ edges, $v_2$ and $z_2$ with 1 edge, and $z_2$ and $w_2$ with $2x$ edges (see Figure \ref{twographs}). For the cyclic ordering $\rho_{z_1}$, set the 2 edges that connect to $v_1$ to be next to each other. Furthermore, set the cyclic order of edges connecting $z_1$ to $w_1$ to be the same for $\rho_{z_1}$ as $\rho_{w_1}$, and likewise, set the cyclic ordering of edges connecting $z_2$ to $w_2$ to be the same for $\rho'_{z_2}$ as $\rho'_{w_2}$ (again see Figure \ref{twographs}).  

\begin{thm}\label{ugly}
For any $g$, let $\rib$ and $\ribs$ be constructed as above with $x = 2g+1$. If we identify the vertices of $G$ with the vertices of $G'$, then $\text{Pic}^0(G) = \text{Pic}^0(G')$. Furthermore, there is a bijection $ \vp: \Tau(G)\to\Tau(G')$ such that for every vertex $v \in V(G)$ the following diagram commutes, where $\alpha_v$ is either the rotor routing or Bernardi torsor with basepoint $v$:

\[ \begin{tikzcd}[column sep = 4cm]
\text{Pic}^0(G) \times \Tau(G) \arrow{r}{\alpha_v(\text{Pic}^0(G))} \arrow[swap]{d}{\text{Id}\times \vp} & \Tau(G) \arrow{d}{\vp} \\
\text{Pic}^0(G') \times \Tau(G') \arrow{r}{\alpha_v(\text{Pic}^0(G'))}& \Tau(G')
\end{tikzcd}
\]

\noindent However, the genus of $\rib$ is $g$ while the genus of $\ribs$ is $2g$.
\end{thm}

The idea of this proof is the following. The sandpile torsors $\alpha_{v_i}$ and $\alpha_{z_i}$ are the same while $\alpha_{w_i}$ cycles the trees in the opposite order. This holds whether $\alpha$ is the rotor routing process or the Bernardi process and whether $i = 1$ or $i = 2$. Label the spanning trees of $G_1$ as $[a,b]$ where $a$ is the index of the edge between $v_1$ and $z_1$ (either 1 or 2) and $b$ is the index of the edge between $z_1$ and $w_1$ in cyclic order (ranging from 1 to $x$). Label the spanning trees of $G_2$ as $[a]$ with $a$ the index of the edge between $z_2$ and $w_2$ (ranging from 1 to $2x$). The bijection $\vp$ that causes the diagram in Theorem \ref{ugly} to commute is the one that sends $[a,b] \to [b]$ when $a$ and $b$ are the same parity, and $[a,b] \to [b+x]$ when $a$ and $b$ are opposite parity.

\section{Genus Algorithm}\label{example}

The method to prove Theorem \ref{algorithm} is to take an arbitrary
vertex of our ribbon graph and show that the cyclic order of edges around
it is essentially uniquely determined. Then, we can apply Proposition
\ref{kauf} to determine the ribbon graph's genus.

\begin{definition}
Let $\rib$ be a ribbon graph and $v$ be a vertex. Define a \textit{$v$-component} of $\rib$ as the full ribbon subgraph induced on the vertices in a connected component of $G \setminus v$ union $\{v\}$. Note that $\rib$ has a single $v$-component if and only if $v$ is not a cut vertex. Furthermore, the intersection of any two $v$-components is $\{v\}$. In Figure \ref{bigpic}, the lower ribbon graph is a $v$-component of the upper ribbon graph.
\end{definition}

\begin{lem}\label{tree}
Let $\rib$ be a ribbon graph with a vertex $v$. Let $e_1$ and $e_2$ be two edges incident to $v$ in the same $v$-component, and let $w_1$ and $w_2$ be their other incident vertices respectively. There exists a spanning tree $T$ of $\rib$ such that: i) $e_1 \in T$ ii) $e_2 \not\in T$ and iii) The path from $w_2$ to $v$ over edges in $T$ passes through $w_1$.
\end{lem}

Let $\rib$ be a ribbon graph with a vertex $v$. Let $e_1$ and $e_2$ be two edges incident to $v$ in the same $v$-component $\ribs$, and let $w_1$ and $w_2$ be their other incident vertices respectively. Let $T$ be a spanning tree satisfying the conditions of Lemma \ref{tree}, and let $T'$ be the restriction of $T$ to $G'$ (which  is a spanning tree of $G'$). 

Let $S \in \text{Pic}^0(G)$ be the sandpile element that places 1 chip on $v$, $-1$ chips on $w_2$, and 0 chips elsewhere. Let $r_{w_2}$ be the rotor routing torsor on $\rib$ with basepoint $w_2$. Let $\hat T$ be the image of $r_{w_2}(S \times T)$ and $\hat T'$ be its restriction to $E(G')$.

\begin{prop}\label{same}
In the construction above, $e_2$ is directly after $e_1$ in $\rho'_v$ if and only if $\hat T' = T' \cup e_2 \setminus e_1$.
\end{prop}

This proposition implies that if $\rib$ is a ribbon graph with a single $v$-component (or equivalently a cut-free ribbon graph), given the necessary inputs for Theorem \ref{algorithm}, we can precisely calculate $\rho_{v_k}$ and thus, by Proposition \ref{kauf}, also the genus of $\rib$. However, knowing the restriction of $\rho_v$ to each $v$-component is not generally enough information to determine genus. We will also need information about when edges from one $v$-component fall between edges of a second $v$-component. This is the content of the next two lemmas.

Let $\rib$ be a ribbon graph with a vertex $v$. Let $e_1$ and $e_2$ be two sequential edges within a $v$-component, and $w_1$ and $w_2$ be their other incident vertices respectively. Consider any $v$-component $\ribs$ such that $a_1,...,a_k$ are the edges in $E(G')$ that are between $e_1$ and $e_2$ in $\rho_v$. Let $T$ be a spanning tree satisfying the conditions of Lemma \ref{tree}, and $T'$ be the restriction of $T$ to $E(G')$. 

Let $S \in \text{Pic}^0(G)$ be the sandpile element that places 1 chip on $v$, $-1$ chips on $w_2$, and 0 chips elsewhere, $r_{w_2}$ be the rotor routing torsor on $\rib$ with basepoint $w_2$, $\hat T$ be the image of $r_{w_2}(S \times T)$, and $\hat T'$ be the restriction of $\hat T$ to $E(G')$. 

Let $S' \in \text{Pic}^0(G')$ be the sandpile element that places $-k$ chips on $v$ and $d$ chips on each other vertex $x\in V(G')$ where $d$ is the number of edges incident to $x$ in $\{a_1,...,a_k\}$. Finally, let $r'_{v}$ be the rotor routing torsor on $\ribs$ with basepoint $v$.

\begin{lem}\label{dif1}
In the construction above, $r'_{v}(S' \times T') = \hat{T'}$.
\end{lem}
See Figure \ref{bigpic} for a demonstration of this lemma.

\begin{figure}
\begin{center}
\begin{tikzpicture}
    
    \tikzstyle{every node} = [circle,fill,inner sep=1pt,minimum size = 1.5mm]
    \node [label = {north east:{\large$v$}}](a) at (4,4) {};
    \node[label = {north:$e_1$}](b) at (2.5,4){};
    \node(c) at (3,5){};
    \node(d) at (4,5.5){};
    \node(e) at (5,5){};
    \node[label = {north west:$e_2$}](f) at (5.5,4){};
    \node(g) at (5,3){};
    \node(h) at (4,2.5){};
    \node(i) at (3,3){};

   \node(j) at (5,2){};
   \node(k) at (2.5,2){};
   \node(l) at (7,3){};

   \node(m) at (4,6.5){};
   \node(n) at (7,5){};

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \node[label = {north east:{\large$v$}}](a2) at (12,4) {};
    \node(b2) at (10.5,4){} ;
    \node (c2) at (11,5){};
    \node(d2) at (12,5.5){};
    \node(e2) at (13,5){};
    \node(f2) at (13.5,4){};
    \node(g2) at (13,3){};
    \node(h2) at (12,2.5){};
    \node(i2) at (11,3){};

   \node(j2) at (13,2){};
   \node(k2) at (10.5,2){};
   \node(l2) at (15,3){};

   \node(m2) at (12,6.5){};
   \node(n2) at (15,5){};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \node[label = {west:{\large$v$}}](a3) at (4,-1) {};
    \node(d3) at (4,.5){};
    \node(g3) at (5,-2){};
    \node(h3) at (4,-2.5){};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \node[label = {west:{\large$v$}}](a4) at (12,-1) {};
    \node(d4) at (12,.5){};
    \node(g4) at (13,-2){};
    \node(h4) at (12,-2.5){};

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \tikzstyle{every node} = [draw = none,fill = none,scale = .7]
    \draw [->](a) --(b);
    \draw[->] (c) --(a);
    \draw[loosely dashed] (a) --(d);
    \draw[loosely dashed] (a)--(e);
    \draw[loosely dashed]  (a) --(f);
    \draw [->](g) --(a);
    \draw[loosely dashed] (a) --(h);
    \draw[->](i) --(a);

    \draw (b)[loosely dashed]  --(i);
    \draw [->](k)--(j);
    \draw [->](b)--(k);
    \draw [->](j)--(l);
    \draw [->](l)--(f);

    \draw [->](d)--(g);
    \draw [->](h)--(g);

    \draw [->](m)--(c);
    \draw [->](e)--(m);
    \draw [->](n)--(e);

    \node[fill = none]at (3.85,3.7) {1};
    \node[fill = none]at (5.5,3.7) {-1};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \draw [loosely dashed](a2)--(b2);
    \draw (a2)--(c2);
    \draw (a2)--(d2);
    \draw[loosely dashed] (a2) --(e2);
    \draw(a2) --(f2);
    \draw (a2) --(g2);
    \draw[loosely dashed] (a2)--(h2);
    \draw (a2) --(i2);

    \draw [loosely dashed](b2) --(i2);
    \draw (j2)--(k2);
    \draw (b2)--(k2);
    \draw(j2)--(l2);
    \draw (f2)--(l2);

    \draw [loosely dashed](d2)--(g2);
    \draw (g2)--(h2);

    \draw (c2)--(m2);
    \draw (e2)--(m2);
    \draw (e2)--(n2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

     \draw[loosely dashed] (a3) --(d3);
    \draw [->](g3) --(a3);
    \draw[loosely dashed] (a3) --(h3);
    \draw [->](d3)--(g3);
    \draw [->](h3)--(g3);


    \node[fill = none]at (3.8,-.5) {-1};
    \node[fill = none]at (3.8,.8) {1};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


    \draw (a4) --(d4);
    \draw(g4) --(a4);
    \draw[loosely dashed] (a4) --(h4);
    \draw[loosely dashed] (d4)--(g4);
    \draw (h4)--(g4);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{tikzpicture}
\caption{A demonstration of Lemma \ref{dif1}.}\label{bigpic} 
\end{center}
\end{figure}

Let $\ribs$ be a ribbon graph with a vertex $v$ such that $v$ is not a
cut vertex.\footnote{We use $\ribs$ instead of $\rib$ because we want to
think of $\ribs$ as a $v$-component of a larger ribbon graph.} Let $\{e_1,...,e_n\}$ be the edges of $G'$ incident to $v$. For any $\mathcal E \subseteq \{e_1,...,e_n\}$, let $S_\mathcal E \in \text{Pic}^0(G')$ be the sandpile element that places $-k$ chips on $v$ and $d$ chips on each other vertex $x \in V(G')$ where $d$ is the number of edges incident to $x$ in $\mathcal E$.

\begin{lem}\label{dif2}
In the construction above, if $S_\mathcal E = S_\mathcal {E'}$ then either $\mathcal E =\mathcal E'$ or one is $\{e_1,...,e_n\}$ and the other is $\emptyset$.
\end{lem}

By combining the results of the last two lemmas, for a ribbon graph $\rib$ we are able to find exactly which edges from one $v$-component $\ribs$ fall between two sequential edges in a second $v$-component $\ribss$ with one exception. If all of the edges of $\ribs$ fall between the same two edges of $\ribss$, then we cannot always determine which pair of edges they fall between. However, the following lemma shows that any ambiguities in $\rho_v$ can be resolved with no effect on the genus of $\rib$.

Let $\rib$ be a ribbon graph, and $v \in V(G)$ such that $\rho_v = (e_1,...,e_{i+j})$. Assume that for all $1\le k \le i$ and $i+1 \le l \le i+j$, $e_k$ and $e_l$ are on different $v$-components of $\rib$. Let $\ribs$ be the union of all $v$-components non-trivially intersecting $\{e_1,..,e_i\}$ and $\ribss$ be the union of all $v$-components non-trivially intersecting $\{e_{i+1},..,e_{i+j}\}$ (Where $\{\rho'_{v_k}\}$ and $\{\rho''_{v_k}\}$ are defined naturally as restrictions of $\{\rho_{v_k}\}$)(see Figure \ref{sub}).

\begin{figure}
\begin{center}
\begin{tikzpicture}


    \tikzstyle{every node} = [circle,fill,inner sep=1pt,minimum size = 1.5mm]
    \node [label={north:$v$}](a) at (4,4) {};

    \tikzstyle{every node} = [draw = none,fill = none,scale = .7]
    \draw (a)  .. controls (3,3.5) .. (2,3.2)
        node[pos = .9,below]{$e_1$};
    \draw (a)  .. controls (3,3.75) .. (2,3.6)
        node[pos = .9,below]{$e_2$};
    \draw [loosely dashed](a) .. controls (3,4) .. (2,4);
    \draw (a) .. controls (3,4.25) .. (2,4.4)
         node[pos = .9,above]{$e_{i-1}$};
    \draw (a) .. controls (3,4.5) .. (2,4.8)
         node[pos = .9,above]{$e_{i}$};

    %\draw (0,5) rectangle (2.2,3);
    \draw[dashed] (1.2,4) ellipse (3.2 and 1.5);

    \draw (a)  .. controls (5,3.5) .. (6,3.2)
        node[pos = .9,below]{$e_{i+j}$};
    \draw (a)  .. controls (5,3.75) .. (6,3.6)
        node[pos = .9,below]{$e_{i+j-1}$};
    \draw [loosely dashed](a) .. controls (5,4) .. (6,4);
    \draw (a) .. controls (5,4.25) .. (6,4.4)
         node[pos = .9,above]{$e_{i+2}$};
    \draw (a) .. controls (5,4.5) .. (6,4.8)
         node[pos = .9,above]{$e_{i+1}$};

    %\draw (5.8,5) rectangle (8,3);
    \draw[dashed] (6.8,4) ellipse (3.2 and 1.5);
    
     \tikzstyle{every node} = [draw = none,fill = none, scale = 1.5]
    \node (g) at (1.2,4) {$G'$};
    \node(h) at (6.8,4) {$G''$};
    \node(i) at (4,5.7) {{\Large$G$}};
\end{tikzpicture}
\caption{The Genus of the Full Ribbon Graph is the Sum of the Genuses of the Two Ribbon Subgraphs } 
\label{sub} 
\end{center}
\end{figure}

\begin{lem}\label{subgraphs}
In the above construction, the genus of $\rib$ is the sum of the genus of $\ribs$ and the genus of $\ribss$ .
\end{lem}

Whenever the previous propositions and lemmas are insufficient for generating the exact cyclic order $\rho_v$ around a vertex $v \in V(G)$, it is because we have three or more ribbon subgraphs sequentially around $v$. Lemma \ref{subgraphs} tells us that no matter what order we choose for them, the resulting ribbon graph's genus is the sum of the genuses of the ribbon subgraphs. Thus, by choosing arbitrarily, we reduce to a case where we can apply Proposition \ref{kauf} to prove Theorem \ref{algorithm}.

Finally, we conjecture that the same theorem holds for the Bernardi process because the two sandpile torsor algorithms have a lot of the same properties.

\begin{conj}
Let $\rib$ be a ribbon graph. Suppose that we are given $V(G)$, $E(G)$, $\text{Pic}^0(G)$, $\Tau(G) \subset \mathcal P(E(G))$ and for every $v \in V(G)$, we are given the map 

$$\text{Pic}^0(G) \times \Tau(G) \xto{\beta_v(\text{Pic}^0(G))} \Tau(G)$$

\noindent where $\beta_v$ is the Bernardi torsor with basepoint $v$. Then, is it possible to determine the genus of $\rib$?
\end{conj}

The challenge for this conjecture is that even on a cut-free graph, it is not easy to use the Bernardi process to detect information about the cyclic order around a fixed vertex without information about the cyclic order around other vertices. In other words, there is no clear analogue to Proposition \ref{same}.

\acknowledgements{The author would like to thank Melody Chan for asking the question that inspired this paper and Melody Chan, Caroline Klivans, Brian Freidin, Dori Bejleri, and the FPSAC reviewers for a great deal of excellent revisions.}

%% 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}
