\ProvidesPackage{packages/macros}

\RequirePackage{amsfonts}                                % Include missing symbols s.a "Natural Numbers"

\usepackage{amssymb}  % for '\blacksquare' macro
\usepackage{amsthm}   % for 'proof' environment
\usepackage{mathtools}

% Snippet to add dots to TOC
% Thanks to "user11232" at https://tex.stackexchange.com/questions/53898/how-to-get-lines-with-dots-in-the-table-of-contents-for-sections
%\usepackage{tocloft}
%\renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} % for parts
%\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} % for sections

\newcommand{\N}{\mathbb{N}}			% Natural numbers symbol
\newcommand{\Z}{\mathbb{Z}}			% Integer symbol
\newcommand{\Q}{\mathbb{Q}}			% Rational numbers symbol
\newcommand{\R}{\mathbb{R}}			% Real numbers symbol
\newcommand{\C}{\mathbb{C}}			% Complex numbers symbol
\newcommand{\Cat}{\mathcal{C}}			% Category
\newcommand{\Set}{\mathbf{Set}}			% Set category
\newcommand{\K}{\mathbb{K}}			% Corps
\newcommand{\Hq}{\mathbb{H}}			% Quaternions numbers symbol
\newcommand{\Ot}{\mathbb{O}}			% Octonions numbers symbol
\newcommand{\Se}{\mathbb{S}}			% Sedenions numbers symbol
\newcommand{\Pn}{\mathbb{P}}			% Sets of all the prime numbers
\newcommand{\B}{\mathbf{B}}			% Topological Ball
\newcommand{\false}{F}				% New symbol for false value
\newcommand{\true}{V}				% New symbol for true value
\DeclareMathOperator{\Rel}{\mathcal{R}}		% New symbol for binary relations
\DeclareMathOperator{\composes}{\circ}		% New symbol composing morphisms
\DeclarePairedDelimiter{\abs}{|}{|}
\DeclarePairedDelimiter{\card}{|}{|}
\DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor}
\DeclarePairedDelimiter{\ceil}{\lceil}{\rceil}
\DeclarePairedDelimiter{\fractional}{\{}{\}}
\newtheorem{definition}{\lang{Définition}{Definition}}
\newtheorem{theorem}{\lang{Théorème}{Theoreme}}
\newtheorem{lemme}{Lemme}
\newcommandx{\suite}[3][1=n,2=n]{$(#3_{#1})_{#2 \in \N}$}
\newcommand{\innerproduct}[2]{\langle #1, #2 \rangle}
\newenvironment{definition_sq}{\begin{mdframed}\begin{definition}}{\end{definition}\end{mdframed}}
\newenvironment{theorem_sq}{\begin{mdframed}\begin{theorem}}{\end{theorem}\end{mdframed}}
\newenvironment{lemme_sq}{\begin{mdframed}\begin{lemme}}{\end{lemme}\end{mdframed}}
\newtheorem{prop}{Proposition}
\newenvironment{prop_sq}{\begin{mdframed}\begin{prop}}{\end{prop}\end{mdframed}}
\newtheorem{corollary}{Corollaire}
\newenvironment{corollary_sq}{\begin{mdframed}\begin{corollary}}{\end{corollary}\end{mdframed}}
\newcommand{\norm}[1]{\lVert#1\rVert}
\newcommand{\Norm}[1]{\lVert #1\rVert}
\newcommand{\powerset}[1]{\mathcal{P}(#1)} % Power set
\newcommand{\converges}{\rightarrow}
\newcommand{\equivalence}{\Leftrightarrow}
\renewcommand{\implies}{\Longrightarrow}
\newcommand{\Limplies}{\Longleftarrow}
\newcommand{\impliespart}{\fbox{$\implies$}}
\newcommand{\Limpliespart}{\fbox{$\Limplies$}}
\newcommand{\subseteqpart}{\fbox{$\subseteq$}}
\newcommand{\Lsubseteqpart}{\fbox{$\supseteq$}}
\DeclareMathOperator{\divides}{\mid}
\DeclareMathOperator{\suchas}{\text{\lang{tel que}{such as}}}
\renewcommand{\function}[3]{#1 \colon #2 \longrightarrow #3}
\newcommand{\functiondef}[2]{\hspace{15pt}#1 \longmapsto #2}
\newcommand{\otherwise}{\text{\lang{Sinon}{Otherwise}}}
\DeclareMathOperator{\union}{\cup}
\DeclareMathOperator{\Union}{\bigcup}
\DeclareMathOperator{\intersection}{\cap}
\DeclareMathOperator{\Intersection}{\bigcap}
\DeclareMathOperator{\cartesianProduct}{\times}
\DeclareMathOperator{\CartesianProduct}{\bigtimes}
\newcommand{\discreteInterval}[1]{[\![#1]\!]}
\newcommand{\closure}[1]{\overline{#1}}

\renewcommand{\smallskip}{\vspace{3pt}}
\renewcommand{\medskip}{\vspace{6pt}}
\renewcommand{\bigskip}{\vspace{12pt}}