% ----- Theorem-like environments -----
\RequirePackage[capitalize,noabbrev]{cleveref}
\RequirePackage{thmtools}
\RequirePackage{thm-restate}
\declaretheorem[name=Theorem,numberwithin=section]{theorem}
\declaretheorem[sibling=theorem,name=Proposition]{proposition}
\declaretheorem[sibling=theorem,name=Lemma]{lemma}
\declaretheorem[sibling=theorem,name=Corollary]{corollary}
\declaretheorem[sibling=theorem,name=Definition]{definition}
\declaretheorem[sibling=theorem,name=Assumption]{assumption}
\declaretheorem[sibling=theorem,name=Remark]{remark}
\declaretheorem[sibling=theorem,name=Example]{example}
\declaretheorem[sibling=theorem,name=Counterexample]{counterexample}

\crefname{theorem}{Thm.}{Thms.}
\Crefname{theorem}{Theorem}{Theorems}

\crefname{proposition}{Prop.}{Props.}
\Crefname{proposition}{Proposition}{Propositions}

\crefname{lemma}{Lem.}{Lems.}
\Crefname{lemma}{Lemma}{Lemmas}

\crefname{corollary}{Cor.}{Cors.}
\Crefname{corollary}{Corollary}{Corollaries}

\crefname{definition}{Def.}{Defs.}
\Crefname{definition}{Definition}{Definitions}

\crefname{assumption}{Asm.}{Asms.}
\Crefname{assumption}{Assumption}{Assumptions}

\crefname{remark}{Rem.}{Rems.}
\Crefname{remark}{Remark}{Remarks}

\crefname{example}{Ex.}{Exs.}
\Crefname{example}{Example}{Examples}

\crefname{counterexample}{Cex.}{Cexs.}
\Crefname{counterexample}{Counterexample}{Counterexamples}

% ----- Other objects -----
\crefname{section}{\textsection}{\textsection}
\crefname{equation}{Eq.}{Eqs.}
\crefname{figure}{Fig.}{Figs.}
\crefname{algocfline}{Algo.}{Algos.}