\usepackage{mathtools, adjustbox}
\usepackage{xfrac, cancel, multicol, tabularx, relsize}
\usepackage[normalem]{ulem}
\usepackage[backend=biber, bibstyle=ieee]{biblatex}
\usepackage{tikz-cd}
\usepackage{graphicx, wrapfig}

% Useful theorem definitions
\theoremstyle{theorem}
\newboxedtheorem{theorem}{Theorem}
\newboxedtheorem{lemma}{Lemma}
\newboxedtheorem{corollary}{Corollary}
\newboxedtheorem{proposition}{Proposition}
\theoremstyle{definition}
\newboxedtheorem{definition}{Definition}
\newtheorem{example}[theorem]{Example}
\newtheorem{fundamental-example}[theorem]{Fundamental Example}
\newtheorem{observation}[theorem]{Observation}
\newtheorem{fundamental-observation}[theorem]{Fundamental Observation}
\newtheorem{fact}[theorem]{Fact}
\theoremstyle{remark}
\newtheorem*{remark}{Remark}

% Use \blacksquare for \qed
\renewcommand{\qedsymbol}{\ensuremath{\blacksquare}}

% Only use \smallsetminus
\renewcommand{\setminus}{\smallsetminus}

% Make the arrow on top of \vec adjust to the content
\renewcommand{\vec}{\overrightarrow}

% Get propper inequality symbols
\renewcommand{\leq}{\leqslant}
\renewcommand{\le}{\leqslant}
\renewcommand{\geq}{\geqslant}
\renewcommand{\ge}{\geqslant}

% Fix the subset/supset symbols
\renewcommand{\subset}{\subseteq}
\renewcommand{\supset}{\supseteq}

% A semantic alternative to \textbf
\newcommand{\strong}[1]{\textbf{#1}}

% Display long arrows instead of short ones
\renewcommand{\to}{\longrightarrow}
\renewcommand{\mapsto}{\longmapsto}
\renewcommand{\hookrightarrow}{\lhook\joinrel\longrightarrow}

% Isomorphism arrow
\newcommand{\isoto}
  {\xlongrightarrow{\smash{\raisebox{-0.65ex}{\ensuremath{\scriptstyle\sim}}}}}

% Fix the goddamn \chi macro!
% For some reason the default LaTeX fonts place this character much lower than
% where people actually expect it to be. This new definition place it in with
% the appropriate spacing
\renewcommand{\chi}{\ensuremath \raisebox{\depth}{$\mathchar"11F$}}

% MCGs of a surface
\DeclareMathOperator{\Mod}{Mod}
\DeclareMathOperator{\PMod}{PMod}
\DeclareMathOperator{\SMod}{SMod}

% Group of homeomorphisms
\DeclareMathOperator{\Homeo}{Homeo}
\DeclareMathOperator{\SHomeo}{SHomeo}

% General linear group
\DeclareMathOperator{\GL}{GL}
\DeclareMathOperator{\PGL}{PGL}

% Group Abelianization
\newcommand{\ab}{{\operatorname{ab}}}

% Group action symbol
\newcommand{\leftaction}{\,\rotatebox[origin=c]{-90}{$\circlearrowleft$}\,}
\newcommand{\rightaction}{\,\rotatebox[origin=c]{90}{$\circlearrowright$}\,}

% Quotient object
\newcommand{\mfrac}[2]{\mathlarger{\mathlarger{\sfrac{#1}{#2}}}}

% A normal subobject in a pointed cathegory
\newcommand{\normal}{\triangleleft}

% Useful category definitions
\newcommand{\Cob}{\mathbf{Cob}_3^+}
\newcommand{\Vect}{\mathbf{Vect}(\mathbb{C})}
efinitions
\newcommand{\Cob}{\mathbf{Cob}_3^+}
\newcommand{\Vect}{\mathbf{Vect}(\mathbb{C})}
g
\renewcommand{\chi}{\ensuremath \raisebox{\depth}{$\mathchar"11F$}}

% MCGs of a surface
\DeclareMathOperator{\Mod}{Mod}
\DeclareMathOperator{\PMod}{PMod}
\DeclareMathOperator{\SMod}{SMod}

% Group of homeomorphisms
\DeclareMathOperator{\Homeo}{Homeo}
\DeclareMathOperator{\SHomeo}{SHomeo}

% General linear group
\DeclareMathOperator{\GL}{GL}

% Group Abelianization
\newcommand{\ab}{{\operatorname{ab}}}

% Group action symbol
\newcommand{\actson}{\,\rotatebox[origin=c]{-90}{$\circlearrowleft$}\,}

% Quotient object
\newcommand{\mfrac}[2]{\mathlarger{\sfrac{#1}{#2}}}

% A normal subobject in a pointed cathegory
\newcommand{\normal}{\triangleleft}
