\DeclareMathOperator{\N}{{\mathbb{N}}}
\DeclareMathOperator{\Q}{{\mathbb{Q}}}
\DeclareMathOperator{\Z}{{\mathbb{Z}}}
\DeclareMathOperator{\R}{{\mathbb{R}}}
\DeclareMathOperator{\C}{{\mathbb{C}}}
\DeclareMathOperator{\F}{{\mathbb{F}}}

\newcommand{\imp}[2]{($#1\Rightarrow#2$)}
\newcommand{\brac}[1]{\ensuremath{\left\langle #1 \right\rangle}} % inner product, etc.
\newcommand{\norm}[1]{\ensuremath{\left\lVert#1\right\rVert}} % norm, #2
\newcommand{\fto}[1]{\ensuremath{\overset{\scriptscriptstyle{#1}}{\longrightarrow}}}
\newcommand{\hto}[0]{\ensuremath{\hookrightarrow}}
 
% Divides, Not Divides
\renewcommand{\div}{\bigm|}
\newcommand{\ndiv}{%
      \mathrel{\mkern.5mu % small adjustment
              % superimpose \nmid to \big|
              \ooalign{\hidewidth$\big|$\hidewidth\cr$\nmid$\cr}%
                }%
            }
\newcommand{\cpl}[1]{\overline{#1}} % complement

% Large cdot
\makeatletter
\newcommand*\bigcdot{\mathpalette\bigcdot@{.5}}
\newcommand*\bigcdot@[2]{\mathbin{\vcenter{\hbox{\scalebox{#2}{$\m@th#1\bullet$}}}}}
\makeatother

% Disjoint Union %
\makeatletter
\providecommand*{\cupdot}{%
  \mathbin{%
    \mathpalette\@cupdot{}%
  }%
}
\newcommand*{\@cupdot}[2]{%
  \ooalign{%
    $\m@th#1\cup$\cr
    \sbox0{$#1\cup$}%
    \dimen@=\ht0 %
    \sbox0{$\m@th#1\cdot$}%
    \advance\dimen@ by -\ht0 %
    \dimen@=.5\dimen@
    \hidewidth\raise\dimen@\box0\hidewidth
  }%
}

\providecommand*{\bigcupdot}{%
  \mathop{%
    \vphantom{\bigcup}%
    \mathpalette\@bigcupdot{}%
  }%
}
\newcommand*{\@bigcupdot}[2]{%
  \ooalign{%
    $\m@th#1\bigcup$\cr
    \sbox0{$#1\bigcup$}%
    \dimen@=\ht0 %
    \advance\dimen@ by -\dp0 %
    \sbox0{\scalebox{2}{$\m@th#1\cdot$}}%
    \advance\dimen@ by -\ht0 %
    \dimen@=.5\dimen@
    \hidewidth\raise\dimen@\box0\hidewidth
  }%
}
\makeatother
