\usepackage{amsmath, amssymb, amsthm, mathtools}

\newtheorem{theorem}{Theorem}
\newtheorem{definition}{Definition}
\newtheorem{assumption}{Assumption}
\newtheorem{corollary}{Corollary}
\newtheorem{lemma}{Lemma}
\newtheorem{example}{Example}
\newtheorem{proposition}{Proposition}
\newtheorem{claim}{Claim}
\newtheorem{conjecture}{Conjecture}
\newtheorem*{remark}{Remark}
\usepackage{natbib}
\usepackage{graphicx}
%\usepackage[backref,colorlinks,citecolor=blue,bookmarks=true]{hyperref}
%\usepackage{cleveref}
\usepackage{subcaption}
\usepackage{multirow}
\usepackage{framed}
%\usepackage{algorithm, algpseudocode}
%\usepackage{todonotes}
\usepackage{algorithm, algorithmic}
%\usepackage{algorithm2e}

%mathematical operators
\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
\newcommand\inner[2]{\left\langle #1, #2 \right\rangle}
\newcommand\ess[0]{\text{ess}}


%vectors
\renewcommand\a[0]{\boldsymbol{a}}
\renewcommand\b[0]{\boldsymbol{b}}
\renewcommand\c[0]{\boldsymbol{c}}
\renewcommand\d[0]{\boldsymbol{d}}
\newcommand\e[0]{\boldsymbol{e}}
\newcommand\f[0]{\boldsymbol{f}}
\newcommand\g[0]{\boldsymbol{g}}
\newcommand\h[0]{\boldsymbol{h}}
\renewcommand\i[0]{\boldsymbol{i}}
\renewcommand\j[0]{\boldsymbol{j}}
\renewcommand\k[0]{\boldsymbol{k}}
\renewcommand\l[0]{\boldsymbol{l}}
\newcommand\m[0]{\boldsymbol{m}}
\newcommand\n[0]{\boldsymbol{n}}
\renewcommand\o[0]{\boldsymbol{o}}
\newcommand\p[0]{\boldsymbol{p}}
\newcommand\q[0]{\boldsymbol{q}}
\renewcommand\r[0]{\boldsymbol{r}}
\newcommand\s[0]{\boldsymbol{s}}
\renewcommand\t[0]{\boldsymbol{t}}
\renewcommand\u[0]{\boldsymbol{u}}
\renewcommand\v[0]{\boldsymbol{v}}
\newcommand\w[0]{\boldsymbol{w}}
\newcommand\x[0]{\boldsymbol{x}}
\newcommand\y[0]{\boldsymbol{y}}
\newcommand\z[0]{\boldsymbol{z}}

%bold letters
\renewcommand\aa[0]{\mathbb{A}}
\newcommand\bb[0]{\mathbb{B}}
\newcommand\cc[0]{\mathbb{C}}
\newcommand\dd[0]{\mathbb{D}}
\newcommand\ee[0]{\mathbb{E}}
\newcommand\ff[0]{\mathbb{F}}
\renewcommand\gg[0]{\mathbb{G}}
\newcommand\hh[0]{\mathbb{H}}
\newcommand\ii[0]{\mathbb{I}}
\newcommand\jj[0]{\mathbb{J}}
\newcommand\kk[0]{\mathbb{K}}
\renewcommand\ll[0]{\mathbb{L}}
\newcommand\mm[0]{\mathbb{M}}
\newcommand\nn[0]{\mathbb{N}}
\newcommand\oo[0]{\mathbb{O}}
\newcommand\pp[0]{\mathbb{P}}
\newcommand\qq[0]{\mathbb{Q}}
\renewcommand\rr[0]{\mathbb{R}}
\renewcommand\ss[0]{\mathbb{S}}
\renewcommand\tt[0]{\mathbb{T}}
\newcommand\uu[0]{\mathbb{U}}
\renewcommand\vv[0]{\mathbb{V}}
\newcommand\ww[0]{\mathbb{W}}
\newcommand\xx[0]{\mathbb{X}}
\newcommand\yy[0]{\mathbb{Y}}
\newcommand\zz[0]{\mathbb{Z}}

%cursive letters
\newcommand\aaa[0]{\mathcal{A}}
\newcommand\bbb[0]{\mathcal{B}}
\newcommand\ccc[0]{\mathcal{C}}
\newcommand\ddd[0]{\mathcal{D}}
\newcommand\eee[0]{\mathcal{E}}
\newcommand\fff[0]{\mathcal{F}}
\renewcommand\ggg[0]{\mathcal{G}}
\newcommand\hhh[0]{\mathcal{H}}
\newcommand\iii[0]{\mathcal{I}}
\newcommand\jjj[0]{\mathcal{J}}
\newcommand\kkk[0]{\mathcal{K}}
\renewcommand\lll[0]{\mathcal{L}}
\newcommand\mmm[0]{\mathcal{M}}
\newcommand\nnn[0]{\mathcal{N}}
\newcommand\ooo[0]{\mathcal{O}}
\newcommand\ppp[0]{\mathcal{P}}
\newcommand\qqq[0]{\mathcal{Q}}
\newcommand\rrr[0]{\mathcal{R}}
\newcommand\sss[0]{\mathcal{S}}
\newcommand\ttt[0]{\mathcal{T}}
\newcommand\uuu[0]{\mathcal{U}}
\newcommand\vvv[0]{\mathcal{V}}
\newcommand\www[0]{\mathcal{W}}
\newcommand\xxx[0]{\mathcal{X}}
\newcommand\yyy[0]{\mathcal{Y}}
\newcommand\zzz[0]{\mathcal{Z}}
\newcommand\gp[0]{\mathcal{G}\mathcal{P}}

\newcommand\opt[0]{\x^\star}

%brackets
\renewcommand\rb[1]{\left(#1\right)}
\renewcommand\sb[1]{\left[#1\right]}
\newcommand\cb[1]{\left\{#1\right\}}

\newcommand\Exp[0]{\mathbb{E}}

\usepackage[makeroom]{cancel}

\usepackage{xcolor}
\newcommand{\highlight}[1]{%
	\colorbox{yellow!50}{$\displaystyle#1$}}

\usepackage{lipsum}
\newcommand\NoIndent[1]{%
	\begingroup
	\par
	\parshape0
	#1\par
	\endgroup
}

%answer box
\usepackage[most]{tcolorbox}
\newcommand{\ans}[1]{
\NoIndent{\hspace{0.2in}\begin{tcolorbox}[breakable, enhanced, width=1.05\textwidth]
\textbf{Proof:} #1 \qed
\end{tcolorbox}}
}

\newcommand{\idea}[1]{
\NoIndent{\begin{tcolorbox}[breakable, enhanced, width=\textwidth]
\textbf{Future extension:} #1
\end{tcolorbox}}
}

%\newcommand{\box}[1]{
%\NoIndent{\hspace{0.2in}\begin{tcolorbox}[breakable, enhanced, width=1.05\textwidth]
%\textbf{} #1 \qed
%\end{tcolorbox}}

%matrix operations
\newcommand{\tr}[1]{\textrm{tr}\left(#1\right)}
