% \NeedsTeXFormat{LaTeX2e} % Release Notes see README %CHECK DEF OF COMPAT % POSSIBLE ALT: \mathrel{\rlap{\ensuremath{\not}}\ensuremath{\mid}} \RequirePackage{expl3} \RequirePackage{ltxcmds} \RequirePackage{iftex,ifpdf} \RequirePackage{suffix} \RequirePackage{ifmtarg} \RequirePackage{xifthen} \RequirePackage{xkeyval} \RequirePackage{etoolbox} \RequirePackage{pict2e,picture} \RequirePackage{xparse} % \RequirePackage{amsmath} required below if not already loaded and we aren't using asl.cls \def\recthyVersion{4.0} \ProvidesExplPackage {rec-thy} {2024/03/29} {\recthyVersion} {Provides commands for writing up recursion theory papers} \ExplSyntaxOff % \ProvidesExplPackage{rec-thy}{2020/06/04}{3.5}{Provides commands for writing up recursion theory papers} % Description % \ProvidesPackage{rec-thy}[2021/02/05 v\recthyVersion Provides commands for writing up recursion theory papers] \makeatletter % \newcommand*{\@curpack}{\@currname} %rec-thy.sty \newcommand*{\@packinfo}[1]{\PackageInfo{rec-thy}{#1}} \newcommand*{\recthy@strip}[1]{% \ifcsname #1\endcsname% \else% \expandafter\edef\csname #1\endcsname{\expandafter\noexpand\csname @recthy@#1\endcsname} \fi } %leaves us a command \arg defined to do \@recthy@arg % \ProvidesPackage{\@curpack} %file name is package name \robustify\( \robustify\) %\RequirePackage{mathbbol}} \@ifclassloaded{asl}{ }{ \ltx@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}} } \AtBeginDocument{ % \@ifundefined{hyperref}{\providecommand{\texorpdfstring}[2]{def} } % \ltx@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}} \ltx@ifpackageloaded{unicode-math}{ \def\@recthy@tpathSYM{\mathbb{f}} \Umathchardef\@recthy@xnot="3 \symoperators "0338 }{ \ltx@ifpackageloaded{bbm}{\def\@recthy@tpathSYM{\mathbbm{f}}}{\mathbf{f}} } % Undertilde doesn't exist in texlive so we remove the dependency and define it again. \ltx@ifpackageloaded{undertilde}{}{ \newlength\knuthian@fdfive \def\mathpal@save#1{\let\was@math@style=#1\relax} \def\utilde#1{\mathpalette\mathpal@save {\setbox124=\hbox{$\was@math@style#1$}% \setbox125=\hbox{$\fam=3\global\knuthian@fdfive=\fontdimen5\font$} \setbox125=\hbox{$\widetilde{\vrule height 0pt depth 0pt width \wd124}$}% \baselineskip=1pt\relax \vtop{\copy124\copy125\vskip -\knuthian@fdfive}}} } } % \ifxetex %workaround for bug...hopefully can dispense on later \ifpdftex \def\symbf#1{\mathbf{#1}} \mathchardef\@recthy@mhyphen="2D % Define a "math hyphen" \else \def\@recthy@mhyphen{\mathhyphen} \fi \def\PMG@arginit{\let\@PMG@parenarg\@PMG@undefined\let\@PMG@braketarg\@PMG@undefined} \def\@recthy@family{\@currname.\@currext} %The default family for this package...filename.ext %Define boolean options true if option passed false otherwise \newif\ifrecthy@nomath \recthy@nomathfalse \newif\ifrecthy@nosymb \recthy@nosymbfalse \newif\ifrecthy@nosets \recthy@nosetsfalse \newif\ifrecthy@noquants \recthy@noquantsfalse \newif\ifrecthy@nospaces \recthy@nospacesfalse \newif\ifrecthy@nostrings \recthy@nostringsfalse \newif\ifrecthy@notrees \recthy@notreesfalse \newif\ifrecthy@nopair \recthy@nopairfalse \newif\ifrecthy@nosetrels \recthy@nosetrelsfalse \newif\ifrecthy@noordinalnotations \recthy@noordinalnotationsfalse \newif\ifrecthy@nosyntax \recthy@nosyntaxfalse \newif\ifrecthy@shortsyntax \recthy@shortsyntaxtrue \newif\ifrecthy@nodegclasses \recthy@nodegclassesfalse \newif\ifrecthy@noforcing \recthy@noforcingfalse \newif\ifrecthy@nodegrees \recthy@nodegreesfalse \newif\ifrecthy@nocomputations \recthy@nocomputationsfalse \newif\ifrecthy@nostructresets \recthy@nostructresetsfalse \newif\ifrecthy@noreqhelper \recthy@noreqhelperfalse \newif\ifrecthy@nosubfun \recthy@nosubfunfalse \newif\ifrecthy@nopfcases \@ifclassloaded{beamer}{\recthy@nopfcasestrue}{\recthy@nopfcasesfalse} \newif\ifrecthy@beamersupp \@ifclassloaded{beamer}{\recthy@beamersupptrue}{\recthy@beamersuppfalse} \newif\ifrecthy@noprioritytrees \recthy@noprioritytreesfalse % \newif\ifrecthy@nosuppprioritytrees \recthy@nosuppprioritytreestrue \newif\ifrecthy@hyperreqs \recthy@hyperreqstrue \newif\ifrecthy@nooperators \recthy@nooperatorsfalse \newif\ifrecthy@fix@typeset \recthy@fix@typesettrue \newif\ifrecthy@nodoubleangles \recthy@nodoubleanglesfalse \newif\ifrecthy@stepsenv \recthy@stepsenvfalse \newif\ifrecthy@shortO \recthy@shortOtrue \newif\ifrecthy@midincompat \recthy@midincompattrue \newif\ifrecthy@norsfs \recthy@norsfsfalse \newif\ifrecthy@nobbm \recthy@nobbmfalse \DeclareOptionX{nomath}{\recthy@nomathtrue} \DeclareOptionX{nosymb}{\recthy@nosymbtrue} \DeclareOptionX{nosets}{\recthy@nosetstrue} \DeclareOptionX{noquants}{\recthy@noquantstrue} \DeclareOptionX{nospaces}{\recthy@nospacestrue} \DeclareOptionX{nostrings}{\recthy@nostringstrue} \DeclareOptionX{notrees}{\recthy@notreestrue} \DeclareOptionX{nopair}{\recthy@nopairtrue} \DeclareOptionX{nosetrels}{\recthy@nosetrelstrue} \DeclareOptionX{noordinalnotations}{\recthy@noordinalnotationstrue} \DeclareOptionX{nosyntax}{\recthy@nosyntaxtrue} \DeclareOptionX{noshortsyntax}{\recthy@shortsyntaxfalse} \DeclareOptionX{noforcing}{\recthy@noforcingtrue} \DeclareOptionX{nodegrees}{\recthy@nodegreestrue} \DeclareOptionX{nocomputations}{\recthy@nocomputationstrue} \DeclareOptionX{nostructresets}{\recthy@nostructresetstrue} \DeclareOptionX{noreqhelper}{\recthy@noreqhelpertrue} \DeclareOptionX{nosubfun}{\recthy@nosubfuntrue} \DeclareOptionX{nopfcases}{\recthy@nopfcasestrue} \DeclareOptionX{noprioritytrees}{\recthy@noprioritytreestrue} \DeclareOptionX{nohyperreqs}{\recthy@hyperreqsfalse} \DeclareOptionX{nooperators}{\recthy@nooperatorstrue} \DeclareOptionX{nofixtype}{\recthy@fix@typesetfalse} \DeclareOptionX{nodoubleangles}{\recthy@nodoubleanglestrue} \DeclareOptionX{steps}{\recthy@stepsenvtrue} \DeclareOptionX{noshortO}{\recthy@shortOfalse} \DeclareOptionX{altcompat}{\recthy@midincompattrue} \DeclareOptionX{norsfs}{\recthy@norsfstrue} \DeclareOptionX{nobbm}{\recthy@nobbmtrue} % \DeclareOptionX{degjoin}{\def\Tjoin{\Tdegjoin}} \let\@recthy@modulescr\mathcal \DeclareOptionX{modulescr}[mathcal]{\letcs{\@recthy@modulescr}{#1}} \let\pmg@casefont\textsc \DeclareOptionX{pfcasefont}[textsc]{\letcs{\pmg@casefont}{#1}} \def\@recthy@reqscr{\mathscr} \DeclareOptionX{reqscr}{\letcs{\@recthy@reqscr}{#1}} \def\@recthy@recfSYM@default{\phi} \let\@recthy@recfSYM=\@recthy@recfSYM@default \def\@recthy@recfnlSYM@default{\Phi} \let\@recthy@recfnlSYM=\@recthy@recfnlSYM@default \def\@recthy@useSYM@default{\ltx@ifpackageloaded{unicode-math}{\symbffrak{u}}{\mathfrak{u}}} \let\@recthy@useSYM=\@recthy@useSYM@default \DeclareOptionX{recfnlsym}[@recthy@recfnlSYM@default]{\letcs{\@recthy@recfnlSYM}{#1}} \DeclareOptionX{recfsym}[@recthy@recfSYM@default]{\letcs{\@recthy@recfSYM}{#1}} \DeclareOptionX{usesym}[@recthy@useSYM@default]{\letcs{\@recthy@useSYM}{#1}} \newcommand*{\@recthy@llangle}{\langle\!\langle} \newcommand*{\@recthy@rrangle}{\rangle\!\rangle} \let\@recthy@llangle@orig=\llangle \let\@recthy@rrangle@orig=\rrangle \let\@recthy@EmptyStr=\@recthy@EmptyStr@Default \let\@recthy@concatSYM=\@recthy@concatSYM@Default \def\@recthy@langle{\langle} \def\@recthy@rangle{\rangle} \let\@recthy@lstrdelim=\@recthy@langle \let\@recthy@rstrdelim=\@recthy@rangle \let\@recthy@lcodedelim=\@recthy@llangle \let\@recthy@rcodedelim=\@recthy@rrangle \let\@recthy@lpairdelim=\@recthy@langle \let\@recthy@rpairdelim=\@recthy@rangle \def\@recthy@concatSYM@Default{\widehat{\phantom{x}}} \def\@recthy@EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}} \let\@recthy@concatSYM\@recthy@concatSYM@Default \let\@recthy@EmptyStr\@recthy@EmptyStr@Default \DeclareOptionX{emptystr}[@recthy@EmptyStr@Default]{\letcs{\@recthy@EmptyStr}{#1}} \DeclareOptionX{concatsym}[@recthy@concatSYM@Default]{\letcs{\@recthy@concatSYM}{#1}} \DeclareOptionX{lstrdelim}[@recthy@langle]{\letcs{\@recthy@lstrdelim}{#1}} \DeclareOptionX{rstrdelim}[@recthy@rangle]{\letcs{\@recthy@rstrdelim}{#1}} \DeclareOptionX{lcodedelim}[@recthy@langle]{\letcs{\@recthy@lcodedelim}{#1}} \DeclareOptionX{rcodedelim}[@recthy@rangle]{\letcs{\@recthy@rcodedelim}{#1}} \DeclareOptionX{lpairdelim}[@recthy@llangle]{\letcs{\@recthy@lpairdelim}{#1}} \DeclareOptionX{rpairdelim}[@recthy@rrangle]{\letcs{\@recthy@rpairdelim}{#1}} % \AtBeginDocument{\@ifundefined{hyperref}{\newcommand*{\texorpdfstring}[2]{#1}}{}} % \ProcessOptions* % \ProcessOptionsX<\@recthy@family> \ProcessOptionsX \ifrecthy@norsfs \else \ltx@ifpackageloaded{unicode-math}{}{\RequirePackage{mathrsfs}} \fi \ifrecthy@nobbm \else \ltx@ifpackageloaded{unicode-math}{}{\RequirePackage{bbm}} \fi %misc tools \def\@recthy@ignorespacesandallparsafterend{\ifhmode\unskip\fi \aftergroup\@recthy@useignorespacesandallpars} \def\@recthy@useignorespacesandallpars#1\ignorespaces\fi{% #1\fi\@recthy@ignorespacesandallpars} \def\@recthy@ignorespacesandallpars{% \@ifnextchar\par {\expandafter\@recthy@ignorespacesandallpars\@gobble}% {}% } \ifrecthy@fix@typeset %Defining \overbar \let\save@mathaccent\mathaccent \newcommand*\if@single[3]{% \setbox0\hbox{${\mathaccent"0362{#1}}^H$}% \setbox2\hbox{${\mathaccent"0362{\kern0pt#1}}^H$}% \ifdim\ht0=\ht2 #3\else #2\fi } %The bar will be moved to the right by a half of \macc@kerna, which is computed by amsmath: \newcommand*\rel@kern[1]{\kern#1\dimexpr\macc@kerna} %If there's a superscript following the bar, then no negative kern may follow the bar; %an additional {} makes sure that the superscript is high enough in this case: \providecommand*\overbar{\relax} \renewcommand*\overbar[1]{\@ifnextchar^{{\over@bar{#1}{0}}}{\over@bar{#1}{1}}} %Use a separate algorithm for single symbols: \newcommand*\over@bar[2]{\if@single{#1}{\over@bar@{#1}{#2}{1}}{\over@bar@{#1}{#2}{2}}} \newcommand*\over@bar@[3]{% \begingroup \def\mathaccent##1##2{% %Enable nesting of accents: \let\mathaccent\save@mathaccent %If there's more than a single symbol, use the first character instead (see below): \if#32 \let\macc@nucleus\first@char \fi %Determine the italic correction: \setbox\z@\hbox{$\macc@style{\macc@nucleus}_{}$}% \setbox\tw@\hbox{$\macc@style{\macc@nucleus}{}_{}$}% \dimen@\wd\tw@ \advance\dimen@-\wd\z@ %Now \dimen@ is the italic correction of the symbol. \divide\dimen@ 3 \@tempdima\wd\tw@ \advance\@tempdima-\scriptspace %Now \@tempdima is the width of the symbol. \divide\@tempdima 10 \advance\dimen@-\@tempdima %Now \dimen@ = (italic correction / 3) - (Breite / 10) \ifdim\dimen@>\z@ \dimen@0pt\fi %The bar will be shortened in the case \dimen@<0 ! \rel@kern{0.6}\kern-\dimen@ \if#31 \overline{\rel@kern{-0.6}\kern\dimen@\macc@nucleus\rel@kern{0.4}\kern\dimen@}% \advance\dimen@0.4\dimexpr\macc@kerna %Place the combined final kern (-\dimen@) if it is >0 or if a superscript follows: \let\final@kern#2% \ifdim\dimen@<\z@ \let\final@kern1\fi \if\final@kern1 \kern-\dimen@\fi \else \overline{\rel@kern{-0.6}\kern\dimen@#1}% \fi }% \macc@depth\@ne \let\math@bgroup\@empty \let\math@egroup\macc@set@skewchar \mathsurround\z@ \frozen@everymath{\mathgroup\macc@group\relax}% \macc@set@skewchar\relax \let\mathaccentV\macc@nested@a %The following initialises \macc@kerna and calls \mathaccent: \if#31 \macc@nested@a\relax111{#1}% \else %If the argument consists of more than one symbol, and if the first token is %a letter, use that letter for the computations: \def\gobble@till@marker##1\endmarker{}% \futurelet\first@char\gobble@till@marker#1\endmarker \ifcat\noexpand\first@char A\else \def\first@char{}% \fi \macc@nested@a\relax111{\first@char}% \fi \endgroup } \else \@packinfo{Not loading Fix Typesetting} \fi %Strings \newcommand*{\@recthy@pair}[2]{\mathopen{\@recthy@lpairdelim} #1, #2 \mathclose{\@recthy@rpairdelim}} \newcommand*{\@recthy@str}[1]{\mathopen{\@recthy@lstrdelim}#1\mathclose{\@recthy@rstrdelim}} \newcommand*{\@recthy@code}[1]{\mathopen{\@recthy@lcodedelim}#1\mathclose{\@recthy@rcodedelim}} \let\godelpair=\@recthy@pair \ifrecthy@nopair \@packinfo{No redefining pair.} \else \@packinfo{pair=godelpair.} \let\pair=\@recthy@pair \fi \newcommand{\succprec@recthy}{\mathrel{\mathpalette\succ@prec@recthy{\succ\prec}}} \newcommand{\precsucc@recthy}{\mathrel{\mathpalette\succ@prec@recthy{\prec\succ}}} \newcommand{\nsuccprec@recthy}{\ltx@ifpackageloaded{unicode-math}{\succprec@recthy\!\@recthy@xnot}{\not\succprec@recthy}} \newcommand{\nprecsucc@recthy}{\ltx@ifpackageloaded{unicode-math}{\precsucc@recthy\!\@recthy@xnot}{\not\precsucc@recthy}} \newcommand{\succ@prec@recthy}[2]{\succ@@prec@recthy#1#2} \newcommand{\succ@@prec@recthy}[3]{% \vcenter{\m@th\offinterlineskip \sbox\z@{$#1#3$}% \hbox{$#1#2$}\kern-0.4\ht\z@\box\z@ }% } \def\defaultincompatsymb@recthy{\mathrel{\mid}} \def\defaulcompatSymb@recthy{\mathrel{\,\not|\,}} \let\ncompatsymb@recthy=\nsuccprec@recthy \ifrecthy@midincompat \@packinfo{Using mid as incompat symbol} \let\compatsymb@recthy=\defaulcompatSymb@recthy \let\incompatsymb@recthy=\defaultincompatsymb@recthy \else \@packinfo{Using precc over succ as compat symbol} \let\compatsymb@recthy=\succprec@recthy \let\incompatsymb@recthy=\nsuccprec@recthy \fi \NewDocumentCommand{\incompat@recthy}{o}{\incompatsymb@recthy\IfValueTF{#1}{_{#1}}{}} \NewDocumentCommand{\compat@recthy}{o}{{\compatsymb@recthy\IfValueTF{#1}{_{#1}}{}}} \ifrecthy@nostrings \@packinfo{No strings loading.} \else \@packinfo{Strings loading.} % \appto{\recthy@rollback@threeSix}{\newcommand*{\closedn}[1]{{#1}^\blacktriangledown}} \let\code=\@recthy@code \let\str=\@recthy@str \newcommand*{\EmptyStr}{\@recthy@EmptyStr} \newcommand*{\estr}{\@recthy@EmptyStr} \newcommand*{\decode}[2]{\left(#1\right)_{#2}} \newcommand*{\godelnum}[1]{\left\ulcorner #1 \right\urcorner} \let\cornerquote=\godelnum \newcommand*{\concat}{\@recthy@concatSYM} \WithSuffix\def\concat[#1]{\concat\str{#1}} \newcommand*{\strpred}[1]{{#1}^{-}} \providecommand*{\lh}[2][]{\@recthy@abs{#2}_{#1}} %% Gives length of a string \providecommand*{\incompat}{\incompat@recthy} %incompatible stringes FIX SPACING % \providecommand*{\incomp}{\incompat@recthy} \providecommand*{\compat}{\compat@recthy} \let\succprec=\succprec@recthy \let\nsuccprec=\nsuccprec@recthy \let\precsucc=\precsucc@recthy \let\nprecsucc=\nprecsucc@recthy % \providecommand*{\nincompat}{\compat@recthy} % \providecommand*{\nincomp}{\compat@recthy} % \newcommand*{\setcol}[2]{{#1}^{[#2]}} \ExplSyntaxOn %thx stackexghance \NewDocumentCommand \setcol {m m} { \bool_lazy_and:nnTF { \int_compare_p:nNn { \tl_count:n {#1} } = 3 } { \tl_if_head_eq_meaning_p:nN {#1} \setcol } { \pgerdes_setcol_special:nnnn #1 {#2} } { \pgerdes_setcol_normal:nn {#1} {#2} } } \cs_new:Npn \pgerdes_setcol_special:nnnn #1 #2 #3 #4 { {#2} \sp { [#3] [#4] } } \cs_new:Npn \pgerdes_setcol_normal:nn #1 #2 { {#1} \sp { [#2] } } \ExplSyntaxOff \fi \ifrecthy@noprioritytrees \@packinfo{Not loading Priority Tree Helper} \else \@packinfo{Loading Priority Tree Helper.} \providecommand{\PriorityTree}{\mathbb{T}} \providecommand{\tpath}[1][]{\ifthenelse{\isempty{#1}}{\@recthy@tpathSYM}{\@recthy@tpathSYM_{#1}}} \providecommand{\leftof}{\mathbin{<_L}} \providecommand{\leftofeq}{\mathbin{\leq_L}} \providecommand{\rightof}{\mathbin{>_L}} \providecommand{\rightofeq}{\mathbin{\geq_L}} \providecommand{\nleftof}{\mathbin{\nless_L}} \providecommand{\nleftofeq}{\mathbin{\nleq_L}} \providecommand{\nrightof}{\mathbin{\ngtr_L}} \providecommand{\nrightofeq}{\mathbin{\ngeq_L}} \NewDocumentCommand{\PriorityTreeModule}{mO{}m}{\ensuremath{{\@recthy@modulescr{#1}}^{#2}_{#3} }} \let\module=\PriorityTreeModule \fi \ifrecthy@nopfcases \@packinfo{Not loading Proof Cases Helper} \else \@packinfo{Loading Proof Cases Helper.} \RequirePackage{enumitem} \ltx@ifpackageloaded{cleveref}{ \crefformat{pfcasesnonumi}{#2case~#1#3} \Crefformat{pfcasesnonumi}{#2Case~#1#3} \crefformat{pfcasesnonumii}{#2subcase~#1#3} \Crefformat{pfcasesnonumii}{#2Subcase~#1#3} \crefformat{pfcasesnonumiii}{#2subsubcase~#1#3} \Crefformat{pfcasesnonumiii}{#2Subsubcase~#1#3} \crefformat{pfcasesnumberedi}{#2case~#1#3} \Crefformat{pfcasesnumberedi}{#2Case~#1#3} \crefformat{pfcasesnumberedii}{#2case~#1#3} \Crefformat{pfcasesnumberedii}{#2Case~#1#3} \crefformat{pfcasesnumberediii}{#2case~#1#3} \Crefformat{pfcasesnumberediii}{#2Case~#1#3} }{} \newlist{pfcasesnonum}{enumerate}{3} \setlist[pfcasesnonum]{ label={\pmg@casefont{Case}}, align=left, left=0pt .. 1.5em, itemindent=* } \setlist[pfcasesnonum,1]{ before=\def\pfcasecounter@pmg{pfcasesnonumi}, } \setlist[pfcasesnonum,2]{ before=\def\pfcasecounter@pmg{pfcasesnonumii}, } \setlist[pfcasesnonum,3]{ before=\def\pfcasecounter@pmg{pfcasesnonumiii}, } \newlist{pfcasesnumbered}{enumerate}{3} \setlist[pfcasesnumbered]{ align=left, left=0pt .. 1.5em, itemindent=* } % \setlist[pfcasesnumbered]{ % align=left, % labelsep=0pt, % itemindent=!, % leftmargin=2em, % labelindent=0pt, % labelwidth=0pt % } \setlist[pfcasesnumbered,1]{ before=\def\pfcasecounter@pmg{pfcasesnumberedi}, label={{\pmg@casefont{Case}}~\arabic*}, ref={\arabic*}, } \setlist[pfcasesnumbered,2]{ before=\def\pfcasecounter@pmg{pfcasesnumberedii}, label={{\pmg@casefont{Case}}~\arabic{pfcasesnumberedi}\alph*}, ref={\arabic{pfcasesnumberedi}\alph*}, labelindent=-1em, } \setlist[pfcasesnumbered,3]{ before=\def\pfcasecounter@pmg{pfcasesnumberediii}, label={{\pmg@casefont{Case}}~\arabic{pfcasesnumberedi}\alph{pfcasesnumberedii}.\roman*}, ref={\arabic{pfcasesnumberedi}\alph{pfcasesnumberedii}.\roman*}, labelindent=-1em, } \def\@recthy@cases@labelindent{0pt} \newenvironment{pfcases*}{ \def\@recthy@cases@labelindent{-1em} \ProvideDocumentCommand{\case}{r[]}{ \def\thiscase{~##1}% \item~##1\textbf{:} % \ltx@ifpackageloaded{cleveref}{% \cref@constructprefix{pfcases}{\cref@result}% \protected@xdef\cref@currentlabel{[\pfcasecounter@pmg][][\cref@result]##1}}{} \protected@edef\@currentlabel{##1}\ignorespaces} \begin{pfcasesnonum}\def\@recthy@cases@labelindent{1em}\ignorespaces}{\end{pfcasesnonum}\ignorespacesafterend} \newenvironment{pfcases}{ \ProvideDocumentCommand{\case}{o}{ \IfNoValueTF{##1}{ \def\thiscase{}\item\!\!\textbf{:} \allowbreak%\linebreak[1]% }{ \def\thiscase{~##1}\item~##1\textbf{:} \allowbreak%\linebreak[1]% } \ltx@ifpackageloaded{cleveref}{% \cref@constructprefix{\pfcasecounter@pmg}{\cref@result}% \protected@xdef\cref@currentlabel{[\pfcasecounter@pmg][][\cref@result]\csname the\pfcasecounter@pmg \endcsname}}{}\ignorespaces} \begin{pfcasesnumbered}[labelindent=\@recthy@cases@labelindent]\def\@recthy@cases@labelindent{-1em}\ignorespaces}{\end{pfcasesnumbered}\ignorespacesafterend} \fi \ifrecthy@nosubfun \@packinfo{Not loading subfun defs.} \else \@packinfo{Loading subfun defs.} %DOCUMENT ME \newcommand{\@pnrelbar}{% \linethickness{\dimen2}% \sbox\z@{$\m@th\prec$}% \dimen@=1.1\ht\z@ \begin{picture}(\dimen@,.4ex) \roundcap \put(0,.2ex){\line(1,0){\dimen@}} \put(\dimexpr 0.5\dimen@-.2ex\relax,0){\line(1,1){.4ex}} \end{picture}% } \newcommand{\@snrelbar}{% \linethickness{\dimen2}% \sbox\z@{$\m@th\succ$}% \dimen@=1.1\ht\z@ \begin{picture}(\dimen@,.4ex) \roundcap \put(0,.2ex){\line(1,0){\dimen@}} \put(\dimexpr 0.5\dimen@-.2ex\relax,0){\line(1,1){.4ex}} \end{picture}% } \newcommand{\@precneq}{\mathrel{\vcenter{\hbox{\text{\prec@neq}}}}} \newcommand{\prec@neq}{% \dimen2=\f@size\dimexpr.04pt\relax \oalign{% \noalign{\kern\dimexpr.2ex-.5\dimen2\relax} $\m@th\prec$\cr \noalign{\kern-.5\dimen2} \hidewidth\@pnrelbar\hidewidth\cr }% } \newcommand{\@succneq}{\mathrel{\vcenter{\hbox{\text{\succ@neq}}}}} \newcommand{\succ@neq}{% \dimen2=\f@size\dimexpr.04pt\relax \oalign{% \noalign{\kern\dimexpr.2ex-.5\dimen2\relax} $\m@th\prec$\cr \noalign{\kern-.5\dimen2} \hidewidth\@snrelbar\hidewidth\cr }% } \NewDocumentCommand{\subfun}{o}{\prec\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\supfun}{o}{\succ\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\nsubfun}{o}{\nprec\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\nsupfun}{o}{\nsucc\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\subfuneq}{o}{\preceq\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\subfunneq}{o}{\@precneq\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\supfuneq}{o}{\succeq\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\supfunneq}{o}{\@succneq\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\nsubfuneq}{o}{\npreceq\IfNoValueTF{#1}{}{_{#1}}} \NewDocumentCommand{\nsupfuneq}{o}{\nsucceq\IfNoValueTF{#1}{}{_{#1}}} \fi % \let\recthy@origtagform@=\tagform@ \newcommand*{\@pmg@saveeqstate}{ \let\@origif@fleqn@pmg=\if@fleqn \let\@origiftagsleft@pmg=\iftagsleft@ \let\recthy@savedtagform@=\tagform@ } \newcommand*{\@pmg@restoreeqstate}{ \let\if@fleqn=\@origif@fleqn@pmg \let\iftagsleft@=\@origiftagsleft@pmg \let\tagform@=\recthy@savedtagform@ } \ifrecthy@noreqhelper \@packinfo{Not loading requirement assist.} \else \@packinfo{Loading requirement assist.} % \newcommand*{\req@beamer}[3][]{\ensuremath{\@recthy@reqscr{#2}^{#1}_{#3}}} \newcommand*{\req@orig}[3]{\ensuremath{\@ifmtarg{#1}{\@recthy@reqscr{#2}_{#3}}{\@recthy@reqscr{#2}_{#3}^{#1}}}} \NewDocumentCommand{\req@nohref}{sO{}mO{}m}{\req@orig{#2#4}{#3}{#5}} \NewDocumentCommand{\req@href}{O{}mO{}m}{\hyperref[\detokenize{req:#2@#1#3}]{\req@orig{#1#3}{#2}{#4}}} \NewDocumentCommand\req@href@star{s}{\IfBooleanTF#1{\req@nohref}{\req@href}} \newcommand{\req}{\req@nohref} \ifrecthy@hyperreqs \AtBeginDocument{\@ifundefined{hyperref}{}{\let\req=\req@href@star}} \fi % \newtagform{colon}{}{:} \def\recthy@colontagform@#1{\maketag@@@{\ignorespaces#1\unskip:}} \NewDocumentCommand{\refreq}{O{}mO{}}{\ref{\detokenize{req:#2@#1#3}}} \NewDocumentCommand{\require@nested}{sO{}mO{}m}{% \tag{\req@nohref[#2#4]{#3}{#5}}\IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}}% } \ifrecthy@beamersupp \AtBeginDocument{ \theoremstyle{plain} \newtheorem{reqsblock@recthy}{Requirements} \newtheorem{reqblock@recthy}{Requirement} \let\OLDreqsblock@recthy=\reqsblock@recthy \let\OLDreqblock@recthy=\reqblock@recthy \def\reqsblock@recthy{% \setbeamercolor{block title}{fg=white,bg=Maroon}% \setbeamercolor{block body}{fg=black,bg=Maroon!10}\OLDreqsblock@recthy } \def\reqblock@recthy{% \setbeamercolor{block title}{fg=white,bg=Maroon}% \setbeamercolor{block body}{fg=black,bg=Maroon!10}\OLDreqblock@recthy } } \NewDocumentCommand{\require@beamer}{sO{}mO{}m}{\tag{$\@ifmtarg{#2#4}{\mathscr{#3}_{#5}}{\mathscr{#3}_{#5}^{#2#4}}$} \IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}} & } \NewDocumentEnvironment{requirements}{d<>b}{\IfValueTF{#1}{\begin{reqsblock@recthy}<#1>}{\begin{reqsblock@recthy}}% \setlength{\abovedisplayskip}{0pt}% \setlength{\belowdisplayskip}{0pt}% \begin{requirements*} #2 \end{requirements*} \end{reqsblock@recthy}}{} \NewDocumentEnvironment{requirement}{d<>b}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}% \setlength{\abovedisplayskip}{0pt}% \setlength{\belowdisplayskip}{0pt}% \begin{requirements*} #2 \end{requirements*} \end{reqblock@recthy}}{} \NewDocumentEnvironment{requirements*}{b}{\let\tagform@=\recthy@colontagform@ \let\myhalign\halign% \def\halign{\let\mylb\\ \renewcommand{\\}{& \mylb}\myhalign}% \let\require=\require@beamer % \begin{flalign*}% #1 \end{flalign*}}{\ignorespacesafterend}%\@recthy@ignorespacesandallparsafter} % \NewDocumentEnvironment{BeamerRequire}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}% % \setlength{\abovedisplayskip}{0pt}% % \setlength{\belowdisplayskip}{0pt}% % \begin{requirement}{\req@nohref[#2#4]{#3}{#5}} \label{\detokenize{req:#3@#2#4}}% % }{ % \end{requirement}% % \vspace*{-.3cm}% % \end{reqblock@recthy}% % } % \NewDocumentEnvironment{BeamerRequire*}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}% % \setlength{\abovedisplayskip}{0pt}% % \setlength{\belowdisplayskip}{0pt}% % \begin{requirement}{\req@nohref[#2#4]{#3}{#5}} % }{ % \end{requirement}% % \vspace*{-.3cm}% % \end{reqblock@recthy}% % } \else \newenvironment{requirement}[1]{ \@pmg@saveeqstate \@fleqntrue \setlength\@mathmargin{1.5cm} \tagsleft@true \let\tagform@=\recthy@colontagform@% % \usetagform{colon} \begin{equation}\tag{#1} }{ \end{equation} \@pmg@restoreeqstate % \usetagform{default} % \let\maketag@@@=\maketag@@@orig@pmg } \NewDocumentEnvironment{require}{O{}mO{}m}{ \begin{requirement}{\req@nohref[#1#3]{#2}{#4}} \label{\detokenize{req:#2@#1#3}}% }{ \end{requirement}% } \NewDocumentEnvironment{require*}{O{}mO{}m}{ \begin{requirement}{\req@nohref[#1#3]{#2}{#4}} }{ \end{requirement}% } \NewDocumentEnvironment{requirements}{}{% \@pmg@saveeqstate% \@fleqntrue% \setlength\@mathmargin{1.5cm}% \tagsleft@true% % \usetagform{colon}% \let\tagform@=\recthy@colontagform@% \let\require=\require@nested% \gather }{\endgather% \@pmg@restoreeqstate% % \usetagform{default}% \ignorespacesafterend} \fi \fi \ifrecthy@nostructresets \@packinfo{Not loading r.e. subset commands} \else \@packinfo{Loading r.e. subset commands} %%TODO: This stuff should be in a different section % \let\@orig@setminus=\setminus \newcommand*{\promptdif}{\@orig@setminus_{\downarrow}} \let\setbefore=\promptdif \let\promptminus=\promptdif \let\promptsetminus=\promptdif \newcommand*{\splitof}{\sqsubset} \newcommand*{\splitby}{\sqsupset} %%TODO depreciate capital S for commands...and generally remove the R and D stuff \newcommand*{\strcE}{\ensuremath{\mathscr{E}}} \WithSuffix\def\strcE*{\ensuremath{\mathscr{E}^{*}}} % \let\strcE\StrcE \newcommand*{\strcL}[1]{\mathscr{L}(#1)} \newcommand*{\strcStarL}[1]{\mathscr{L}^{*}(#1)} \WithSuffix\def\strcL*{\StrcStarL} % \let\strcR=\StrcR % \let\strcD=\StrcD \fi % \newcommand*{\@recthy@abs}[1]{\lvert#1\rvert} \NewDocumentCommand{\@recthy@abs}{sm}{\IfBooleanT{#1}{\left}\lvert #2 \IfBooleanT{#1}{\right}\rvert} % \DeclarePairedDelimiter\@recthy@abs{\lvert}{\rvert} \newcommand*{\@recthy@ensuretext}[1]{\ensuremath{\text{#1}}} \ifrecthy@nomath \@packinfo{No math loading.} \else \@packinfo{math loading.} \providecommand*{\eqdef}{\overset{\text{\tiny def}}{=}} %\newcommand*{\eqdef}{\ensuremath{=\limits_{\text{\tiny def}}}} \providecommand*{\iffdef}{\stackrel{\text{\tiny def}}{\iff}} \ifdefined\aut \else \DeclareMathOperator{\aut}{Aut} \fi \ifdefined\Ord \else \DeclareMathOperator{\Ord}{Ord} \fi \NewDocumentCommand{\ceil}{sm}{\IfBooleanT{#1}{\left}\lceil #2 \IfBooleanT{#1}{\right}\rceil} % \DeclarePairedDelimiter\ceil{\lceil}{\rceil} % \DeclarePairedDelimiter\floor{\lfloor}{\rfloor} \NewDocumentCommand{\floor}{sm}{\IfBooleanT{#1}{\left}\lfloor #2 \IfBooleanT{#1}{\right}\rfloor} \recthy@strip{abs} \ifdefined\dom \else \DeclareMathOperator{\dom}{dom} \fi \ifdefined\rng \else \DeclareMathOperator{\rng}{rng} \fi \providecommand*{\restr}[1]{\mathpunct{\restriction_{#1}}} \providecommand*{\ordpair}[2]{\left( #1, #2 \right) } %%%%%%%%Function commands \providecommand*{\maps}[2]{\mathop{:}#1\mapsto #2} \providecommand*{\compfunc}{\mathbin{\circ}} \ifdefined\compose \else \let\compose=\compfunc \fi \ltx@ifpackageloaded{unicode-math}{ \newcommand{\pmapsto}{\mathrel{\nvrightarrow}} \newcommand{\pmapsfrom}{\mathrel{\nvleftarrow}} }{ % \newcommand{\pmapsto}{}% just for safety % \newcommand{\pmapsfrom}{}% just for safety \DeclareRobustCommand{\pmapsto}{\mathrel{\mathpalette\p@to@gets\to}} \DeclareRobustCommand{\pmapsfrom}{\mathrel{\mathpalette\p@to@gets\gets}} \newcommand{\p@to@gets}[2]{% \ooalign{\hidewidth$\m@th#1\mapstochar\mkern5mu$\hidewidth\cr$\m@th#1\to$\cr}% } } \newcommand{\fpmapsto}{\mathrel{\pmapsto_{< \infty}}} \newcommand{\fpmapsfrom}{\mathrel{\pmapsfrom_{< \infty}}} \newcommand{\ParFuncs}[2]{{#2}^{\subset #1}} \newcommand{\FinParFuncs}[2]{{#2}^{\subset_{< \infty} #1}} \recthy@strip{ensuretext} \providecommand{\quotient}{\quotient@recthy} \fi \ifrecthy@nooperators \@packinfo{No operators loading.} \else \@packinfo{Operators loading.} \providecommand*{\Land}{\mathop{\bigwedge}} \providecommand*{\Lor}{\mathop{\bigvee}} \providecommand*{\LLand}{\mathop{\bigwedge\mkern-15mu\bigwedge}} \providecommand*{\LLor}{\mathop{\bigvee\mkern-15mu\bigvee}} %save MnVersion in case wanted \AtBeginDocument{ \let\Join=\@recthy@Join } \ifdefined\xor \else \DeclareMathOperator{\xor}{xor} \fi \fi \ifrecthy@nosymb \@packinfo{No Special Symbols Loading.} \newcommand*{\ndownarrow}{\mathpunct{\mkern-4mu{\arrownot\mkern 4mu \downarrow}}} \else \ltx@ifpackageloaded{MnSymbol}{}{ \DeclareFontFamily{OMX}{MnSymbolE}{} \DeclareFontFamily{U} {MnSymbolB}{} \DeclareSymbolFont{MnSyB} {U} {MnSymbolB}{m}{n} \DeclareSymbolFont{MnLargeSymbols}{OMX}{MnSymbolE}{m}{n} \SetSymbolFont{MnLargeSymbols}{bold}{OMX}{MnSymbolE}{b}{n} \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{ <-6> MnSymbolE5 <6-7> MnSymbolE6 <7-8> MnSymbolE7 <8-9> MnSymbolE8 <9-10> MnSymbolE9 <10-12> MnSymbolE10 <12-> MnSymbolE12 }{} \DeclareFontShape{OMX}{MnSymbolE}{b}{n}{ <-6> MnSymbolE-Bold5 <6-7> MnSymbolE-Bold6 <7-8> MnSymbolE-Bold7 <8-9> MnSymbolE-Bold8 <9-10> MnSymbolE-Bold9 <10-12> MnSymbolE-Bold10 <12-> MnSymbolE-Bold12 }{} \DeclareFontShape{U}{MnSymbolB}{m}{n}{ <-6> MnSymbolB5 <6-7> MnSymbolB6 <7-8> MnSymbolB7 <8-9> MnSymbolB8 <9-10> MnSymbolB9 <10-12> MnSymbolB10 <12-> MnSymbolB12}{} \DeclareFontShape{U}{MnSymbolB}{b}{n}{ <-6> MnSymbolB-Bold5 <6-7> MnSymbolB-Bold6 <7-8> MnSymbolB-Bold7 <8-9> MnSymbolB-Bold8 <9-10> MnSymbolB-Bold9 <10-12> MnSymbolB-Bold10 <12-> MnSymbolB-Bold12}{} \DeclareSymbolFont{MnSyA} {U} {MnSymbolA}{m}{n} \DeclareFontFamily{U} {MnSymbolA}{} \DeclareFontShape{U}{MnSymbolA}{m}{n}{ <-6> MnSymbolA5 <6-7> MnSymbolA6 <7-8> MnSymbolA7 <8-9> MnSymbolA8 <9-10> MnSymbolA9 <10-12> MnSymbolA10 <12-> MnSymbolA12}{} \DeclareFontShape{U}{MnSymbolA}{b}{n}{ <-6> MnSymbolA-Bold5 <6-7> MnSymbolA-Bold6 <7-8> MnSymbolA-Bold7 <8-9> MnSymbolA-Bold8 <9-10> MnSymbolA-Bold9 <10-12> MnSymbolA-Bold10 <12-> MnSymbolA-Bold12}{} \DeclareMathDelimiter{\@recthy@ulcorner} {\mathopen}{MnLargeSymbols}{'036}{MnLargeSymbols}{'036} \DeclareMathDelimiter{\@recthy@urcorner} {\mathclose}{MnLargeSymbols}{'043}{MnLargeSymbols}{'043} \let\ulcorner=\@recthy@ulcorner \let\urcorner=\@recthy@urcorner \DeclareMathSymbol{\ndownarrow}{\mathpunct}{MnSyB}{3} \DeclareMathDelimiter{\@recthy@ulcorner} {\mathopen}{MnLargeSymbols}{'036}{MnLargeSymbols}{'036} \DeclareMathDelimiter{\@recthy@urcorner} {\mathclose}{MnLargeSymbols}{'043}{MnLargeSymbols}{'043} \DeclareMathSymbol{\Searrow}{\mathrel}{MnSyA}{15} \DeclareMathSymbol{\nSearrow}{\mathrel}{MnSyB}{15} } \ifrecthy@nodoubleangles \else \let\llangle=\@recthy@llangle \let\rrangle=\@recthy@rrangle \fi \fi \NewDocumentCommand{\REA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{REA}\IfValueTF{#1}{(#1)}{}}} \NewDocumentCommand{\CEA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{CEA}\IfValueTF{#1}{(#1)}{}}} % Set stuff \NewDocumentCommand{\@recthy@set}{m!G{}}{{\let\st=\mid\left\{#1 \ifthenelse{\isempty{#2}}{}{\mid #2} \right\}}} % \def\@recthy@set#1{\def\@set@argi@pmg{#1}\@ifnextchar\bgroup\@setst@pmg\@setplain@pmg} % \newcommand*{\@setst@pmg}[1]{\ifthenelse{\isempty{#1}}{\@setplain@pmg}{\left \{ \@set@argi@pmg \middle | #1\right \}}} % \newcommand*{\@setplain@pmg}{\left \{ \@set@argi@pmg \right \}} % \newcommand*{\@recthy@set}[2]{\ifthenelse{\isempty{#2}}{\left \{ #1 \right \}}{\left \{ #1 \middle | #2\right \}} } % \DeclareOptionX{setminussym}[@recthy@defaultsetminusSYM]{\edef\@recthy@setminusSYM{\expandafter\noexpand\csname #1 \endcsname}} \newcommand*{\@recthy@card}[1]{\lvert#1\rvert} \newcommand*{\@recthy@union}{\mathbin{\cup}} \newcommand*{\@recthy@Union}{\mathop{\bigcup}} \newcommand*{\@recthy@isect}{\mathbin{\cap}} \newcommand*{\@recthy@Isect}{\mathop{\bigcap}} \newcommand*{\@recthy@nin}{\notin} \NewDocumentCommand{\@recthy@powset}{O{}m}{\mathcal{P}_{#1}\left(#2\right)} \NewDocumentCommand{\@recthy@finSsets}{r[]E{^}{{< \omega}}}{\left[#1\right]^{#2}} \newcommand*{\@recthy@eset}{\emptyset} \newcommand*{\@recthy@setovercmp}[1]{\overline{#1}} \newcommand*{\@recthy@setsimcmp}[1]{\backsim #1} \let\@recthy@setcmp=\@recthy@setovercmp % \WithSuffix\def\@recthy@setcmp[#1]#2{#1\@recthy@setminus#2} \ifrecthy@nosets \@packinfo{No set cmds loading.} \else \@packinfo{Set cmds loading.} \recthy@strip{set} \recthy@strip{card} \recthy@strip{union} \recthy@strip{Union} \recthy@strip{isect} \recthy@strip{Isect} \recthy@strip{powset} \recthy@strip{finSsets} \let\ssetsOfsize\finSsets \newcommand*{\finsets}{\finSsets[\omega]\relax} \recthy@strip{eset} \recthy@strip{nin} \recthy@strip{setcmp} % \recthy@strip{setovercmp} % \recthy@strip{setminuscmp} \let\crossOrig=\cross \def\cross{} \renewcommand*{\cross}{\mathbin{\times}} \let\CrossOrig=\Cross \def\Cross{} \renewcommand*{\Cross}{\mathop{\Pi}} \providecommand*{\symdiff}{\mathbin{\Delta}} \fi \ifrecthy@noquants \@packinfo{No quants loading.} \else \@packinfo{Quants loading.} \AtBeginDocument{ \let\exists@orig@recthy=\exists \let\forall@orig@recthy=\forall \newcommand*{\exists@recthy}{\exists@orig@recthy} \newcommand*{\forall@recthy}{\forall@orig@recthy} % \NewDocumentCommand{\exists@paren@recthy}{O{}m}{\left(\exists@orig@recthy^{#1} #2 \right)\!} % \NewDocumentCommand{\exists@brak@recthy}{O{}m}{\left[\exists@orig@recthy^{#1} #2 \right]\!} \let\nexists@orig@recthy=\nexists \newcommand*{\nexists@recthy}{\nexists@orig@recthy} \let\nforall@orig@recthy=\nforall \newcommand*{\nforall@recthy}{\nforall@orig@recthy} \newcommand*{\existsuniq}{\exists@orig@recthy !} \newcommand*{\nexistsuniq}{\nexists@orig@recthy !} \WithSuffix\def\existsuniq(#1){\left(\existsuniq #1 \right)\!} \WithSuffix\def\nexistsuniq(#1){\left(\nexistsuniq #1 \right)\!} \WithSuffix\def\existsuniq[#1]{\left[\existsuniq #1 \right]\!} \WithSuffix\def\nexistsuniq[#1]{\left[\nexistsuniq #1 \right]\!} \newcommand*{\forallae}{\forall@orig@recthy^{*}} \WithSuffix\def\forallae(#1){\left(\forallae #1\right)\!} \WithSuffix\def\forallae[#1]{\left[\forallae #1\right]\!} \newcommand*{\nforallae}{\nforall@orig@recthy^{*}} \WithSuffix\def\nforallae(#1){\left(\nforallae #1\right)\!} \WithSuffix\def\nforallae[#1]{\left[\nforallae #1\right]\!} \providecommand*{\existsinf}{\exists@orig@recthy^{\infty}} \WithSuffix\def\existsinf(#1){\left(\existsinf #1\right)\!} \WithSuffix\def\existsinf[#1]{\left[\existsinf #1\right]\!} \providecommand*{\nexistsinf}{\nexists^{\infty}} \WithSuffix\def\nexistsinf(#1){\left(\nexistsinf #1\right)\!} \WithSuffix\def\nexistsinf[#1]{\left[\nexistsinf #1\right]\!} \WithSuffix\def\exists@recthy(#1){\left(\exists #1 \right)\!} % \NewDocumentCommand{\exists@recthy}{d()od()o}{\IfValueTF{#1}{\exists@paren@recthy{#1}}{\IfValueTF{#1}{\exists@brak@recthy{#2}} } } \WithSuffix\def\forall@recthy(#1){\left(\forall #1 \right)\!} \WithSuffix\def\nexists@recthy(#1){\left(\nexists #1 \right)\!} \WithSuffix\def\exists@recthy[#1]{\left[\exists #1 \right]\!} \WithSuffix\def\forall@recthy[#1]{\left[\forall #1 \right]\!} \WithSuffix\def\nexists@recthy[#1]{\left[\nexists #1 \right]\!} \WithSuffix\def\forall@recthy*{\forallae} \WithSuffix\def\nforall@recthy*{\nforallae} \WithSuffix\def\exists@recthy*{\existsinf} \WithSuffix\def\nexists@recthy*{\nexistsinf} \WithSuffix\def\exists@recthy!{\existsuniq} \let\exists=\exists@recthy \let\forall=\forall@recthy \let\nexists=\nexists@recthy \let\nforall=\nforall@recthy } % \providecommand*{\True}{\top} % \providecommand*{\False}{\bot} % \providecommand*{\liff}{\ensuremath{\leftrightarrow}} % \providecommand*{\limplies}{\ensuremath{\rightarrow}} \fi %%%%%%%%% Formula Classes \ifrecthy@nosyntax \@packinfo{No syntax loading.} \else \@packinfo{syntax loading.} \NewDocumentCommand{\DeltaN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Delta}}{\Delta}}\IfValueT{#2}{^{#2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\PiN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Pi}}{\Pi}}\IfValueT{#2}{^{#2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\SigmaN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Sigma}}{\Sigma}}\IfValueT{#2}{^{#2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\DeltaZeroN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Delta}}{\Delta}}^{0\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\PiZeroN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Pi}}{\Pi}}^{0\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\SigmaZeroN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Sigma}}{\Sigma}}^{0\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\DeltaOneN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Delta}}{\Delta}}^{1\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\PiOneN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Pi}}{\Pi}}^{1\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \NewDocumentCommand{\SigmaOneN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Sigma}}{\Sigma}}^{1\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}} \ifrecthy@shortsyntax \@packinfo{No syntax abbreviations loading.} \let\pizn=\PiZeroN \let\deltazn=\DeltaZeroN \let\sigmazn=\SigmaOneN \let\piin=\PiOneN \let\deltain=\DeltaOneN \let\sigmain=\SigmaOneN \fi \newcommand*{\logic}[2]{\mathcal{L}_{#1,#2}} \fi \ifrecthy@nospaces \@packinfo{No spaces loading.} \else \@packinfo{Spaces loading.} \providecommand*{\bstrs}{2^{<\omega}} \NewDocumentCommand{\cbstrs}{}{{2^{< \omega}}^{< \omega}} \newcommand{\bpfuncs}{{\lbrace 0,1, \diverge \rbrace}^{< \omega}} \providecommand*{\wstrs}{\omega^{<\omega}} \providecommand*{\cantor}{2^{\omega}} % \WithSuffix\def\cantor*{\left(2\union \diverge \right)^{\omega}} \providecommand*{\baire}{\omega^{\omega}} % \WithSuffix\def\baire*{\left(\omega \union \diverge \right)^{\omega}} \providecommand*{\Baire}{\mathcal{N}} \fi \newcommand\quotient@recthy[2]{ \mathchoice {% \displaystyle \text{\raise1ex\hbox{$#1$}\Big/\lower1ex\hbox{$#2$}}% } {% \textstyle #1\,/\,#2 } {% \scriptstyle #1\,/\,#2 } {% \scriptscriptstyle #1\,/\,#2 } } \DeclareRobustCommand{\unlhdneq@recthy}{\mathrel{\text{$\m@th\@unlhdneq@recthy$}}} \newcommand{\@unlhdneq@recthy}{% \ooalign{$\lneq$\cr\raise.22ex\hbox{$\lhd$}\cr}% } \DeclareRobustCommand{\unrhdneq@recthy}{\mathrel{\text{$\m@th\@unrhdneq@recthy$}}} \newcommand{\@unrhdneq@recthy}{% \ooalign{$\gneq$\cr\raise.22ex\hbox{$\rhd$}\cr}% } % \newcommand*{\unlhdneq@recthy}{% % \mathrel{\ooalign{$\lneq$\cr\raise.22ex\hbox{$\lhd$}\cr}}} \ifrecthy@notrees \@packinfo{No trees loading.} \else \@packinfo{Trees loading.} \newcommand*{\CBderiv}[2][1]{#2^{\langle#1\rangle}} \newcommand*{\pruneTree}[1]{\CBderiv[\infty]{#1}} \newcommand*{\hgt}[1]{\lVert #1 \rVert} \let\TreeMod=\quotient@recthy \newcommand*{\TreeMul}{\mathbin{\ast}} \newcommand*{\TreeExt}{\mathrel{\triangleleft}} \newcommand*{\TreeExtNeq}{\mathrel{\unlhdneq@recthy}} \fi %re set relations \ifrecthy@nosetrels \@packinfo{No setrels loading.} \else \@packinfo{setrels loading.} \AtBeginDocument{ \providecommand*{\nsupset}{\not\supset@recthy@orig} \providecommand*{\nsubset}{\not\subset@recthy@orig} \let\nsubset@recthy@orig=\nsubset \let\nsupset@recthy@orig=\nsupset \let\subset@recthy@orig=\subset \let\supset@recthy@orig=\supset \let\subseteq@recthy@orig=\subseteq \let\supseteq@recthy@orig=\supseteq \let\subsetneq@recthy@orig=\subsetneq \let\supsetneq@recthy@orig=\supsetneq } \newcommand*{\subset@recthy}{\subset@recthy@orig} \newcommand*{\supset@recthy}{\supset@recthy@orig} \newcommand*{\subseteq@recthy}{\subseteq@recthy@orig} \newcommand*{\supseteq@recthy}{\supseteq@recthy@orig} \newcommand*{\nsubset@recthy}{\nsubset@recthy@orig} \newcommand*{\nsupset@recthy}{\nsupset@recthy@orig} \newcommand*{\nsubseteq@recthy}{\nsubseteq@recthy@orig} \newcommand*{\nsupseteq@recthy}{\nsupseteq@recthy@orig} \WithSuffix\def\subset@recthy*{\subset@recthy@orig^{*}} \WithSuffix\def\supset@recthy*{\supset@recthy@orig^{*}} \WithSuffix\def\subseteq@recthy*{\subseteq@recthy@orig^{*}} \WithSuffix\def\supseteq@recthy*{\supseteq@recthy@orig^{*}} \WithSuffix\def\subsetneq@recthy*{\subsetneq@recthy@orig^{*}} \WithSuffix\def\supsetneq@recthy*{\supsetneq@recthy@orig^{*}} \WithSuffix\def\nsubset@recthy*{\nsubset^{*}} \WithSuffix\def\nsupset@recthy*{\nsupset^{*}} \WithSuffix\def\nsubseteq@recthy*{\nsubseteq^{*}} \WithSuffix\def\nsupseteq@recthy*{\nsupseteq^{*}} \AtBeginDocument{ \let\subset=\subset@recthy \let\supset=\supset@recthy \let\subseteq=\subseteq@recthy \let\supseteq=\supseteq@recthy \let\subsetneq=\subsetneq@recthy \let\supsetneq=\supsetneq@recthy \let\nsubset=\nsubset@recthy \let\nsupset=\nsupset@recthy \let\nsubseteq=\nsubseteq@recthy \let\nsupseteq=\nsupseteq@recthy } \newcommand*{\eq}{=} \WithSuffix\def\eq*{=^{*}} \newcommand*{\eqae}{=^{*}} \newcommand*{\neqae}{\neq^{*}} \WithSuffix\def\neq*{\neq^{*}} \newcommand*{\infsubset}{\subset_{\infty}} \WithSuffix\def\infsubset*{\infsubset^{*}} \let\subsetnaeq=\infsubset \newcommand*{\infsupset}{\supset_{\infty}} \WithSuffix\def\infsupset*{\infsupset^{*}} \let\supsetnaeq=\infsupset \newcommand*{\majsubset}{\subset_{m}} \newcommand*{\majsupset}{\supset_{m}} \fi %%% ORdinal notations % constructive/recursive ordinals % \DeclarePairedDelimiter\@recthy@Vert{\lVert}{\rVert} \ifrecthy@noordinalnotations \@packinfo{No ordinal notations loading.} \else \@packinfo{ordinal notations loading.} \providecommand*{\wck}{\ensuremath{\omega^{\mathrm{CK}}_1}} % \newcommand*{\ordtype}[1]{\ensuremath{\@recthy@abs{#1}_{\kleeneO}}} % \newcommand*{\ordzero}{\ensuremath{0}} \def\kleeneOSYM{\mathcal{O}} \NewDocumentCommand{\kleeneO}{st+t-D(){}o}{\IfBooleanTF{#2}{\vphantom{\kleeneOSYM}^{+}{\kleeneOSYM}}{\IfBooleanTF{#3}{\overrightarrow{\kleeneOSYM}}{\kleeneOSYM}}^{#4}_{\IfBooleanTF{#1}{1\IfValueTF{#5}{,\, #5}{}}{\IfValueTF{#5}{#5}{}}}} \newcommand*{\Ouniq}{\kleeneO*} % \newcommand*{\kleeneO}{\let\@PMG@parenarg\@PMG@undefined\let\@PMG@braketarg\@PMG@undefined\@kleeneObody} % \newcommand*{\@kleeneObody}{\kleeneOSYM\ifdefined\@PMG@parenarg % ^{\@PMG@parenarg}% % \fi% % \ifdefined\@PMG@braketarg % _{\abs{\@PMG@braketarg}}% % \fi} % \WithSuffix\def\@kleeneObody(#1){\def\@PMG@parenarg{#1}\@kleeneObody} % \WithSuffix\def\@kleeneObody[#1]{\def\@PMG@braketarg{#1}\@kleeneObody} % \WithSuffix\def\@kleeneObody*{\def\kleeneOSYM{\mathcal{O}}\@kleeneObody} % \newcommand*{\kleeneObelow}[2][]{\kleeneOSYM_{<#2\ifthenelse{\isempty{#1}}{}{, #1}}} % \let\kleeneOless\kleeneObelow % \NewDocumentCommand{\Obelow}{sm}{\IfNoValueTF{#1}{\kleeneO[#1]}{\kleeneO*[#1]}} % \NewDocumentCommand{\ObelowOrd}{sm}{\IfNoValueTF{#1}{\kleeneO[\abs{#1}]}{\kleeneO*[\abs{#1}]}} % \let\uniqOrdNotations=\kleeneOuniq % \newcommand*{\kleeneNum}[1]{{#1}_{\kleeneOSYM}} \NewDocumentCommand{\Oless}{o}{<_{\kleeneOSYM\IfNoValueTF{#1}{}{, #1}}} % \let\kleenel=\kleeneless \NewDocumentCommand{\Oleq}{o}{\leq_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}} \NewDocumentCommand{\Onless}{o}{\nless_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}} % \let\kleenenl=\kleenenless \NewDocumentCommand{\Onleq}{o}{\nleq_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}} \NewDocumentCommand{\Ogtr}{o}{>_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}} % \let\kleeneg=\kleenegtr \NewDocumentCommand{\Ogeq}{o}{\geq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} \NewDocumentCommand{\Ongtr}{o}{\ngtr_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % \let\kleeneng=\kleenengtr \NewDocumentCommand{\Ongeq}{o}{\ngeq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} \newcommand*{\Oadd}{\mathbin{+_{\kleeneOSYM}}} \newcommand*{\Omul}{\times_{\kleeneOSYM}} \NewDocumentCommand{\Ohgt}{sm}{\IfBooleanT{#1}{\left}\lVert #2 \IfBooleanT{#1}{\right}\rVert_{\kleeneOSYM}} % \newcommand*{\Ohgt}[1]{\lVert #1\rVert_{\kleeneOSYM}} \let\Oabs=\Ohgt % \let\hgtO=\kleenehgt \newcommand*{\Olim}[2]{{#1}_{[#2]}} \newcommand*{\Opred}[1]{{#1}^{-}} \NewDocumentCommand{\Ofunc}{mod()}{{\left\{ #1 \right\}}^{\kleeneOSYM}\IfValueTF{#2}{_{#2}}{}\IfValueTF{#3}{\left(#3\right)}{}} % \ifrecthy@shortO % \@packinfo{Short O enabled (disable if you define O to be a macro elsewhere).} % \let\Oless=\kleeneless % % \NewDocumentCommand{\Oless}{o}{<_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % \newcommand*{\Ouniq}{\kleeneO*} % % \let\kleenel=\kleeneless % \let\Oleq=\kleeneleq % \let\Onless=\kleenenless % \let\Onleq=\kleenenleq % \let\Ogtr=\kleenegtr % % \NewDocumentCommand{\Oleq}{o}{\leq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % % \NewDocumentCommand{\Onless}{o}{\nless_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % % \let\Onl=\kleenenless % % \NewDocumentCommand{\Onleq}{o}{\nleq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % \NewDocumentCommand{\Ogtr}{o}{>_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % % \let\Og=\kleenegtr % \NewDocumentCommand{\Ogeq}{o}{\geq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % \NewDocumentCommand{\Ongtr}{o}{\ngtr_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % \let\Ongeq=\kleenengeq % \NewDocumentCommand{\Ongeq}{o}{\ngeq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} % \newcommand*{\OPlus}{\mathbin{+_{\kleeneO}}} % % \newcommand*{\kleeneMul}{\cdot_{\kleeneO}} % \newcommand*{\Oabs}[1]{\lvert #1\rvert_{\kleeneOSYM}} % % \let\Oabs=\Ohgt % % \let\kleeneHgt=\kleenehgt % % \let\hgtO=\kleenehgt % % \newcommand*{\Ofunc}[2]{\lbracket{#1}\rbracket^{\kleeneOSYM}\left(#2\right)}} % % \newcommand*{\kleenepred}[1]{{#1}^{-}} % % \newcomand*{\limOrd} % % \DeclareMathOperator{\limO} % \else % \fi \fi % \newcommand*{\axiom}{2}{#1} %alpha REA stuff % \newcommand*{\alphaREA}[1][\alpha]{\ensuremath{ #1 \text{-REA}} } \newcommand*{\@PMG@VdashStar}{{\Vdash\smash{\mkern-12mu\raise4\p@\hbox{\text{\tiny*}}}\mkern2mu}} % Forcing \ifrecthy@noforcing \@packinfo{No forcing loading.} \else \@packinfo{forcing loading.} \def\@PMG@curfrcsym{\Vdash} \providecommand*{\forces}{\def\@PMG@frcparenarg{}\def\@PMG@frcbraketarg{}\@forcesBody} \newcommand*{\@forcesBody}{\mathrel{{\@PMG@curfrcsym}^{\@PMG@frcparenarg}_{\@PMG@frcbraketarg}}} \WithSuffix\def\@forcesBody(#1){\def\@PMG@frcparenarg{#1}\@forcesBody} \WithSuffix\def\@forcesBody[#1]{\def\@PMG@frcbraketarg{#1}\@forcesBody} \WithSuffix\def\@forcesBody*{\let\@PMG@curfrcsym=\@PMG@VdashStar\@forcesBody} % \newcommand*{\wforces}[]{\forces(w)[#1]} \NewDocumentCommand{\wforces}{d()O{}}{{\forces(w\IfValueT{#1}{, #1})[#2]}} % \newcommand*{\wforces}[1][]{\forces(w)[#1]} % \newcommand*{\wforces}[1][]{\mathrel{{\@PMG@curfrcsym}^{w}_{#1}}} % \long\def\forces@[#1][#2]{\Vdash^{#2}_{#1}} % \newcommand{\forces}{\optparams{\forces@}{[][]}% % } % \providecommand*{\frc}{\forces} \fi %%%ABREVIATIONS % %Degree Classes % \ifrecthy@nodegclasses % \@packinfo{No degree classes loading.} % \else % \@packinfo{Degree classes loading.} % \fi \ifrecthy@nocomputations \@packinfo{No computations loading.} \else %%%%%% \newcommand*{\murec}[2]{\ensuremath{\mu#1\left( #2 \right) }} %\newcommand*{\brecfSYM}{\phi} % \newcommand*{\recf}[3][]{\@recthy@recfSYM^{#1}_{#2}\ifthenelse{\isempty{#3}}{}{\left(#3\right)}} %If give an empty arg just print function no parens %\newcommand*{\brecf}[3][]{\brecfSYM^{#1}_{#2}\ifthenelse{\isempty{#3}}{}{\left(#3\right)}} %\recfnl[d]{i}{Y}{x} gives i-th d-recursive functional operating on set Y and integer x \NewDocumentCommand{\recfnl}{oD(){}m!G{#2}!g!d()}{{ \def\temp@pmg@arg{} \IfValueTF{#5}{\ifthenelse{\isempty{#5}}{}{\def\temp@pmg@arg{; #5}}}{\IfValueTF{#6}{\ifthenelse{\isempty{#6}}{}{\def\temp@pmg@arg{; #6}}}} \@recthy@recfnlSYM_{#3\IfValueT{#1}{, #1}}\ifthenelse{\isempty{#4}}{}{\!\left(#4\temp@pmg@arg \right)} }} \NewDocumentCommand{\recf}{od()md()}{ \@recthy@recfSYM_{#3\IfNoValueTF{#1}{}{\ifthenelse{\isempty{#3}}{}{, }{#1}}}\IfNoValueTF{#2}{}{^{#2}}\IfNoValueTF{#4}{}{(#4)} } \newcommand*{\cequiv}{\mathrel{\simeq}} \newcommand*{\ncequiv}{\mathrel{\not\simeq}} \NewDocumentCommand{\conv}{O{}}{\mathpunct{\downarrow}_{#1}} \let\converge=\conv %\newcommand*{\convs}[1]{\ensuremath{\conv_{#1}}} % \NewDocumentCommand{\nconv}{o}{\mathpunct{\mkern-4mu{\arrownot\mkern 4mu \downarrow}_{#1}}} \NewDocumentCommand{\nconv}{O{}}{\mathpunct{\ndownarrow_{#1}}} \newcommand*{\diverge}{\mathpunct{\uparrow}} \newcommand*{\use}[1]{\mathop{\@recthy@useSYM}\left[#1\right]} % \newcommand*{\use}[1]{\ltx@ifpackageloaded{unicode-math}{\symbffrak{u}}{\mathfrak{u}}\left(#1\right)} % \NewDocumentCommand{\REset}{D(){}omd()}{ % W_{#2\IfNoValueTF{#1}{}{, #1}}\IfNoValueTF{#3}{}{^{#3}} % } \NewDocumentCommand{\REset}{D(){}oD(){#1}mO{#2}}{{W_{#4\IfValueTF{#5}{, #5}{}}^{#3}}} \NewDocumentCommand{\Hop}{oD(){}mD(){}}{\mathcal{H}_{#3\IfValueTF{#1}{, #1}{}}\left(\ifthenelse{\isempty{#2#4}}{\eset}{#2#4} \right)} \NewDocumentCommand{\REAop}{st+d()od()mm}{% {\IfBooleanTF{#1}% {\widehat{\mathcal{J}}}% {\mathcal{J}}% }^{% \IfBooleanTF{#2}{\vphantom{x}^\dagger}{}% #7}_{#6\IfValueTF{#4}{, #4}{}}% \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}% } \newcommand*{\entersat}[1]{\mathbin{\searrow_{#1}}} \fi \newcommand*{\@recthy@join}{\mathbin{\vee}} \newcommand*{\@recthy@meet}{\mathbin{\wedge}} \newcommand*{\@recthy@Meet}{\mathop{\bigwedge}} \newcommand*{\@recthy@Join}{\mathop{\bigvee}} \ifrecthy@nodegrees \@packinfo{No degrees loading.} \else \DeclareMathOperator{\@recthy@HYP}{HYP} \NewDocumentCommand{\HYP}{o}{\@recthy@HYP\IfValueTF{#1}{\left(#1\right)}{}} \let\hyp=\HYP \newcommand*{\@recthy@TSYM}{\symbf{T}} \newcommand*{\@recthy@ASYM}{\symbf{a}} \newcommand*{\Tdegrees}{\ensuremath{\mathscr{D}}} \let\strcD=\Tdegrees \newcommand*{\Tdegreesjump}{\ensuremath{\mathscr{D}'}} % \WithSuffix\def\Tdegrees'\Tdegreesjump % \WithSuffix\def\Tdegrees(#1){\Tdegrees\left(#1\right)} % \WithSuffix\def\Tdegreesjump(#1){\Tdegreesjump\left(#1\right)} \newcommand*{\REdegrees}{\ensuremath{\mathscr{R}}} \let\strcR=\REdegrees % \WithSuffix\def\REdegrees(#1){\REdegrees\left(#1\right)} \newcommand*{\Adegrees}{\ensuremath{\mathscr{D}_{\@recthy@ASYM}}} \let\strcDa=\Adegrees % \WithSuffix\def\Adegrees(#1){\Adegrees\left(#1\right)} \newcommand*{\Adegreesjump}{\ensuremath{\mathscr{D}'_\@recthy@ASYM}} % \WithSuffix\def\Adegrees'\Adegreesjump % \WithSuffix\def\Adegreesjump(#1){\Adegreesjump\left(#1\right)} \newcommand*{\AREAdegrees}{\ensuremath{\mathscr{R}_\@recthy@ASYM}} \let\strcRa=\AREAdegrees % \WithSuffix\def\AREdegrees(#1){\AREdegrees\left(#1\right)} \newcommand{\Low}[1][]{\ensuremath{ \text{Low}^{#1} }} \newcommand{\LowN}[2][]{\ensuremath{ \text{Low}^{#1}_{#2} }} \newcommand{\lowN}[2][]{\ensuremath{ \mathcal{L}^{#1}_{#2} }} %%%%%%Turing Degrees \def\firsttokof@pmg#1{\first@pmg@rdmxs(#1)} \def\first@pmg@rdmxs(#1#2){#1} \let\Tdegvar=\symbf % \providecommand*{\Tdegvar}[1]{\symbf{#1}} % \providecommand*{\Tdegof}[1]{\utilde{#1}} \protected\def\Tdeg#1{\ifthenelse{ % \equal{\detokenize{\Tzero}}{\futurelet\next@pmg\discard#1\@nil\expandafter\detokenize{\next@pmg}} \equal{\detokenize{\Tzero}}{\detokenize{#1}} \OR \equal{\detokenize{\zeroj}}{\detokenize{#1}} \OR \equal{\detokenize{\zerojj}}{\detokenize{#1}} \OR \equal{\detokenize{\zerojjj}}{\detokenize{#1}} \OR \equal{\string \zeron }{\expandafter\string \first@pmg@rdmxs(#1)} }{#1}{\Tdegvar{#1}}} % \let\Adef=\Tdeg \providecommand*{\Tjump}[1]{{#1}'} \let\jump=\Tjump \providecommand*{\jumpn}[2]{{#1}^{(#2)}} \providecommand*{\jjump}[1]{{#1}''} \providecommand*{\jjjump}[1]{{#1}'''} % \newcommand*{\Tzerosym}{\MVZero} \newcommand*{\Tzerosym}{\symbf{0}} \providecommand*{\Tzero}{{\Tzerosym}} \providecommand*{\zeron}[1]{{\Tzerosym}^{(#1)}} \providecommand*{\zeroj}{\jump{{\Tzerosym}}} \providecommand*{\zerojj}{\jjump{\Tzerosym}} \providecommand*{\zerojjj}{\jjjump{\Tzerosym}} % \let\Tzerojj=\zerojj % \let\Tzerojjj=\zerojjj %%Misc Recursion theory stuff %turing equivalent \providecommand*{\Tequiv}{\mathrel{\equiv_{\@recthy@TSYM}}} %DEPRECIATED \providecommand*{\Teq}{\Tequiv} \providecommand*{\nTequiv}{\mathrel{\ncong_{\@recthy@TSYM}}} \providecommand*{\nTeq}{\nTequiv} \providecommand*{\Tlneq}{\lneq_{\@recthy@TSYM}} \providecommand*{\Tleq}{\leq_{\@recthy@TSYM}} \providecommand*{\Tgneq}{\gneq_{\@recthy@TSYM}} \providecommand*{\Tgeq}{\geq_{\@recthy@TSYM}} \providecommand*{\Tgtr}{>_{\@recthy@TSYM}} \providecommand*{\Tless}{<_{\@recthy@TSYM}} \providecommand*{\nTleq}{\nleq_{\@recthy@TSYM}} \providecommand*{\nTgeq}{\ngeq_{\@recthy@TSYM}} \providecommand*{\Aeq}{\mathrel{\equiv_{\@recthy@ASYM}}} \providecommand*{\nAeq}{\mathrel{\ncong_{\@recthy@ASYM}}} \providecommand*{\Alneq}{\lneq_{\@recthy@ASYM}} \providecommand*{\Aleq}{\leq_{\@recthy@ASYM}} \providecommand*{\Agneq}{\gneq_{\@recthy@ASYM}} \providecommand*{\Ageq}{\geq_{\@recthy@ASYM}} \providecommand*{\Agtr}{>_{\@recthy@ASYM}} \providecommand*{\Aless}{<_{\@recthy@ASYM}} \providecommand*{\nAleq}{\nleq_{\@recthy@ASYM}} \providecommand*{\nAgeq}{\ngeq_{\@recthy@ASYM}} % \providecommand*{\Tdegjoin}{\mathbin{\vee}} % \providecommand*{\Tdegmeet}{\mathbin{\wedge}} \let\MnJoin=\Join \let\meet=\@recthy@meet \let\join=\@recthy@join \let\Join=\@recthy@Join \let\Meet=\@recthy@Meet % \let\Tjoin=\degjoin % \let\Tjoin=\degJoin % \let\Tmeet=\degmeet % \let\TMeet=\degMeet \providecommand*{\Tplus}{\mathbin{\oplus}} \providecommand*{\TPlus}{\mathop{\bigoplus}} \let\Oplus=\TPlus \providecommand*{\Tincompat}{\incompat@recthy[\@recthy@TSYM]} % \providecommand*{\Tincomp}{\Tincompat} \providecommand*{\Tcompat}{\compat@recthy[\@recthy@TSYM]} \providecommand*{\nTincompat}{\Tcompat} % \providecommand*{\nTincomp}{\Tcompat} \newcommand*{\@recthy@ttSYM}{\ensuremath{\mathtt{tt}}} \newcommand*{\ttSYM}{\@recthy@ttSYM} \newcommand*{\ttlneq}{\lneq_{\@recthy@ttSYM}} \newcommand*{\ttleq}{\leq_{\@recthy@ttSYM}} \newcommand*{\ttgneq}{\gneq_{\@recthy@ttSYM}} \newcommand*{\ttgeq}{\geq_{\@recthy@ttSYM}} \newcommand*{\ttgtr}{>_{\@recthy@ttSYM}} \newcommand*{\ttless}{<_{\@recthy@ttSYM}} \newcommand*{\ttnleq}{\nleq_{\@recthy@ttSYM}} \newcommand*{\ttngeq}{\ngeq_{\@recthy@ttSYM}} %arithmetic comparisons % \providecommand*{\Adegvar}[1]{\symbf{#1}_{\@recthy@ASYM}} % \protected\def\Adeg#1{\ifthenelse{ % \equal{\detokenize{\Azero}}{\detokenize{#1}} \OR % \equal{\detokenize{\Azeroj}}{\detokenize{#1}} \OR % \equal{\detokenize{\Azerojj}}{\detokenize{#1}} \OR % \equal{\detokenize{\Azerojjj}}{\detokenize{#1}} \OR % \equal{\detokenize{\zeroj}}{\detokenize{#1}} \OR % \equal{\detokenize{\zerojj}}{\detokenize{#1}} \OR % \equal{\detokenize{\zerojjj}}{\detokenize{#1}} \OR % \equal{\string \Azeron }{\expandafter\string \first@pmg@rdmxs(#1)} % }{#1}{\Adegvar{#1}}} \providecommand*{\Aequiv}{\mathrel{\equiv_{\@recthy@ASYM}}} \providecommand*{\Aeq}{\Aequiv} \providecommand*{\nAequiv}{\mathrel{\ncong_{\@recthy@ASYM}}} \providecommand*{\nAeq}{\nAequiv} \providecommand*{\Alneq}{\lneq_{\@recthy@ASYM}} \providecommand*{\Aleq}{\leq_{\@recthy@ASYM}} \providecommand*{\Agneq}{\gneq_{\@recthy@ASYM}} \providecommand*{\Ageq}{\geq_{\@recthy@ASYM}} \providecommand*{\Agtr}{>_{\@recthy@ASYM}} \providecommand*{\Aless}{<_{\@recthy@ASYM}} \providecommand*{\nAleq}{\nleq_{\@recthy@ASYM}} \providecommand*{\nAgeq}{\ngeq_{\@recthy@ASYM}} \providecommand*{\wjump}[1]{\jumpn{#1}{\omega}} \providecommand*{\zerow}[1]{\zeron{\omega}} \newcommand*{\Azerosym}{\symbf{0}_{\@recthy@ASYM}} \providecommand*{\Azero}{{\Azerosym}} \providecommand*{\Azeron}[1]{{\Azerosym}^{(#1)}} \providecommand*{\Azeroj}{\jump{\Azerosym}} \providecommand*{\Azerojj}{\jjump{\Azerosym}} \providecommand*{\Azerojjj}{\jjjump{\Azerosym}} \providecommand*{\Azeron}[1]{{\Azerosym}^{(#1)}} \providecommand*{\Aincompat}{\incompat@recthy[\@recthy@ASYM]} % \providecommand*{\Tincomp}{\Tincompat} \providecommand*{\Acompat}{\compat@recthy[\@recthy@ASYM]} \providecommand*{\nAincompat}{\Tcompat} \fi \ifrecthy@stepsenv \@packinfo{Experimental steps code loaded.} \newlist{pmg@steps}{enumerate}{4} \setlist[pmg@steps,1]{label={Step \arabic*}, ref={\arabic*}, labelsep=1em} \setlist[pmg@steps,2]{label={Step \arabic{pmg@stepsi}\alph*}, ref={\arabic{pmg@stepsi}\alph*}} \setlist[pmg@steps,3]{label={Step \arabic{pmg@stepsi}\alph{pmg@stepsii}.\Roman*}, ref={\arabic{pmg@stepsi}\alph{pmg@stepsii}.\Roman*}} \setlist[pmg@steps,4]{label={Step \arabic{pmg@stepsi}\alph{pmg@stepsii}.\Roman{pmg@stepsiii}\Alph*}, ref={\arabic{pmg@stepsi}\alph{pmg@stepsii}.\Roman{pmg@stepsiii}\Alph*}} \crefname{pmg@stepsi}{step}{steps} \Crefname{pmg@stepsi}{Step}{Steps} \crefname{pmg@stepsii}{step}{steps} \Crefname{pmg@stepsii}{Step}{Steps} \crefname{pmg@stepsiii}{step}{steps} \Crefname{pmg@stepsiii}{Step}{Steps} \crefname{pmg@stepsiiii}{step}{steps} \Crefname{pmg@stepsiiii}{Step}{Steps} \NewDocumentEnvironment{steps}{o}{ \begingroup \ProvideDocumentCommand{\step}{o}{\IfValueTF{##1}{\item\textbf{##1}:}{\item}} \IfValueTF{#1}{\begin{pmg@steps}[#1]}{\begin{pmg@steps}}% }{% \end{pmg@steps}% \endgroup\ignorespacesafterend% } % \ExplSyntaxOn % \cs_new:cpn {steps*} {\steps*} % \cs_new_eq:cN {endsteps*} \endsteps % \ExplSyntaxOff \else \@packinfo{No steps} \fi