\usepackage{amsfonts, amsmath, amsthm}
\usepackage[shortlabels]{enumitem}
\usepackage{environ}
\usepackage{fancybox}
\usepackage{fontawesome5}
\usepackage{mathrsfs}
\usepackage{soul}
\usepackage{xcolor}
% `hyperref` comes after `xr-hyper`.
\usepackage{xr-hyper}
\usepackage{hyperref}

% ========================================
% Linking
% ========================================

\hypersetup{colorlinks=true, urlcolor=blue}
\newcommand{\hyperlabel}[1]{%
  \label{#1}%
  \hypertarget{#1}{}}

% ========================================
% Environments
% ========================================

\newenvironment{axiom}{%
  \paragraph{\normalfont\normalsize\textit{Axiom.}}}
  {\hfill$\square$}
\newcommand{\divider}{%
  \vspace{10pt}
  \hrule
  \vspace{10pt}}
\newcommand{\header}[2]{%
  \title{#1}
  \author{#2}
  \date{}
  \maketitle}
\newcommand{\note}[1]{%
  \begin{center}
    \doublebox{
      \begin{minipage}{0.95\textwidth}
      \vspace{2pt}
      \hl{Note:} #1
      \vspace{2pt}
      \end{minipage}}
  \end{center}}

% Status of a proof. A statement/theorem is verified if both a LaTeX proof
% and a corresponding Lean proof has been written. If a Lean proof is in
% progress, it's in a "proceeding" state. Otherwise it is unverified.
\DeclareRobustCommand{\verified}[1]{%
  \texorpdfstring{\color{teal}\faCheckCircle\ #1}{#1}}
\DeclareRobustCommand{\proceeding}[1]{%
  \texorpdfstring{\color{magenta}\faDotCircle[regular]\ #1}{#1}}
\DeclareRobustCommand{\unverified}[1]{%
  \texorpdfstring{\color{red}\faExclamationCircle\ #1}{#1}}

% ========================================
% Math
% ========================================

\newcommand{\abs}[1]{\left|#1\right|}
\newcommand{\ceil}[1]{\left\lceil#1\right\rceil}
\newcommand{\floor}[1]{\left\lfloor#1\right\rfloor}
\newcommand{\icc}[2]{\left[#1, #2\right]}
\newcommand{\ico}[2]{\left[#1, #2\right)}
\newcommand{\ioc}[2]{\left(#1, #2\right]}
\newcommand{\ioo}[2]{\left(#1, #2\right)}
