\usepackage{amsfonts, amsmath, amssymb, amsthm} \usepackage{bigfoot} \usepackage{colortbl} \usepackage{comment} \usepackage[shortlabels]{enumitem} \usepackage{etoolbox} \usepackage{environ} \usepackage{fontawesome5} \usepackage{mathabx, mathrsfs} \usepackage{soul} \usepackage{stmaryrd} % Must load `xcolor` before `tcolorbox` and `tikz`. \usepackage[dvipsnames]{xcolor} \usepackage{tcolorbox} \usepackage{tikz} % `hyperref` comes after `xr-hyper`. \usepackage{xr-hyper} \usepackage{hyperref} % Open "private" namespace. \makeatletter % ======================================== % General % ======================================== \newcommand{\header}[2]{\title{#1}\author{#2}\date{}\maketitle} % ======================================== % Dividers % ======================================== \newcommand\@linespace{\vspace{10pt}} \newcommand\linedivider{\@linespace\hrule\@linespace} \WithSuffix\newcommand\linedivider*{\@linespace\hrule} \newcommand\suitdivider{$$\spadesuit\;\spadesuit\;\spadesuit$$} % ======================================== % Linking % ======================================== \hypersetup{colorlinks=true, linkcolor=blue, urlcolor=blue} \newcommand{\textref}[1]{\text{\nameref{#1}}} \newcommand{\hyperlabel}[1]{% \label{#1}% \hypertarget{#1}{}} % Links to theorems/statements/etc. that can be found in Mathlib4's index. \newcommand\@leanlink[3]{% \textcolor{BlueViolet}{\raisebox{-4.5pt}{% \tikz{\draw (0, 0) node[yscale=-1,xscale=1] {\faFont};}}{-\;}}% \href{https://leanprover-community.github.io/mathlib4_docs/#1.html\##2}% {\color{BlueViolet}{#3}}} \newcommand\lean[2]{% \noindent\@leanlink{#1}{#2}{#2}} \WithSuffix\newcommand\lean*[2]{% \vspace{6pt}\lean{#1}{#2}} \newcommand\leanp[3]{% \noindent\@leanlink{#1}{#2}{#3}} \WithSuffix\newcommand\leanp*[3]{% \vspace{6pt}\leanp{#1}{#2}{#3}} % Links to theorems/statements/etc. found in custom index. \newcommand\@codelink[4]{% \textcolor{MidnightBlue}{\raisebox{-4.5pt}{% \tikz{\draw (0, 0) node[xshift=8pt] {\faCodeBranch};}}{-\;}}% \href{#1/#2.html\##3}% {\color{MidnightBlue}{#4}}} \newcommand\coderef[3]{% \@codelink{#1}{#2}{#3}{#3}} \newcommand\codepref[4]{% \@codelink{#1}{#2}{#3}{#4}} % Macro to build our `code` commands relative to a given directory. For % instance, we expect to have invocation `\makecode{..}` if the TeX file exists % one directory deep from the root of our project.. \newcommand\makecode[1]{% \newcommand\code[2]{% \noindent\coderef{#1}{##1}{##2}} \WithSuffix\newcommand\code*[2]{% \vspace{6pt}\noindent\coderef{#1}{##1}{##2}} \newcommand\codep[3]{% \noindent\codepref{#1}{##1}{##2}{##3}} \WithSuffix\newcommand\codep*[3]{% \vspace{6pt}\noindent\codepref{#1}{##1}{##2}{##3}} } % ======================================== % Admonitions % ======================================== \NewEnviron{induction}[1][]{% \def\title{\ifstrempty{#1} {Induction Hypothesis (IH)} {#1}} \begin{tcolorbox}[title=\title] \BODY \end{tcolorbox}} \newcommand{\ihref}[1]{\hyperref[#1]{(IH)}} \NewEnviron{note}{% \begin{tcolorbox}[% sharp corners, fonttitle=\sffamily\bfseries, toptitle=2pt, bottomtitle=2pt, coltitle=black!80!white, colback=yellow!30, colframe=yellow!80!black, title=Note] \BODY \end{tcolorbox}} % ======================================== % Statements % ======================================== \newcommand\@statement[1]{% \linedivider*\paragraph{\normalfont\normalsize\textit{#1.}}} \newenvironment{answer}{\@statement{Answer}}{\hfill$\square$} \renewenvironment{proof}{\@statement{Proof}}{\hfill$\square$} \newtheorem{corollaryinner}{Corollary} \newenvironment{corollary}[1][]{% \ifstrempty{#1} {\corollaryinner} {\renewcommand\thecorollaryinner{#1}\corollaryinner} }{\endcorollaryinner} \newtheorem{lemmainner}{Lemma} \newenvironment{lemma}[1][]{% \ifstrempty{#1} {\lemmainner} {\renewcommand\thelemmainner{#1}\lemmainner} }{\endlemmainner} \newtheorem{theoreminner}{Theorem} \newenvironment{theorem}[1][]{% \ifstrempty{#1} {\theoreminner} {\renewcommand\thetheoreminner{#1}\theoreminner} }{\endtheoreminner} % ======================================== % Status % ======================================== \DeclareRobustCommand{\defined}[1]{% \texorpdfstring{\color{darkgray}\faParagraph\ #1}{#1}} \DeclareRobustCommand{\verified}[1]{% \texorpdfstring{\color{teal}\faCheckCircle\ #1}{#1}} \DeclareRobustCommand{\unverified}[1]{% \texorpdfstring{\color{olive}\faCheckCircle[regular]\ #1}{#1}} \DeclareRobustCommand{\pending}[1]{% \texorpdfstring{\color{Fuchsia}\faPencil*\ #1}{#1}} \DeclareRobustCommand{\sorry}[1]{% \texorpdfstring{\color{Maroon}\faExclamationCircle\ #1}{#1}} % ======================================== % Math % ======================================== \newcommand{\abs}[1]{\left|#1\right|} \newcommand{\ceil}[1]{\left\lceil#1\right\rceil} \newcommand{\ctuple}[2]{\left< #1, \cdots, #2 \right>} \newcommand{\dom}[1]{\textop{dom}{#1}} \newcommand{\equinumerous}[2]{#1 \approx #2} \newcommand{\fld}[1]{\textop{fld}{#1}} \newcommand{\floor}[1]{\left\lfloor#1\right\rfloor} \newcommand{\icc}[2]{\left[#1, #2\right]} \newcommand{\ico}[2]{\left[#1, #2\right)} \newcommand{\img}[2]{#1\!\left\llbracket#2\right\rrbracket} \newcommand{\ioc}[2]{\left(#1, #2\right]} \newcommand{\ioo}[2]{\left(#1, #2\right)} \newcommand{\ltuple}[2]{\left< #1, \ldots, #2 \right>} \newcommand{\powerset}[1]{\mathscr{P}#1} \newcommand{\ran}[1]{\textop{ran}{#1}} \newcommand{\textop}[1]{\mathop{\text{#1}}} \newcommand{\tuple}[1]{\left< #1 \right>} \newcommand{\ubar}[1]{\text{\b{$#1$}}} \let\oldemptyset\emptyset \let\emptyset\varnothing % Close off "private" namespace. \makeatother