%\ProvidesPackage{researchpack}

% =============================================================================
% PACKAGES
% =============================================================================

% Fonts & Math
\RequirePackage{amsmath,amssymb,amsfonts,amsthm}
\RequirePackage{bm}
\RequirePackage{bbm}
%\RequirePackage{mathrsfs}
%\RequirePackage[cal=boondoxo]{mathalfa}
%\RequirePackage{fontspec}
%\RequirePackage{ulem}
\usepackage{stmaryrd} % double square brackets

%\newfontfamily\DejaSans{DejaVu Sans}

% Hyperlinks
%\RequirePackage{hyperref}

% Pictures
\RequirePackage{graphicx}

% Algorithms
% \RequirePackage{algorithm}
% \RequirePackage[noend]{algpseudocode}

% Trees and graphs
%\RequirePackage{tikz}
%\RequirePackage{tikz-qtree}
%\RequirePackage{tkz-graph}

% Fixme items
%\RequirePackage[draft]{fixme}

% =============================================================================
% THEOREM ENVIRONMENTS
% =============================================================================

% \theoremstyle{plain}
% \newtheorem{thm}{Theorem}
% \newtheorem{lem}{Lemma}
% \newtheorem{prop}{Proposition}
% \newtheorem{cor}{Corollary}
% \newtheorem*{example}{Example}

% \theoremstyle{definition}
% \newtheorem*{defn}{Definition}

% \theoremstyle{remark}
% \newtheorem*{remark}{Remark}
% \newtheorem*{note}{Note}

% =============================================================================
% ALGORITHMIC CONFIGURATION
% =============================================================================

%\algrenewcommand{\algorithmicrequire}{\textbf{Input:}}
%\algrenewcommand{\algorithmicensure}{\textbf{Output:}}

% =============================================================================
% SHORTCUTS
% =============================================================================

% Use `\[' and `\]' for numbered equations
\renewcommand\[{\begin{equation}}
\renewcommand\]{\end{equation}}

% Override the standard emptyset symbol, it looks awful
\let\oldemptyset\emptyset
\let\emptyset\varnothing

% Bold math symbols
\newcommand{\bbA}{\mathbb{A}}
\newcommand{\bbB}{\mathbb{B}}
\newcommand{\bbC}{\mathbb{C}}
\newcommand{\bbD}{\mathbb{D}}
\newcommand{\bbE}{\mathbb{E}}
\newcommand{\bbF}{\mathbb{F}}
\newcommand{\bbG}{\mathbb{G}}
\newcommand{\bbH}{\mathbb{H}}
\newcommand{\bbI}{\mathbb{I}}
\newcommand{\bbJ}{\mathbb{J}}
\newcommand{\bbK}{\mathbb{K}}
\newcommand{\bbL}{\mathbb{L}}
\newcommand{\bbM}{\mathbb{M}}
\newcommand{\bbN}{\mathbb{N}}
\newcommand{\bbO}{\mathbb{O}}
\newcommand{\bbP}{\mathbb{P}}
\newcommand{\bbQ}{\mathbb{Q}}
\newcommand{\bbR}{\mathbb{R}}
\newcommand{\bbS}{\mathbb{S}}
\newcommand{\bbT}{\mathbb{T}}
\newcommand{\bbU}{\mathbb{U}}
\newcommand{\bbV}{\mathbb{V}}
\newcommand{\bbW}{\mathbb{W}}
\newcommand{\bbX}{\mathbb{X}}
\newcommand{\bbY}{\mathbb{Y}}
\newcommand{\bbZ}{\mathbb{Z}}

% Calligraphic math symbols
\newcommand{\calvar}[1]{\ensuremath{\mathcal{#1}}}
\newcommand{\calA}{\calvar{A}}
\newcommand{\calB}{\calvar{B}}
\newcommand{\calC}{\calvar{C}}
\newcommand{\calD}{\calvar{D}}
\newcommand{\calE}{\calvar{E}}
\newcommand{\calF}{\calvar{F}}
\newcommand{\calG}{\calvar{G}}
\newcommand{\calH}{\calvar{H}}
\newcommand{\calI}{\calvar{I}}
\newcommand{\calJ}{\calvar{J}}
\newcommand{\calK}{\calvar{K}}
\newcommand{\calL}{\calvar{L}}
\newcommand{\calM}{\calvar{M}}
\newcommand{\calN}{\calvar{N}}
\newcommand{\calO}{\calvar{O}}
\newcommand{\calP}{\calvar{P}}
\newcommand{\calQ}{\calvar{Q}}
\newcommand{\calR}{\calvar{R}}
\newcommand{\calS}{\calvar{S}}
\newcommand{\calT}{\calvar{T}}
\newcommand{\calU}{\calvar{U}}
\newcommand{\calV}{\calvar{V}}
\newcommand{\calW}{\calvar{W}}
\newcommand{\calX}{\calvar{X}}
\newcommand{\calY}{\calvar{Y}}
\newcommand{\calZ}{\calvar{Z}}

% Frak math symbols
\newcommand{\fkA}{\mathfrak{A}}
\newcommand{\fkB}{\mathfrak{B}}
\newcommand{\fkC}{\mathfrak{C}}
\newcommand{\fkD}{\mathfrak{D}}
\newcommand{\fkE}{\mathfrak{E}}
\newcommand{\fkF}{\mathfrak{F}}
\newcommand{\fkG}{\mathfrak{G}}
\newcommand{\fkH}{\mathfrak{H}}
\newcommand{\fkI}{\mathfrak{I}}
\newcommand{\fkJ}{\mathfrak{J}}
\newcommand{\fkK}{\mathfrak{K}}
\newcommand{\fkL}{\mathfrak{L}}
\newcommand{\fkM}{\mathfrak{M}}
\newcommand{\fkN}{\mathfrak{N}}
\newcommand{\fkO}{\mathfrak{O}}
\newcommand{\fkP}{\mathfrak{P}}
\newcommand{\fkQ}{\mathfrak{Q}}
\newcommand{\fkR}{\mathfrak{R}}
\newcommand{\fkS}{\mathfrak{S}}
\newcommand{\fkT}{\mathfrak{T}}
\newcommand{\fkU}{\mathfrak{U}}
\newcommand{\fkV}{\mathfrak{V}}
\newcommand{\fkW}{\mathfrak{W}}
\newcommand{\fkX}{\mathfrak{X}}
\newcommand{\fkY}{\mathfrak{Y}}
\newcommand{\fkZ}{\mathfrak{Z}}

% Vectors
\newcommand{\vecvar}[1]{\ensuremath{\bm{\mathrm{#1}}}}
\newcommand{\va}{\vecvar{a}}
\newcommand{\vb}{\vecvar{b}}
\newcommand{\vc}{\vecvar{c}}
\newcommand{\vd}{\vecvar{d}}
\newcommand{\ve}{\vecvar{e}}
\newcommand{\vf}{\vecvar{f}}
\newcommand{\vg}{\vecvar{g}}
\newcommand{\vh}{\vecvar{h}}
\newcommand{\vi}{\vecvar{i}}
\newcommand{\vj}{\vecvar{j}}
\newcommand{\vk}{\vecvar{k}}
\newcommand{\vl}{\vecvar{l}}
\newcommand{\vm}{\vecvar{m}}
\newcommand{\vn}{\vecvar{n}}
\newcommand{\vo}{\vecvar{o}}
\newcommand{\vp}{\vecvar{p}}
\newcommand{\vq}{\vecvar{q}}
\newcommand{\vr}{\vecvar{r}}
\newcommand{\vs}{\vecvar{s}}
\newcommand{\vt}{\vecvar{t}}
\newcommand{\vu}{\vecvar{u}}
\newcommand{\vv}{\vecvar{v}}
\newcommand{\vw}{\vecvar{w}}
\newcommand{\vx}{\boldsymbol{x}}
\newcommand{\vy}{\boldsymbol{y}}
\newcommand{\vz}{\boldsymbol{z}}

\newcommand{\vA}{\vecvar{A}}
\newcommand{\vB}{\vecvar{B}}
\newcommand{\vC}{\vecvar{C}}
\newcommand{\vD}{\vecvar{D}}
\newcommand{\vE}{\vecvar{E}}
\newcommand{\vF}{\vecvar{F}}
\newcommand{\vG}{\vecvar{G}}
\newcommand{\vH}{\vecvar{H}}
\newcommand{\vI}{\vecvar{I}}
\newcommand{\vJ}{\vecvar{J}}
\newcommand{\vK}{\vecvar{K}}
\newcommand{\vL}{\vecvar{L}}
\newcommand{\vM}{\vecvar{M}}
\newcommand{\vN}{\vecvar{N}}
\newcommand{\vO}{\vecvar{O}}
\newcommand{\vP}{\vecvar{P}}
\newcommand{\vQ}{\vecvar{Q}}
\newcommand{\vR}{\vecvar{R}}
\newcommand{\vS}{\vecvar{S}}
\newcommand{\vT}{\vecvar{T}}
\newcommand{\vU}{\vecvar{U}}
\newcommand{\vV}{\vecvar{V}}
\newcommand{\vW}{\vecvar{W}}
\newcommand{\vX}{\vecvar{X}}
\newcommand{\vY}{\vecvar{Y}}
\newcommand{\vZ}{\vecvar{Z}}

\newcommand{\valpha}{\vecvar{\alpha}}
\newcommand{\vbeta}{\vecvar{\beta}}
\newcommand{\vgamma}{\vecvar{\gamma}}
\newcommand{\vdelta}{\vecvar{\delta}}
\newcommand{\vepsilon}{\vecvar{\varepsilon}}
\newcommand{\veta}{\vecvar{\eta}}
\newcommand{\vtheta}{\vecvar{\theta}}
\newcommand{\viota}{\vecvar{\iota}}
\newcommand{\vkappa}{\vecvar{\kappa}}
\newcommand{\vlambda}{\vecvar{\lambda}}
\newcommand{\vmu}{\vecvar{\mu}}
\newcommand{\vnu}{\vecvar{\nu}}
\newcommand{\vxi}{\vecvar{\xi}}
\newcommand{\vpi}{\vecvar{\i}}
\newcommand{\vsigma}{\vecvar{\sigma}}
\newcommand{\vtau}{\vecvar{\tau}}
\newcommand{\vupsilon}{\vecvar{\upsilon}}
\newcommand{\vphi}{\vecvar{\phi}}
\newcommand{\vchi}{\vecvar{\chi}}
\newcommand{\vpsi}{\vecvar{\psi}}
\newcommand{\vomega}{\vecvar{\omega}}

\newcommand{\vGamma}{\vecvar{\Gamma}}
\newcommand{\vDelta}{\vecvar{\Delta}}
\newcommand{\vTheta}{\vecvar{\Theta}}
\newcommand{\vLambda}{\vecvar{\Lambda}}
\newcommand{\vXi}{\vecvar{\Xi}}
\newcommand{\vPi}{\vecvar{\Pi}}
\newcommand{\vSigma}{\vecvar{\Sigma}}
\newcommand{\vUpsilon}{\vecvar{\Upsilon}}
\newcommand{\vPhi}{\vecvar{\Phi}}
\newcommand{\vPsi}{\vecvar{\Psi}}
\newcommand{\vOmega}{\vecvar{\Omega}}


% Operators
\DeclareMathOperator*{\argmax}{argmax}
\DeclareMathOperator*{\argmin}{argmin}
\DeclareMathOperator*{\argsort}{argsort}

% Combinatorics
\newcommand{\ffact}[2]{\ensuremath{{#1}^{\underline{#2}}}}
\newcommand{\rfact}[2]{\ensuremath{{#1}^{\overline{#2}}}}

% Algebra
\newcommand{\Ind}[1]{\ensuremath{\mathbbm{1}\!\left\{#1\right\}}}

% Relations
\newcommand{\rel}[1]{\stackrel{#1}{\to}}
\DeclareMathOperator{\isom}{\equiv}
\DeclareMathOperator{\bisim}{\sim}
\newcommand{\bisimk}[1]{\stackrel{#1}{\;\bisim\;}}
\DeclareMathOperator{\ssim}{\precsim}

\newcommand{\liff}{\Leftrightarrow}

%\newcommand{\norm}[1]{\lVert#1\rVert}
\newcommand{\inner}[2]{\langle #1, #2 \rangle}