%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % complexity - a LaTeX package that defines commands to typeset % Computational Complexity Classes such as $\P$ and $\NP$ (as well % as hundreds of others). It also offers several options including % which font classes are typeset in and how many are defined (all % of them or just the basic, most commonly used ones). % % Written by Chris Bourke % % No dependencies other than the standard ifthen package. % See complexity.pdf for full documentation % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Copyright and license % ===================== % % Copyright (C) 2017 Chris Bourke % % This file may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3c of this license % or (at your option) any later version. The latest version of this % license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3c or later is part of all distributions of LaTeX % version 2008/05/04 or later. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Changes made (.81 -> .81a, 2017/09/16) % -Updated copyright, added LPPL 1.3c % Changes made (.80 -> .81, 2017/09/15) % -Removed \typeout message % -Cleaned up comments % -Added package option (disableredefinitions) to disable redefinitions % of \L, \P, \S for authors that need the originals but cannot use the % replacements. For backwards compatibility, the they are still redefined % by default. Thanks to Enrico Gregorio for the fix. % Changes made (.76 -> .80) % -Added a cool message using \typeout! % -Added \newclass, \newlang, \newfunc commands % -Added \renewclass, \renewlang, \renewfunc % -Added \class that acts like \lang and \func % Changes made (.75 -> .76) % -Fixed a spacing bug that may cause extra spaces when not in math % mode. Thanks to Nicolas Markey % Changes made (.50 -> .75) % -Fixed a few misc. bugs % -Added negative kerning for \BPPpath, \FPTnu, \FPTsu, \QMIPle, \QMIPne, \XPuniform % -Added more {} brackets to all commands using sub/super scripts to ensure % proper behavior when they are used as super/subscripts themselves. % -Raised the hyphen and added kerning for all classes with hyphens adjoining capital % letters % -Made a few new internal commands (\complexity@possiblymakesmaller and % \complexity@fontcommand) to support a new option: small which typesets % classes in inline and display modes a point smaller than the default text % size. Special thanks to Till Tantau for the suggestions and code % -Defined separate commands \lang and \func for languages and function classes with % full options. % -Updated Documentation % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} % \ProvidesPackage{complexity}[09/16/17 \space v0.81a] % Require Packages \RequirePackage{ifthen} % Declare internal commands \newcommand\complexity@possiblymakesmaller[1]{#1} % default: do nothing \newcommand\complexity@fontcommand{\mathsf} % default: do noting \newcommand{\ComplexityFont}[1]{% {\ensuremath{\complexity@possiblymakesmaller{\complexity@fontcommand{#1}}}}%extra {} makes everyone happy. } \newcommand{\lang}[1]{{\ensuremath{\mathsf{#1}}}} \newcommand{\func}[1]{{\ensuremath{\mathsf{#1}}}} \newcommand{\class}[1]{\ComplexityFont{#1}} \newcommand{\newclass}[2]{\newcommand{#1}{\ComplexityFont{#2}}} \newcommand{\newlang}[2]{\newcommand{#1}{\lang{#2}}} \newcommand{\newfunc}[2]{\newcommand{#1}{\func{#2}}} \newcommand{\renewclass}[2]{\renewcommand{#1}{\ComplexityFont{#2}}} \newcommand{\renewlang}[2]{\renewcommand{#1}{\lang{#2}}} \newcommand{\renewfunc}[2]{\renewcommand{#1}{\func{#2}}} \newboolean{complexity@fullmode} % \setboolean{complexity@fullmode}{true} \DeclareOption{full}{% \setboolean{complexity@fullmode}{true}% } % \DeclareOption{basic}{% \setboolean{complexity@fullmode}{false}% } % \newif\ifcomplexity@noredef \DeclareOption{disableredefinitions}{\complexity@noredeftrue} \DeclareOption{sanserif}{ \renewcommand{\complexity@fontcommand}{\mathsf} \renewcommand{\lang}[1]{{\ensuremath{\mathsf{#1}}}} \renewcommand{\func}[1]{{\ensuremath{\mathsf{#1}}}} } \DeclareOption{roman}{ \renewcommand{\complexity@fontcommand}{\mathrm} \renewcommand{\lang}[1]{{\ensuremath{\mathrm{#1}}}} \renewcommand{\func}[1]{{\ensuremath{\mathrm{#1}}}} } \DeclareOption{bold}{ \renewcommand{\complexity@fontcommand}{\mathbf} \renewcommand{\lang}[1]{{\ensuremath{\mathbf{#1}}}} \renewcommand{\func}[1]{{\ensuremath{\mathbf{#1}}}} } \DeclareOption{typewriter}{ \renewcommand{\complexity@fontcommand}{\mathtt} \renewcommand{\lang}[1]{{\ensuremath{\mathtt{#1}}}} \renewcommand{\func}[1]{{\ensuremath{\mathtt{#1}}}} } \DeclareOption{italic}{ \renewcommand{\complexity@fontcommand}{\mathit} \renewcommand{\lang}[1]{{\ensuremath{\mathit{#1}}}} \renewcommand{\func}[1]{{\ensuremath{\mathit{#1}}}} } \DeclareOption{caps}{ \renewcommand{\complexity@fontcommand}{\textsc} \renewcommand{\lang}[1]{{\ensuremath{\textsc{#1}}}} \renewcommand{\func}[1]{{\ensuremath{\textsc{#1}}}} } \DeclareOption{slant}{ \renewcommand{\complexity@fontcommand}{\textsl} \renewcommand{\lang}[1]{{\ensuremath{\textsl{#1}}}} \renewcommand{\func}[1]{{\ensuremath{\textsl{#1}}}} } % Independent classfonts: \DeclareOption{classfont=sanserif}{ \renewcommand{\complexity@fontcommand}{\mathsf} } \DeclareOption{classfont=roman}{ \renewcommand{\complexity@fontcommand}{\mathrm} } \DeclareOption{classfont=bold}{ \renewcommand{\complexity@fontcommand}{\mathbf} } \DeclareOption{classfont=typewriter}{ \renewcommand{\complexity@fontcommand}{\mathtt} } \DeclareOption{classfont=italic}{ \renewcommand{\complexity@fontcommand}{\mathit} } \DeclareOption{classfont=caps}{ \renewcommand{\complexity@fontcommand}{\textsc} } \DeclareOption{classfont=slant}{ \renewcommand{\complexity@fontcommand}{\textsl} } % Independent langfonts: \DeclareOption{langfont=sanserif}{ \renewcommand{\lang}[1]{{\ensuremath{\mathsf{#1}}}} } \DeclareOption{langfont=roman}{ \renewcommand{\lang}[1]{{\ensuremath{\mathrm{#1}}}} } \DeclareOption{langfont=bold}{ \renewcommand{\lang}[1]{{\ensuremath{\mathbf{#1}}}} } \DeclareOption{langfont=typewriter}{ \renewcommand{\lang}[1]{{\ensuremath{\mathtt{#1}}}} } \DeclareOption{langfont=italic}{ \renewcommand{\lang}[1]{{\ensuremath{\mathit{#1}}}} } \DeclareOption{langfont=caps}{ \renewcommand{\lang}[1]{{\ensuremath{\textsc{#1}}}} } \DeclareOption{langfont=slant}{ \renewcommand{\lang}[1]{{\ensuremath{\textsl{#1}}}} } % Independent funcfonts: \DeclareOption{funcfont=sanserif}{ \renewcommand{\func}[1]{{\ensuremath{\mathsf{#1}}}} } \DeclareOption{funcfont=roman}{ \renewcommand{\func}[1]{{\ensuremath{\mathrm{#1}}}} } \DeclareOption{funcfont=bold}{ \renewcommand{\func}[1]{{\ensuremath{\mathbf{#1}}}} } \DeclareOption{funcfont=typewriter}{ \renewcommand{\func}[1]{{\ensuremath{\mathtt{#1}}}} } \DeclareOption{funcfont=italic}{ \renewcommand{\func}[1]{{\ensuremath{\mathit{#1}}}} } \DeclareOption{funcfont=caps}{ \renewcommand{\func}[1]{{\ensuremath{\textsc{#1}}}} } \DeclareOption{funcfont=slant}{ \renewcommand{\func}[1]{{\ensuremath{\textsl{#1}}}} } % Till Tantau's Code for the small option: \DeclareOption{small}{ \newcommand\complexity@reducesize{% \ifx\@currsize\normalsize% \small% \else\ifx\@currsize\small% \footnotesize% \else\ifx\@currsize\large% \normalsize% \fi\fi\fi% } \renewcommand\complexity@possiblymakesmaller[1]{% \mathchoice% {\hbox{\complexity@reducesize$#1$}}% display {\hbox{\complexity@reducesize$#1$}}% normal {#1}%subscript {#1}%subsubscript (I think) } } \DeclareOption*{ \PackageWarning{complexity}{Unknown option `\CurrentOption'. Using default `sanserif', and `full'} % \renewcommand{\ComplexityFont}[1]{{\ensuremath{\mathsf{#1}}}} \renewcommand{\lang}[1]{{\ensuremath{\mathsf{#1}}}} \setboolean{complexity@fullmode}{true} } \ProcessOptions % Define some internal commands % such as a standard kerning value for several commands \newcommand{\complexity@kern}{{\kern-.10em}} \newcommand{\complexity@hyphen}{ % \lower-.12em\hbox{\textrm{-}} % } \newcommand{\complexity@hyphenleft}{\kern-.075em\textrm{-}} \newcommand{\complexity@hyphenright}{\textrm{-}\kern-.05em} % Define some useful commands to append to other classes \newcommand{\co}[1]{\ComplexityFont{co}#1} \newcommand{\parity}{\oplus} % Define some general functions \newcommand{\llog}{\func{log}} \newcommand{\poly}{\func{poly}} \newcommand{\polylog}{\func{polylog}} \newcommand{\qpoly}{\func{qpoly}} \newcommand{\qlog}{\func{qlog}} \newcommand{\MOD}{\func{MOD}} \newcommand{\Mod}{\func{Mod}} % Define Common Sets/Languages \newcommand{\CVP}{\lang{CVP}} \newcommand{\SAT}{\lang{SAT}} \newcommand{\MaxSAT}{\lang{MaxSAT}} % Alternatives for \L, \P, \S if disabled \newcommand{\cL}{\ComplexityFont{L}} \newcommand{\cP}{\ComplexityFont{P}} \newcommand{\cS}{\ComplexityFont{S}} % We redefine 3 commands, but preserve them for usage \let\defaultL\L % for back compatibility \let\defaultP\P % for back compatibility \let\defaultS\S % for back compatibility % Only redefine if not disabled \ifcomplexity@noredef\else \renewcommand{\L}{\ComplexityFont{L}} \renewcommand{\P}{\ComplexityFont{P}} \renewcommand{\S}{\ComplexityFont{S}} \fi % Major Classes listed in Alphabetical order %%%%%%% Standard Classes % A \newcommand{\AC}{\ComplexityFont{AC}} \newcommand{\ACC}{\ComplexityFont{ACC}} \newcommand{\AH}{\ComplexityFont{AH}} \newcommand{\AL}{\ComplexityFont{AL}} \newcommand{\coAM}{\ComplexityFont{coAM}} \newcommand{\AM}{\ComplexityFont{AM}} \newcommand{\AMEXP}{\ComplexityFont{AM\complexity@hyphen EXP}} \newcommand{\AP}{\ComplexityFont{AP}} % B \newcommand{\BH}{\ComplexityFont{BH}} \newcommand{\BPE}{\ComplexityFont{BPE}} \newcommand{\BPEE}{\ComplexityFont{BPEE}} \newcommand{\BPP}{\ComplexityFont{BPP}} \newcommand{\coBPP}{\ComplexityFont{coBPP}} \newcommand{\BPSPACE}{\ComplexityFont{BPSPACE}} \newcommand{\BPTIME}{\ComplexityFont{BPTIME}} \newcommand{\BQP}{\ComplexityFont{BQP}} \newcommand{\BQTIME}{\ComplexityFont{BQTIME}} % C \newcommand{\cc}{\ComplexityFont{cc}} \newcommand{\C}{\ComplexityFont{C}} %This isn't a class, but used for \C_{=}\AnotherClass \newcommand{\CeL}{\ComplexityFont{C}_{=}\ComplexityFont{L}} %C_=L \newcommand{\CeP}{\ComplexityFont{C}_{=}\ComplexityFont{P}} %C_=P \newcommand{\coCeP}{\ComplexityFont{coC}_{=}\ComplexityFont{P}} %C_=P \newcommand{\CFL}{\ComplexityFont{CFL}} \newcommand{\CH}{\ComplexityFont{CH}} \newcommand{\CkP}{\ComplexityFont{C}_{\ComplexityFont{k}}\ComplexityFont{P}} %C_kP \newcommand{\CSIZE}{\ComplexityFont{CSIZE}} % D \newcommand{\DET}{\ComplexityFont{DET}} \newcommand{\DSPACE}{\ComplexityFont{DSPACE}} \newcommand{\DTIME}{\ComplexityFont{DTIME}} \newcommand{\DTISP}{\ComplexityFont{DTISP}} % E \newcommand{\E}{\ComplexityFont{E}} \newcommand{\EE}{\ComplexityFont{EE}} \newcommand{\EESPACE}{\ComplexityFont{EESPACE}} \newcommand{\EEXP}{\ComplexityFont{EEXP}} \newcommand{\EH}{\ComplexityFont{EH}} \newcommand{\EEE}{\ComplexityFont{EEE}} \newcommand{\EPTAS}{\ComplexityFont{EPTAS}} \newcommand{\ESPACE}{\ComplexityFont{ESPACE}} \newcommand{\EXP}{\ComplexityFont{EXP}} \newcommand{\EXPSPACE}{\ComplexityFont{EXPSPACE}} % F \newcommand{\FNL}{\ComplexityFont{FNL}} \newcommand{\FNP}{\ComplexityFont{FNP}} \newcommand{\FP}{\ComplexityFont{FP}} \newcommand{\FPRAS}{\ComplexityFont{FPRAS}} \newcommand{\FQMA}{\ComplexityFont{FQMA}} % G \newcommand{\GA}{\ComplexityFont{GA}} \newcommand{\Gap}{\ComplexityFont{Gap}} \newcommand{\GapAC}{\ComplexityFont{GapAC}} \newcommand{\GapL}{\ComplexityFont{GapL}} \newcommand{\GapP}{\ComplexityFont{GapP}} \newcommand{\GI}{\ComplexityFont{GI}} % H \newcommand{\Heur}{\ComplexityFont{Heur}} \newcommand{\HSPACE}{\ComplexityFont{HSPACE}} \newcommand{\HeurBPP}{\ComplexityFont{HeurBPP}} \newcommand{\HeurBPTIME}{\ComplexityFont{HeurBPTIME}} % I \newcommand{\IP}{\ComplexityFont{IP}} % J % K \newcommand{\K}{\ComplexityFont{K}} \newcommand{\KT}{\ComplexityFont{KT}} % L \newcommand{\LIN}{\ComplexityFont{LIN}} \newcommand{\LogFew}{\ComplexityFont{LogFew}} \newcommand{\LogFewNL}{\ComplexityFont{LogFewNL}} % M \newcommand{\MA}{\ComplexityFont{MA}} \newcommand{\coMA}{\ComplexityFont{coMA}} \newcommand{\MAC}{\ComplexityFont{MAC}} \newcommand{\MAE}{\ComplexityFont{MA\complexity@hyphen E}} \newcommand{\MAEXP}{\ComplexityFont{MA\complexity@hyphen EXP}} \newcommand{\mAL}{\ComplexityFont{mAL}} \newcommand{\MaxNP}{\ComplexityFont{MaxNP}} \newcommand{\MaxPB}{\ComplexityFont{MaxPB}} \newcommand{\MaxSNP}{\ComplexityFont{MaxSNP}} \newcommand{\MinPB}{\ComplexityFont{MinPB}} \newcommand{\MIP}{\ComplexityFont{MIP}} \newcommand{\mL}{\ComplexityFont{mL}} \newcommand{\mNC}{\ComplexityFont{mNC}} \newcommand{\mcoNL}{\ComplexityFont{comNL}} \newcommand{\mNL}{\ComplexityFont{mNL}} \newcommand{\mNP}{\ComplexityFont{mNP}} \newcommand{\ModkL}{{\ComplexityFont{Mod}_k\ComplexityFont{L}}} \newcommand{\ModkP}{{\ComplexityFont{Mod}_k\ComplexityFont{P}}} \newcommand{\ModP}{\ComplexityFont{ModP}} \newcommand{\mP}{\ComplexityFont{mP}} \newcommand{\MP}{\ComplexityFont{MP}} \newcommand{\MPC}{\ComplexityFont{MPC}} \newcommand{\mTC}{\ComplexityFont{mTC}} % N \newcommand{\NC}{\ComplexityFont{NC}} \newcommand{\coNE}{\ComplexityFont{coNE}} \newcommand{\NE}{\ComplexityFont{NE}} \newcommand{\NEE}{\ComplexityFont{NEE}} \newcommand{\NEEE}{\ComplexityFont{NEEE}} \newcommand{\NEEXP}{\ComplexityFont{NEEXP}} \newcommand{\coNEXP}{\ComplexityFont{coNEXP}} \newcommand{\NEXP}{\ComplexityFont{NEXP}} \newcommand{\coNL}{\ComplexityFont{coNL}} \newcommand{\NL}{\ComplexityFont{NL}} \newcommand{\NLIN}{\ComplexityFont{NLIN}} \newcommand{\coNP}{\ComplexityFont{coNP}} \newcommand{\NP}{\ComplexityFont{NP}} \newcommand{\NPC}{\ComplexityFont{NPC}} \newcommand{\NPI}{\ComplexityFont{NPI}} \newcommand{\NPSPACE}{\ComplexityFont{NPSPACE}} \newcommand{\coNQP}{\ComplexityFont{coNQP}} \newcommand{\NQP}{\ComplexityFont{NQP}} \newcommand{\NSPACE}{\ComplexityFont{NSPACE}} \newcommand{\NTIME}{\ComplexityFont{NTIME}} % O \newcommand{\Opt}{\ComplexityFont{Opt}} \newcommand{\OptP}{\Opt\P} % P \newcommand{\PAC}{\ComplexityFont{PAC}} \newcommand{\PCD}{\ComplexityFont{PCD}} \newcommand{\PCP}{\ComplexityFont{PCP}} \newcommand{\Ppoly}{\P/\poly} \newcommand{\PH}{\ComplexityFont{PH}} \newcommand{\PEXP}{\ComplexityFont{PEXP}} \newcommand{\PL}{\ComplexityFont{PL}} \newcommand{\PP}{\ComplexityFont{PP}} \newcommand{\PPSPACE}{\ComplexityFont{PPSPACE}} \newcommand{\p}{\ComplexityFont{p}} \newcommand{\Promise}{\ComplexityFont{Promise}} \newcommand{\PromiseBPP}{\ComplexityFont{PromiseBPP}} \newcommand{\PromiseBQP}{\ComplexityFont{PromiseBQP}} \newcommand{\PromiseP}{\ComplexityFont{PromiseP}} \newcommand{\PromiseRP}{\ComplexityFont{PromiseRP}} \newcommand{\PrSPACE}{\ComplexityFont{PrSPACE}} \newcommand{\PSPACE}{\ComplexityFont{PSPACE}} \newcommand{\PT}{\ComplexityFont{PT}} \newcommand{\PTAS}{\ComplexityFont{PTAS}} \newcommand{\PTWK}{\ComplexityFont{PT/WK}} % Q \newcommand{\QAC}{\ComplexityFont{QAC}} \newcommand{\QACC}{\ComplexityFont{QACC}} \newcommand{\QAM}{\ComplexityFont{QAM}} \newcommand{\QCFL}{\ComplexityFont{QCFL}} \newcommand{\QCMA}{\ComplexityFont{QCMA}} \newcommand{\QH}{\ComplexityFont{QH}} \newcommand{\QIP}{\ComplexityFont{QIP}} \newcommand{\QMA}{\ComplexityFont{QMA}} \newcommand{\QMAM}{\ComplexityFont{QMAM}} \newcommand{\QMIP}{\ComplexityFont{QMIP}} \newcommand{\QNC}{\ComplexityFont{QNC}} \newcommand{\QP}{\ComplexityFont{QP}} \newcommand{\QPSPACE}{\ComplexityFont{QPSPACE}} % R \newcommand{\R}{\ComplexityFont{R}} \newcommand{\coRE}{\ComplexityFont{coRE}} \newcommand{\RE}{\ComplexityFont{RE}} \newcommand{\REG}{\ComplexityFont{REG}} \newcommand{\RL}{\ComplexityFont{RL}} \newcommand{\coRNC}{\ComplexityFont{coRNC}} \newcommand{\RNC}{\ComplexityFont{RNC}} \newcommand{\coRP}{\ComplexityFont{coRP}} \newcommand{\RP}{\ComplexityFont{RP}} \newcommand{\RSPACE}{\ComplexityFont{RSPACE}} % S \newcommand{\SAC}{\ComplexityFont{SAC}} \newcommand{\SC}{\ComplexityFont{SC}} \newcommand{\SE}{\ComplexityFont{SE}} \newcommand{\SEH}{\ComplexityFont{SEH}} \newcommand{\SKC}{\ComplexityFont{SKC}} \newcommand{\SIZE}{\ComplexityFont{SIZE}} \newcommand{\SPACE}{\ComplexityFont{SPACE}} \newcommand{\SL}{\ComplexityFont{SL}} \newcommand{\coSL}{\ComplexityFont{coSL}} \newcommand{\SPARSE}{\ComplexityFont{SPARSE}} \newcommand{\SPL}{\ComplexityFont{SPL}} \newcommand{\SPP}{\ComplexityFont{SPP}} \newcommand{\SUBEXP}{\ComplexityFont{SUBEXP}} \newcommand{\SZK}{\ComplexityFont{SZK}} % T \newcommand{\TC}{\ComplexityFont{TC}} % U \newcommand{\coUP}{\ComplexityFont{coUP}} \newcommand{\UP}{\ComplexityFont{UP}} % V % W \newcommand{\W}{\ComplexityFont{W}} % X \newcommand{\ZPE}{\ComplexityFont{ZPE}} \newcommand{\ZPP}{\ComplexityFont{ZPP}} \newcommand{\ZPTIME}{\ComplexityFont{ZPTIME}} %%%%%%% Extended Classes \ifthenelse{\boolean{complexity@fullmode}}{ %THEN we do ALL the classes % A \newcommand{\A}{\ComplexityFont{A}} \newcommand{\AlgP}{\ComplexityFont{AlgP}} \newcommand{\Amp}{\ComplexityFont{Amp}} \newcommand{\AmpMP}{\ComplexityFont{AmpMP}} \newcommand{\AmpPBQP}{\ComplexityFont{AmpPBQP}} \newcommand{\APP}{\ComplexityFont{APP}} \newcommand{\APX}{\ComplexityFont{APX}} \newcommand{\AUCSPACE}{\ComplexityFont{AUC\complexity@hyphen SPACE}} \newcommand{\AuxPDA}{\ComplexityFont{AuxPDA}} \newcommand{\AVBPP}{\ComplexityFont{AVBPP}} \newcommand{\AvE}{\ComplexityFont{AvE}} \newcommand{\AvP}{\ComplexityFont{AvP}} \newcommand{\AW}{\ComplexityFont{AW}} \newcommand{\AWPP}{\ComplexityFont{AWPP}} % B \newcommand{\betaP}{\beta\ComplexityFont{P}} \newcommand{\BP}{\ComplexityFont{BP}} \newcommand{\BPPpath}{{\ComplexityFont{BPP}_{\complexity@kern\ComplexityFont{path}}}} \newcommand{\BPHSPACE}{{\ComplexityFont{BP_{H}SPACE}}} \newcommand{\BPL}{\ComplexityFont{BPL}} \newcommand{\BPPOBDD}{\ComplexityFont{BPP\complexity@hyphen OBDD}} \newcommand{\BPQP}{\ComplexityFont{BPQP}} \newcommand{\kBQBP}{k\complexity@hyphenright\ComplexityFont{BQBP}} \newcommand{\BQNC}{\ComplexityFont{BQNC}} \newcommand{\BQNP}{\ComplexityFont{BQNP}} \newcommand{\BQPOBDD}{\ComplexityFont{BQP\complexity@hyphen OBDD}} \newcommand{\kBWBP}{k\complexity@hyphenright\ComplexityFont{BWBP}} % C %\newcommand{\Check}{\ComplexityFont{Check}} this has conflicts with amsmath \newcommand{\CLOG}{\ComplexityFont{CLOG}} \newcommand{\CNP}{\ComplexityFont{CNP}} \newcommand{\cofrIP}{\ComplexityFont{cofrIP}} \newcommand{\Coh}{\ComplexityFont{Coh}} \newcommand{\compIP}{\ComplexityFont{compIP}} \newcommand{\compNP}{\ComplexityFont{compNP}} \newcommand{\coUCC}{\ComplexityFont{coUCC}} \newcommand{\CP}{\ComplexityFont{CP}} \newcommand{\CSL}{\ComplexityFont{CSL}} \newcommand{\CZK}{\ComplexityFont{CZK}} % D \newcommand{\D}{\ComplexityFont{D}} \newcommand{\DCFL}{\ComplexityFont{DCFL}} \newcommand{\DiffAC}{\ComplexityFont{DiffAC}} \newcommand{\DisNP}{\ComplexityFont{DisNP}} \newcommand{\DistNP}{\ComplexityFont{DistNP}} \newcommand{\DP}{\ComplexityFont{DP}} \newcommand{\DQP}{\ComplexityFont{DQP}} \newcommand{\Dyn}{\ComplexityFont{Dyn}} \newcommand{\DynFO}{\ComplexityFont{Dyn\complexity@hyphenright FO}} % E \newcommand{\EL}{\ComplexityFont{EL}} \newcommand{\ELEMENTARY}{\ComplexityFont{ELEMENTARY}} \newcommand{\ELkP}{{\ComplexityFont{EL}_{k}\ComplexityFont{P}}} \newcommand{\kEQBP}{k\complexity@hyphenright\ComplexityFont{EQBP}} \newcommand{\EQP}{\ComplexityFont{EQP}} \newcommand{\EQTIME}{\ComplexityFont{EQTIME}} \newcommand{\EQBP}{\ComplexityFont{EQBP}} \newcommand{\ExistsBPP}{\ComplexityFont{ExistsBPP}} \newcommand{\ExistsNISZK}{\ComplexityFont{ExistsNISZK}} % F \newcommand{\FBQP}{\ComplexityFont{FBQP}} \newcommand{\Few}{\ComplexityFont{Few}} \newcommand{\FewP}{\ComplexityFont{FewP}} \newcommand{\FH}{\ComplexityFont{FH}} \newcommand{\FO}{\ComplexityFont{FO}} \newcommand{\FOLL}{\ComplexityFont{FOLL}} \newcommand{\FPR}{\ComplexityFont{FPR}} \newcommand{\FPT}{\ComplexityFont{FPT}} \newcommand{\FPTAS}{\ComplexityFont{FPTAS}} \newcommand{\FPTnu}{{\ComplexityFont{FPT}_{\complexity@kern\ComplexityFont{nu}}}} \newcommand{\FPTsu}{{\ComplexityFont{FPT}_{\complexity@kern\ComplexityFont{su}}}} \newcommand{\frIP}{\ComplexityFont{frIP}} \newcommand{\FTAPE}{\ComplexityFont{F\complexity@hyphen TAPE}} \newcommand{\FTIME}{\ComplexityFont{F\complexity@hyphen TIME}} %G \newcommand{\G}{\ComplexityFont{G}} \newcommand{\GANSPACE}{\ComplexityFont{GAN\complexity@hyphen SPACE}} \newcommand{\GC}{\ComplexityFont{GC}} \newcommand{\GCSL}{\ComplexityFont{GCSL}} \newcommand{\GPCD}{\ComplexityFont{GPCD}} % H \newcommand{\HkP}{{\ComplexityFont{H}_k\ComplexityFont{P}}} \newcommand{\HVSZK}{\ComplexityFont{HVSZK}} % I \newcommand{\IC}{\ComplexityFont{IC}} \newcommand{\IPP}{\ComplexityFont{IPP}} % J % What? No "J" classes? % K % L \newcommand{\LkP}{{\ComplexityFont{L}_k\ComplexityFont{P}}} \newcommand{\LOGCFL}{\ComplexityFont{LOGCFL}} \newcommand{\LOGNP}{\ComplexityFont{LOGNP}} \newcommand{\LOGSNP}{\ComplexityFont{LOGSNP}} \newcommand{\LWPP}{\ComplexityFont{LWPP}} % M \newcommand{\M}{\ComplexityFont{M}} \newcommand{\ModZkL}{{\ComplexityFont{ModZ}_k\ComplexityFont{L}}} \newcommand{\MkP}{{\ComplexityFont{(M}_k\ComplexityFont{)P}}} % N \newcommand{\NAuxPDA}{\ComplexityFont{NAuxPDA}} \newcommand{\NIPZK}{\ComplexityFont{NIPZK}} \newcommand{\NIQPZK}{\ComplexityFont{NIQPZK}} \newcommand{\NIQSZK}{\ComplexityFont{NIQSZK}} \newcommand{\NISZK}{\ComplexityFont{NISZK}} \newcommand{\NLOG}{\ComplexityFont{NLOG}} \newcommand{\NPMV}{\ComplexityFont{NPMV}} \newcommand{\NPMVsel}{\ComplexityFont{NPMV\complexity@hyphenleft sel}} \newcommand{\NPO}{\ComplexityFont{NPO}} \newcommand{\NPOPB}{\ComplexityFont{NPOPB}} \newcommand{\NPSV}{\ComplexityFont{NPSV}} \newcommand{\NPSVsel}{\ComplexityFont{NPSV\complexity@hyphenleft sel}} %don't use a \complexity@hyphen here, it looks bad \newcommand{\NT}{\ComplexityFont{NT}} % O \newcommand{\OBDD}{\ComplexityFont{OBDD}} \newcommand{\OCQ}{\ComplexityFont{OCQ}} % P \newcommand{\PBP}{\ComplexityFont{PBP}} \newcommand{\kPBP}{k\complexity@hyphenright\ComplexityFont{PBP}} %don't use a \complexity@hyphen here, it looks bad \newcommand{\Pclose}{\ComplexityFont{P\complexity@hyphenleft close}} \newcommand{\PermUP}{\ComplexityFont{PermUP}} \newcommand{\PF}{\ComplexityFont{PF}} \newcommand{\PFCHK}{\ComplexityFont{PFCHK}} \newcommand{\PhP}{\ComplexityFont{PhP}} \newcommand{\PINC}{\ComplexityFont{PINC}} \newcommand{\PIO}{\ComplexityFont{PIO}} \newcommand{\PKC}{\ComplexityFont{PKC}} \newcommand{\PLF}{\ComplexityFont{PL}} \newcommand{\PLL}{\ComplexityFont{PLL}} \newcommand{\PLS}{\ComplexityFont{PLS}} \newcommand{\POBDD}{\ComplexityFont{P\complexity@hyphen OBDD}} \newcommand{\PODN}{\ComplexityFont{PODN}} \newcommand{\polyL}{\ComplexityFont{polyL}} \newcommand{\PostBQP}{\ComplexityFont{PostBQP}} \newcommand{\PPA}{\ComplexityFont{PPA}} \newcommand{\PPAD}{\ComplexityFont{PPAD}} \newcommand{\PPADS}{\ComplexityFont{PPADS}} \newcommand{\PPP}{\ComplexityFont{PPP}} \newcommand{\PQUERY}{\ComplexityFont{PQUERY}} \newcommand{\PR}{\ComplexityFont{PR}} \newcommand{\PrHSPACE}{{\ComplexityFont{Pr}_{\ComplexityFont{H}}\ComplexityFont{SPACE}}} \newcommand{\promiseBPP}{\ComplexityFont{promiseBPP}} \newcommand{\promiseBQP}{\ComplexityFont{promiseBQP}} \newcommand{\promiseP}{\ComplexityFont{promiseP}} \newcommand{\promiseRP}{\ComplexityFont{promiseRP}} \newcommand{\PSel}{\ComplexityFont{P\complexity@hyphen Sel}} \newcommand{\PSK}{\ComplexityFont{PSK}} \newcommand{\PTAPE}{\ComplexityFont{PTAPE}} \newcommand{\PZK}{\ComplexityFont{PZK}} % Q \newcommand{\QPLIN}{\ComplexityFont{QPLIN}} \newcommand{\Qpoly}{\ComplexityFont{Qpoly}} \newcommand{\QMIPle}{{\ComplexityFont{QMIP}_{\complexity@kern\ComplexityFont{le}}}} \newcommand{\QMIPne}{{\ComplexityFont{QMIP}_{\complexity@kern\ComplexityFont{ne}}}} \newcommand{\QSZK}{\ComplexityFont{QSZK}} % R \newcommand{\RevSPACE}{\ComplexityFont{RevSPACE}} \newcommand{\RHL}{{\ComplexityFont{R}_{\ComplexityFont{H}}\ComplexityFont{L}}} \newcommand{\RHSPACE}{{\ComplexityFont{R}_{\ComplexityFont{H}}\ComplexityFont{SPACE}}} \newcommand{\RNP}{\ComplexityFont{RNP}} \newcommand{\RPP}{\ComplexityFont{RPP}} % S \newcommand{\SAPTIME}{\ComplexityFont{SAPTIME}} \newcommand{\SBP}{\ComplexityFont{SBP}} \newcommand{\Sel}{\ComplexityFont{Sel}} \newcommand{\SelfNP}{\ComplexityFont{SelfNP}} \newcommand{\SF}{\ComplexityFont{SF}} \newcommand{\SLICEWISEPSPACE}{\ComplexityFont{SLICEWISEPSPACE}} \newcommand{\SNP}{\ComplexityFont{SNP}} \newcommand{\SOE}{\ComplexityFont{SO\complexity@hyphen E}} \newcommand{\SP}{\ComplexityFont{SP}} \newcommand{\spanP}{\ComplexityFont{span}\complexity@hyphenright\ComplexityFont{P}} \newcommand{\symP}{\ComplexityFont{symP}} % T \newcommand{\TALLY}{\ComplexityFont{TALLY}} \newcommand{\TFNP}{\ComplexityFont{TFNP}} \newcommand{\ThC}{\ComplexityFont{ThC}} \newcommand{\TreeBQP}{\ComplexityFont{TreeBQP}} \newcommand{\TREEREGULAR}{\ComplexityFont{TREE\complexity@hyphen REGULAR}} %U \newcommand{\UAP}{\ComplexityFont{UAP}} \newcommand{\UCC}{\ComplexityFont{UCC}} \newcommand{\UL}{\ComplexityFont{UL}} \newcommand{\UE}{\ComplexityFont{UE}} \newcommand{\US}{\ComplexityFont{US}} % V \newcommand{\VNC}{\ComplexityFont{VNC}} \newcommand{\VNP}{\ComplexityFont{VNP}} \newcommand{\VP}{\ComplexityFont{VP}} \newcommand{\VQP}{\ComplexityFont{VQP}} % W \newcommand{\WAPP}{\ComplexityFont{WAPP}} \newcommand{\WPP}{\ComplexityFont{WPP}} % X \newcommand{\XORMIP}{{\ComplexityFont{XOR\complexity@hyphen MIP}^*[2,1]}} \newcommand{\XP}{\ComplexityFont{XP}} \newcommand{\XPuniform}{{\ComplexityFont{XP}_{\complexity@kern\ComplexityFont{uniform}}}} % Y \newcommand{\YACC}{\ComplexityFont{YACC}} % Z % We now include the user defined commands which must be in a file named % mycomplexity % We use this convention because the primitive \input may load packages % more than once, leading to unnecessary redefinitions and strange results }{} \InputIfFileExists{mycomplexity.sty}{}{\PackageWarning{complexity}{User Defined Commands file `mycomplexity.sty' not found, it will not be loaded.}}