\usepackage{fullpage}
\usepackage{color}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{amsthm}
\usepackage{latexsym}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{ifthen}
\newcommand{\newfontobj}[2]{
  \newcommand{#1}[1]{
    \expandafter\def\csname##1\endcsname{{#2 ##1}}}}

\newfontobj{\class}{\rm} % Typeset Classes in roman font

% Some standard classes (use in only mathmode)
% Usage example: $\P \subseteq \NP$ and we believe that $\NP$ is not
%  equal to $\P$.


\class{PSPACE}
\class{L}
\class{BPL}
\class{RL}
\class{NC}
\class{ZPL}
\class{NPSPACE}
\class{ASPACE}
\class{NL}
\class{EXP}
\class{NEXP}
\class{coNEXP}
\class{NE}
\class{E}
\class{AM}
\class{MA}
\class{NP}
\class{DNP}
\class{UP}
\class{P}
\class{RP}
\class{BPP}
\class{ZPP}
\class{EXPSPACE}
\class{coNP}
\class{coRP}
\class{coAM}
\class{PH}
\class{IP}
\class{PCP}
\class{MIP}

% operator classes.
\class{BP}

% these commands should be used in math mode - $ $

\newcommand{\SHARPP}{{\#\rm{P}}}
\newcommand{\PARITYP}{{\oplus\rm{P}}}

% math operators...
\DeclareMathOperator{\poly}{poly}
\DeclareMathOperator{\Majority}{Majority}
\DeclareMathOperator{\quasipoly}{quasi-poly}
\DeclareMathOperator{\polylog}{poly-log}
\DeclareMathOperator{\superpoly}{super-poly}
\DeclareMathOperator{\DTISP}{DTISP}
\DeclareMathOperator{\DSPACE}{DSPACE}
\DeclareMathOperator{\DTIME}{DTIME}
\DeclareMathOperator{\NSPACE}{NSPACE}
\DeclareMathOperator{\NTIME}{NTIME}
\DeclareMathOperator{\BPTIME}{BPTIME}
\DeclareMathOperator{\RTIME}{RTIME}
\DeclareMathOperator{\ZPTIME}{ZPTIME}
\DeclareMathOperator{\BPSPACE}{BPSPACE}
\DeclareMathOperator{\RSPACE}{RSPACE}
\DeclareMathOperator{\ZPSPACE}{ZPSPACE}


% Complexity class
\newcommand{\CC}{\mathcal{C}}

% Quantum commands: Thanks to Todd Miller
% Modified on 09Sep2010 by John Gamble. Included the Qcircuit
% package; ket&bra commands are already defined there, so
% should remain commented out. Also fixed a bug in ketbra.
\input{Qcircuit.tex}
%\newcommand{\ket}[1]{\ensuremath{\left| #1 \right\rangle}}
%\newcommand{\bra}[1]{\ensuremath{\left\langle #1 \right|}}
\newcommand{\ketbra}[2]{\ensuremath{\left\langle #1 | #2 \right\rangle}}
\newcommand{\twonorm}[1]{\ensuremath{\| #1 \|_2}}

% Modified on 25Oct2010 by Dalibor Zeleny. Added a command for the trace of
%   a matrix so that the letters Tr aren't slanted. The command also has
%   an optional subscript option that is used in quantum communication.
\newcommand{\Tr}[2][]{\ensuremath{\textrm{Tr}\ifthenelse{\equal{#1}{}}{}{_{#1}}\left(#2\right)}}

% \lecture{number}{date}{title}{scribe}
\newcommand{\lecture}[4]{
\noindent
\fbox{
\begin{minipage}{6.2in}
  {\bf CS 880: Quantum Information Processing} \hfill #2
  \begin{center}
    {\Large Lecture #1: #3} \\[3mm]
  \end{center}
Instructor: Dieter van Melkebeek \hfill Scribe: #4
\end{minipage}
}
\bigskip

\bigskip
}

% add DRAFT to your document %
\newcommand{\draft}[0]{
\begin{center}
	{\bf \Large {\sc DRAFT} }
\end{center}
}

% example environment
\newenvironment{example}
{\smallskip \noindent \emph{Example:}}
{\hfill $\boxtimes$ \smallskip}

% some theorem environments
\newtheorem{conjecture}{Conjecture}
\newtheorem{theorem}{Theorem}
\newtheorem{proposition}{Proposition}
\newtheorem{claim}{Claim}
\newtheorem{lemma}{Lemma}
\newtheorem{corollary}{Corollary}
\newtheorem{definition}{Definition} % Use this for non-trivial
	% definitions.

% currently not used %
\newtheorem{exercise}{Exercise}
\newtheoremstyle{example}{\topsep}{\topsep}%
     {\normalfont \small}   % Body font
     {}    % Indent amount (empty = no indent, \parindent = para indent)
     {\bfseries}     % Thm head font
     {}%           Punctuation after thm head
     {\topsep}%     Space after thm head
     {}%         Thm head spec    \theoremstyle{example}
\theoremstyle{example}
%\newtheorem{example}{Example}

