\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hwsymb}[2024/01/01 hwsymb]

\RequirePackage{amsmath, amssymb, amsthm, amscd}

% new and renewed commands
\DeclareRobustCommand{\bb}[1]{\mathbb{#1}}
\DeclareRobustCommand{\cal}[1]{\mathcal{#1}}
\DeclareRobustCommand{\sc}[1]{\textsc{#1}}
\DeclareMathOperator{\D}{d}
\renewcommand{\qedsymbol}{$_{\scriptstyle \substack{\sc{quod}\\\sc{erat}\\\sc{dem}\scalebox{0.53}{$\blacksquare$}}}$}
% beamer does not define a \labelenumi therefore this can't be renewed.
\def\labelenumi{\theenumi)} % to make (n) into n)

% Symbols
\newcommand*{\eg}{\leavevmode\unskip , e. g., \ignorespaces}
\newcommand*{\ie}{\leavevmode\unskip, i. e., \ignorespaces}
\newcommand{\nil}{\varnothing}
\AtBeginDocument{\def\O{\cal{O}}}% Big Oh
\AtBeginDocument{\def\C{\bb{C}}}% Complex
\newcommand{\R}{\bb{R}}% Reals
\newcommand{\Q}{\bb{Q}}% Rationals
\newcommand{\Z}{\bb{Z}}% Integers
\newcommand{\N}{\bb{N}}% Naturals
\renewcommand{\P}{\bb{P}}% Primes
\newcommand{\F}{\bb{F}}% Field
\newcommand{\GF}[1][2]{\bb{F}_{#1}}% Galois Field
\newcommand{\modulo}[1][n]{\Z/#1\Z}% Modulo class n
\newcommand{\ra}{\rightarrow}
\newcommand{\Ra}{\Rightarrow}
\newcommand{\?}{\stackrel{?}{=}}
\newcommand{\is}{\equiv}
\newcommand{\al}{\alpha}
\newcommand{\ep}{\varepsilon}
\renewcommand{\phi}{\varphi}
\newcommand{\p}{\partial}
\newcommand{\injective}{\hookrightarrow}
\newcommand{\surjective}{\twoheadrightarrow}
\newcommand{\bijective}{\hookrightarrow\mathrel{\mspace{-15mu}}\rightarrow}
\newcommand{\derivative}[2][x]{\frac{\D #2}{\D #1}}
\newcommand{\ceil}[1]{\left\lceil#1\right\rceil}
\newcommand{\floor}[1]{\left\lfloor#1\right\rfloor}
\newcommand{\near}[1]{\left\lfloor#1\right\rceil}
\newcommand{\arr}[1]{\left\langle#1\right\rangle}
\newcommand{\paren}[1]{\left(#1\right)}
\newcommand{\brk}[1]{\left[#1\right]}
\newcommand{\abs}[1]{\left|#1\right|}
\newcommand{\curl}[1]{\left\{#1\right\}}
