\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-operators}[2021-04-27 - Operator Package]
%%%%%%%%%%%%%%%%%%mmmm
%Provides some commonly used Operators used in the write-ups of my lecture notes


\newif\ifenglish\englishtrue
\DeclareOption{german}{\englishfalse}
\DeclareOption{english}{\englishtrue}
\DeclareOption*{\PackageWarning{mkessler-operators}{Unknown '\CurrentOption'}}
\ProcessOptions\relax

%Packages
\RequirePackage{amsmath}

%%%%%%%%%%% Operators
%Basic commands
\renewcommand\subset\subseteq
\renewcommand\supset\supseteq
\DeclareMathOperator{\id}{id}
\DeclareMathOperator{\im}{im}
\DeclareMathOperator{\Bild}{Bild}
\DeclareMathOperator{\dom}{dom}
\DeclareMathOperator{\Span}{Span}
\DeclareMathOperator{\Aut}{Aut}
\let\ggT\relax\DeclareMathOperator{\ggT}{\ifenglish gcd \else ggT\fi}
\let\kgV\relax\DeclareMathOperator{\kgV}{\ifenglish lcm \elese kgV\fi}
\DeclareMathOperator{\rhs}{RHS} %Right hand side
\DeclareMathOperator{\lhs}{LHS} %Left hand side

%Complex numbers
\DeclareMathOperator{\Impart}{Im}
\renewcommand\Im\Impart
\DeclareMathOperator{\Repart}{Re}
\renewcommand\Re\Repart

%Linear Algebra
\DeclareMathOperator{\Sym}{Sym}
\DeclareMathOperator{\supp}{supp}
\DeclareMathOperator{\sgn}{sgn}
\DeclareMathOperator{\coker}{coker}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\Mat}{Mat}
\DeclareMathOperator{\ev}{ev}

%Algebra
\DeclareMathOperator{\Quot}{Quot}
\DeclareMathOperator{\Gal}{Gal}
\DeclareMathOperator{\Ext}{Ext}
\DeclareMathOperator{\Tor}{Tor}
\DeclareMathOperator{\Mspec}{MaxSpec}
\DeclareMathOperator{\Sh}{Sh}
\DeclareMathOperator{\Proj}{Proj}
\DeclareMathOperator{\QCoh}{QCoh}
\DeclareMathOperator{\MaxSpec}{MaxSpec}
\DeclareMathOperator{\Presh}{Pre-Sh}
\DeclareMathOperator{\Fun}{Fun}
\newcommand{\tensor}{\otimes}

%Analysis
\DeclareMathOperator{\dx}{dx}
\DeclareMathOperator{\dy}{dy}
\DeclareMathOperator{\dz}{dz}
\DeclareMathOperator{\dt}{dt}

%Sets
\DeclareMathOperator{\conv}{conv}
\DeclareMathOperator{\dist}{dist}
\DeclareMathOperator{\diam}{diam}

%%Stochastic (Algorithmische Mathematik II)
\newcommand\distribution[1]{\operatorname{#1}}
\newcommand\DeclareDistribution[1]{\expandafter\def\csname #1\endcsname{\distribution{#1}}}
\DeclareDistribution{Bin}
\DeclareDistribution{Ber}
\DeclareDistribution{Geo}
\DeclareDistribution{Poi}
\DeclareDistribution{Unif}
\DeclareMathOperator{\Var}{Var}
\DeclareMathOperator{\Cov}{Cov}

%Topology
\DeclareMathOperator\pr{pr}
\def\twedge{\vee}
\def\tsmash{\wedge}

%Category Theory
\DeclareMathOperator{\Ob}{Ob}
\newcommand{\cat}[1]{ \mathscr{#1} }
\DeclareMathOperator{\Hom}{Hom}
\DeclareMathOperator{\Mor}{Mor}
\DeclareMathOperator{\End}{End}
\DeclareMathOperator{\opposite}{\textbf{opp}}
\DeclareMathOperator{\abelian}{\textbf{ab}}
\newcommand{\ab}{^{\abelian}}
\newcommand\opp{^{\opposite}}
\newcommand\op{^{\opposite}}

%Categories
\newcommand\category[1]{\operatorname{\textbf{#1}}}
\newcommand\DeclareCategory[1]{\expandafter\def\csname #1\endcsname{\category{#1}}}
\DeclareCategory{Top}
\DeclareCategory{hTop}
\DeclareCategory{Set}
\DeclareCategory{CHaus}
\DeclareCategory{Grp}
\DeclareCategory{Ab}
\DeclareCategory{CRing}
\DeclareCategory{Vect}
\DeclareCategory{Fin}
\DeclareCategory{Ab}
\DeclareCategory{Cat}
\DeclareMathOperator{\colim}{colim}



% Characteristic function
\newcommand*{\cfun}{\ensuremath{\mathbbm{1}}}
\newcommand*{\One}{\ensuremath{\mathbbm{1}}}


%Set theory
\DeclareMathOperator\card{card}
\DeclareMathOperator\Cd{Cd}
\DeclareMathOperator\Ord{Ord}
\DeclareMathOperator\otp{otp}
\DeclareMathOperator\Card{Card}




%%Galoiskohomologie
\DeclareMathOperator{\Br}{Br}
\newcommand{\del}{\partial}
\DeclareMathOperator{\EXT}{EXT}
\DeclareMathOperator{\Ind}{Ind}
\DeclareMathOperator{\Char}{char}
\DeclareMathOperator{\res}{res}
\DeclareMathOperator{\infl}{inf}
