diff options
author | Norbert Preining <preining@logic.at> | 2021-04-04 02:23:36 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2021-04-04 02:23:36 +0000 |
commit | 1a53593bfbac96343bdf613c0acd773c2fbaa304 (patch) | |
tree | c5a8b5acb9e569160e7479dc52ed672d89bfae8a /Master/texmf-dist/tex/latex/rec-thy | |
parent | 147be8860efaa13b157e8dae13bda82f504abec4 (diff) |
rec-thy (4apr21)
git-svn-id: svn://tug.org/texlive/trunk@58732 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/rec-thy')
-rw-r--r-- | Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty | 1560 |
1 files changed, 854 insertions, 706 deletions
diff --git a/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty b/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty index b02e5298912..b2a3e7775eb 100644 --- a/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty +++ b/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty @@ -2,8 +2,7 @@ % Release Notes see README \RequirePackage{expl3} \RequirePackage{ltxcmds} -\RequirePackage{expl3} -\RequirePackage{ifxetex,ifpdf} +\RequirePackage{iftex,ifpdf} \RequirePackage{suffix} \RequirePackage{ifmtarg} \RequirePackage{xifthen} @@ -11,10 +10,10 @@ \RequirePackage{etoolbox} \RequirePackage{pict2e,picture} \RequirePackage{xparse} -\def\recthyVersion{3.6} +\def\recthyVersion{3.7} \ProvidesExplPackage {rec-thy} - {2021/02/28} + {2021/03/30} {\recthyVersion} {Provides commands for writing up recursion theory papers} @@ -40,31 +39,34 @@ \robustify\( \robustify\) - +\ltx@ifpackageloaded{unicode-math}{}{\RequirePackage{mathrsfs}}%\RequirePackage{mathbbol}} + \ltx@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}} + % \ltx@ifpackageloaded{amssymb}{}{\RequirePackage{amssymb}} + % \ltx@ifpackageloaded{amsfonts}{}{\RequirePackage{amsfonts}} \AtBeginDocument{ % \@ifundefined{hyperref}{\providecommand{\texorpdfstring}[2]{def} } -\ltx@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}} -\ltx@ifpackageloaded{amssymb}{}{\RequirePackage{amssymb}} -\ltx@ifpackageloaded{amsfonts}{}{\RequirePackage{amsfonts}} -\ltx@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}} -\ltx@ifpackageloaded{unicode-math}{}{\RequirePackage{mathrsfs}\RequirePackage{mathbbol}} -% 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}}} - } + + \ltx@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}} + + % 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 -\ifxetex -\else +\ifpdftex \def\symbf#1{\mathbf{#1}} + \mathchardef\@recthy@mhyphen="2D % Define a "math hyphen" +\else + \def\@recthy@mhyphen{\mathhyphen} \fi @@ -128,7 +130,8 @@ \newif\ifrecthy@nooperators \recthy@nooperatorsfalse \newif\ifrecthy@fix@typeset \recthy@fix@typesettrue \newif\ifrecthy@nodoubleangles \recthy@nodoubleanglesfalse -%\newif\ifrecthy@nomodule \recthy@nomodulefalse +\newif\ifrecthy@stepsenv \recthy@stepsenvfalse +\newif\ifrecthy@compatThreeSixOrEarlier \recthy@compatThreeSixOrEarlierfalse \DeclareOptionX{nohyphenation}{\recthy@nohyphenationtrue} \DeclareOptionX{mrref}{\recthy@mrreftrue} @@ -153,19 +156,31 @@ \DeclareOptionX{nosubfun}{\recthy@nosubfuntrue} \DeclareOptionX{nopfcases}{\recthy@nopfcasestrue} \DeclareOptionX{noprioritytrees}{\recthy@noprioritytreestrue} -\DeclareOptionX{suppPriorityTrees}{\recthy@nosuppprioritytreesfalse} \DeclareOptionX{nohyperreqs}{\recthy@hyperreqsfalse} \DeclareOptionX{nooperators}{\recthy@nooperatorstrue} +\DeclareOptionX{nofixtype}{\recthy@fix@typesetfalse} +\DeclareOptionX{nodoubleangles}{\recthy@nodoubleanglestrue} +\DeclareOptionX{steps}{\recthy@stepsenvtrue} + \DeclareOptionX{compat31}{\recthy@compat@threeOne} \DeclareOptionX{compat35}{\recthy@compat@threeFive} -\DeclareOptionX{nofixtype}{\ifrecthy@fix@typesetfalse} -\DeclareOptionX{nodoubleangles}{\ifrecthy@nodoubleanglestrue} +\DeclareOptionX{compat36}{\recthy@compat@threeSix} +\DeclareOptionX{suppPriorityTrees}{ +\ifrecthy@compatThreeSixOrEarlier + \@packinfo{Enabling depreciated Support Priority Tree functionality. These functions are only accessible in compatibility mode and should not be used in new documents} + \recthy@nosuppprioritytreesfalse +\else + \PackageWarningNoLine{rec-thy}{Suplemental Priority Tree option depreciated. Combine with one of the options compat36,compat32 or compat 31 to access these functions.} +\fi +} \newcommand*{\recthy@rollback@threeTwo}{} \newcommand*{\recthy@rollback@threeSix}{} -\newcommand*{\recthy@compat@threeFive}{\recthy@rollback@threeSix} -\newcommand*{\recthy@compat@threeOne}{\recthy@compat@threeFive\recthy@rollback@threeTwo} +\newcommand*{\recthy@rollback@threeSeven}{} +\newcommand*{\recthy@compat@threeSix}{\recthy@compatThreeSixOrEarliertrue\AtEndOfPackage{\recthy@rollback@threeSeven}} +\newcommand*{\recthy@compat@threeFive}{\recthy@compatThreeSixOrEarliertrue\recthy@compat@threeSix\AtEndOfPackage{\recthy@rollback@threeSix}} +\newcommand*{\recthy@compat@threeOne}{\recthy@compatThreeSixOrEarliertrue\recthy@compat@threeFive\AtEndOfPackage{\recthy@rollback@threeTwo}} %\DeclareOptionX{nomodule}{\recthy@nomoduletrue} @@ -178,194 +193,352 @@ \let\@recthy@ballsymb\@recthy@ballsymb@default \DeclareOptionX{ballsymb}[@recthy@ballsymb@default]{\letcs{\@recthy@ballsymb}{#1}} -\AtEndOfPackage{ - \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: + + + + + + + + + +\let\pmg@casefont\textsc +\DeclareOptionX{pfcasefont}[textsc]{\letcs{\pmg@casefont}{#1}} + + + +\let\@recthy@reqscr\mathscr +\DeclareOptionX{reqscr}[mathscr]{\letcs{\@recthy@reqscr}{#1}} +% \DeclareOptionX{beamerreq}[@recthy@EmptyStr@Default]{\letcs{\@recthy@EmptyStr}{#1}} + + + + + + + + +% \newcommand*{\@recthy@REA}{\ensuremath{\text{REA}}} +% \WithSuffix\def\@recthy@REA[#1]{#1-\@recthy@REA\relax} +% \newcommand*{\@recthy@CEA}{\ensuremath{\text{CEA}}} +% \WithSuffix\def\@recthy@CEA[#1]{#1-\@recthy@CEA\relax} + +\DeclareOptionX{reterms}{% + \let\@recthy@ce=\@recthy@re + \let\@recthy@computable=\@recthy@recursive + \let\@recthy@computablyEnumerable=\@recthy@recursivelyEnumerable + \let\@recthy@ComputablyEnumerable=\@recthy@RecursivelyEnumerable + } %Make all references to ce change to re + + \DeclareOptionX{reaterms}{% + \let\@recthy@CEA=\@recthy@REA + } + +\DeclareOptionX{ceterms}{% + \let\@recthy@re=\@recthy@ce + \let\@recthy@recursive=\@recthy@computable + \let\@recthy@recursivelyEnumerable=\@recthy@computablyEnumerable + \let\@recthy@RecursivelyEnumerable=\@recthy@ComputablyEnumerable + } %Make all references to re change to ce + +\DeclareOptionX{ceaterms}{% + \let\@recthy@REA=\@recthy@CEA + } + +\def\@recthy@setdiffSYMdefault{-} +\let\@recthy@setdiffSYM=\@recthy@setdiffSYMdefault +\DeclareOptionX{diffsym}[@recthy@setdiffSYMdefault]{\letcs{\@recthy@setdiffSYM}{#1}} +% \newcommand*{\@recthy@Cform@default}{\prescript{\mathcal{C}}{}{\Pi}} + + +\newcommand*{\@recthy@CDelta@default}{\prescript{\mathcal{C}}{}{\Delta}} +\newcommand*{\@recthy@CSigma@default}{\prescript{\mathcal{C}}{}{\Sigma}} +\newcommand*{\@recthy@CPi@default}{\prescript{\mathcal{C}}{}{\Pi}} +\let\@recthy@CDelta=\@recthy@CDelta@default +\let\@recthy@CSigma=\@recthy@CSigma@default +\let\@recthy@CPi=\@recthy@CPi@default +\DeclareOptionX{cdeltasym}[@recthy@CDelta@default]{\letcs{\@recthy@CDelta}{#1}} +\DeclareOptionX{csigmasym}[@recthy@CSigma@default]{\letcs{\@recthy@CSigma}{#1}} +\DeclareOptionX{cpisym}[@recthy@CPi@default]{\letcs{\@recthy@CPi}{#1}} +% \DeclareOptionX{cformsym}[@recthy@Cform@default]{\letcs{\@recthy@CPi}{#1}\letcs{\@recthy@CSigma}{#1}\letcs{\@recthy@CDelta}{#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@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@langle +\let\@recthy@rcodedelim=\@recthy@rangle +\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}} + + + + + + +% \ProcessOptions* +% \ProcessOptionsX<\@recthy@family> +\ProcessOptionsX + +%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 - \macc@nested@a\relax111{#1}% + \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 - %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}% + \overline{\rel@kern{-0.6}\kern\dimen@#1}% \fi - \endgroup - } + }% + \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 - \@packinfo{Not loading Fix Typesetting} + %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 -\AtEndOfPackage{ - \ifrecthy@noprioritytrees - \@packinfo{Not loading Priority Tree Helper} - \else - \@packinfo{Loading Priority Tree Helper.} - \providecommand{\PriorityTree}{\mathbb{T}} - \providecommand{\tpath}[1][]{\ifthenelse{\isempty{#1}}{\symbf{f}}{\mathbb{f}_{#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 - \providecommand{\ball}[3][]{{\@recthy@ballsymb}^{#1}(#2, #3)} - \fi -} + + + \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}} + + + \appto{\recthy@rollback@threeSix}{ + \renewcommand*{\@recthy@pair}[2]{\mathopen{\@recthy@llangle} #1, #2 \mathclose{\@recthy@rrangle}} + \def\@recthy@EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}} + % \renewcommand*{\@recthy@str}[1]{\mathopen{\langle}#1\mathclose{\rangle}} + \renewcommand*{\@recthy@code}[2][]{\mathopen{\@recthy@llangle}#2\mathclose{\@recthy@rrangle}^{#1}} + } +\NewDocumentCommand{\incompat@recthy}{o}{\mathrel{\mid}\IfValueTF{#1}{_{#1}}{}} +\NewDocumentCommand{\compat@recthy}{o}{\mathrel{\not\mid}\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}{\EmptyStr} + \newcommand*{\decode}[2]{\left(#1\right)_{#2}} + \let\godelpair=\@recthy@pair + \let\gpair=\@recthy@pair + \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 -\AtEndOfPackage{ - \ifrecthy@nosuppprioritytrees - \@packinfo{Not loading Priority Tree Supplemental Helper} + \providecommand*{\incompat}{\incompat@recthy} %incompatible stringes FIX SPACING + \providecommand*{\incomp}{\incompat@recthy} + \providecommand*{\compat}{\compat@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 + + \ifrecthy@nopair + \@packinfo{No redefining pair.} \else - \providecommand*{\Astages}[1]{\mathcal{A}({#1})} - \providecommand*{\Vstages}[1]{\mathcal{V}(#1)} - \providecommand{\reqof}[2][]{\mathbb{r}(#2)} - \let\modof=\reqof - \providecommand{\ancestor}{\succ} - \providecommand{\descendant}{\prec} - \providecommand{\ancestoreq}{\succeq} - \providecommand{\descendanteq}{\preceq} - \let\ances=\ancestor - \let\anceseq=\ancestoreq - \let\desc=\descendant - \let\desceq=\descendanteq + \@packinfo{pair=godelpair.} + \let\pair=\@recthy@pair \fi +\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}}{\mathbb{f}}{\mathbb{f}_{#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 + \providecommand{\ball}[3][]{{\@recthy@ballsymb}^{#1}(#2, #3)} +\fi -\let\pmg@casefont\textsc -\DeclareOptionX{pfcasefont}[textsc]{\letcs{\pmg@casefont}{#1}} -\AtEndOfPackage{ - \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} +\ifrecthy@nosuppprioritytrees +\else + \providecommand*{\Astages}[1]{\mathcal{A}({#1})} + \providecommand*{\Vstages}[1]{\mathcal{V}(#1)} + \providecommand{\reqof}[2][]{\mathbb{r}(#2)} + \let\modof=\reqof + \providecommand{\ancestor}{\succ} + \providecommand{\descendant}{\prec} + \providecommand{\ancestoreq}{\succeq} + \providecommand{\descendanteq}{\preceq} + \let\ances=\ancestor + \let\anceseq=\ancestoreq + \let\desc=\descendant + \let\desceq=\descendanteq +\fi + + +\ifrecthy@nopfcases + \@packinfo{Not loading Proof Cases Helper} +\else + \@packinfo{Loading Proof Cases Helper.} + \RequirePackage{enumitem} + \appto{\recthy@rollback@threeSeven}{ \setlist[pfcasesnonum]{ label={\pmg@casefont{Case}}\protect\thiscase:~, align=left, labelsep=!, itemindent=-1em, - leftmargin=2em, - labelindent=0pt, - labelwidth=0pt - } - \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, labelsep=!, itemindent=-1em, - leftmargin=2em, - labelindent=0pt, - labelwidth=0pt } \setlist[pfcasesnumbered,1]{ - before=\def\pfcasecounter@pmg{pfcasesnumberedi}, label={{\pmg@casefont{Case}}~\arabic*\protect\thiscase:~}, - ref={\arabic*}, } \setlist[pfcasesnumbered,2]{ - before=\def\pfcasecounter@pmg{pfcasesnumberedii}, label={{\pmg@casefont{Case}}~\arabic{pfcasesnumberedi}\alph*:\protect\thiscase.~}, - ref={\arabic{pfcasesnumberedi}\alph*}, } \setlist[pfcasesnumbered,3]{ - before=\def\pfcasecounter@pmg{pfcasesnumberediii}, label={{\pmg@casefont{Case}}~\arabic{pfcasesnumberedi}\alph{pfcasesnumberedii}.\roman*:\protect\thiscase.~}, - ref={\arabic{pfcasesnumberedi}\alph{pfcasesnumberedii}.\roman*}, } - \newenvironment{pfcases*}{ + \renewenvironment{pfcases*}{ \ProvideDocumentCommand{\case}{o}{ \IfNoValueTF{##1}{ \def\thiscase{}% @@ -379,8 +552,7 @@ \begin{pfcasesnonum} } {\end{pfcasesnonum}} - - \newenvironment{pfcases}{ + \renewenvironment{pfcases}{ \ProvideDocumentCommand{\case}{o}{ \IfNoValueTF{##1}{ \def\thiscase{}% @@ -392,87 +564,166 @@ \protected@xdef\cref@currentlabel{[\pfcasecounter@pmg][][\cref@result] \csname the\pfcasecounter@pmg \endcsname}}{}% } \begin{pfcasesnumbered}}{\end{pfcasesnumbered}} - \fi -} + } + + + \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, + labelsep=0pt, + itemindent=!, + leftmargin=2em, + labelindent=0pt, + labelwidth=0pt + } + \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, + 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}[labelindent=\@recthy@cases@labelindent]\def\@recthy@cases@labelindent{-1em}\ignorespaces}{\end{pfcasesnonum}\ignorespacesafterend} + + \newenvironment{pfcases}{ + \ProvideDocumentCommand{\case}{o}{ + \IfNoValueTF{##1}{ + \def\thiscase{}% + }{ + \def\thiscase{~##1}% + } + \item~##1\textbf{:} \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 + -\AtEndOfPackage{ \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}}} + \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@reqscr\mathscr -\DeclareOptionX{reqscr}[mathscr]{\letcs{\@recthy@reqscr}{#1}} -% \DeclareOptionX{beamerreq}[@recthy@EmptyStr@Default]{\letcs{\@recthy@EmptyStr}{#1}} \newcommand*{\@pmg@saveeqstate}{\let\@origif@fleqn@pmg=\if@fleqn \let\@origiftagsleft@pmg=\iftagsleft@} \newcommand*{\@pmg@restoreeqstate}{ \let\if@fleqn=\@origif@fleqn@pmg\let\iftagsleft@=\@origiftagsleft@pmg} - -\AtEndOfPackage{ \ifrecthy@noreqhelper \@packinfo{Not loading requirement assist.} \else @@ -519,8 +770,8 @@ \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}}} + \NewDocumentCommand{\require@nested}{sO{}mO{}m}{% + \tag{\req@nohref[#2#4]{#3}{#5}}\IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}}% } @@ -552,97 +803,93 @@ \let\require=\require@beamer % \begin{flalign*}% #1 & - \end{flalign*}}{} + \end{flalign*}}{\ignorespacesafterend}%\@recthy@ignorespacesandallparsafter} \else - \NewDocumentEnvironment{requirements}{}{ - \@pmg@saveeqstate - \@fleqntrue - \setlength\@mathmargin{1.5cm} - \tagsleft@true - \usetagform{colon} - \let\require=\require@nested - % \let\maketag@@@orig@pmg=\maketag@@@ - % \def\maketag@@@#1{\hbox{\m@th\normalfont#1:}} + \NewDocumentEnvironment{requirements}{}{% + \@pmg@saveeqstate% + \@fleqntrue% + \setlength\@mathmargin{1.5cm}% + \tagsleft@true% + \usetagform{colon}% + \let\require=\require@nested% \gather - }{ - \endgather - \@pmg@restoreeqstate - \usetagform{default} - % \let\maketag@@@=\maketag@@@orig@pmg - } + }{\endgather% + \@pmg@restoreeqstate% + \usetagform{default}% + \ignorespacesafterend} \fi \fi -} - -\AtEndOfPackage{ \ifrecthy@nostructresets \@packinfo{Not loading r.e. set structs w/ containment.} \else - \@packinfo{Loading r.e. set structs w/ containment.} -\let\@orig@setminus=\setminus -\newcommand*{\promptdif}{\@orig@setminus_{\downarrow}} -\let\setbefore=\promptdif -\let\promptminus=\promptdif -\let\promptsetminus=\promptdif - -\newcommand*{\StrcE}{\ensuremath{\mathscr{E}}} -\WithSuffix\def\StrcE*{\ensuremath{\mathscr{E}^{*}}} -\let\strucE\StrcE -\newcommand*{\StrcL}[1]{\mathscr{L}(#1)} -\newcommand*{\StrcStarL}[1]{\mathscr{L}^{*}(#1)} -\WithSuffix\def\StrcL*{\StrcStarL} -\newcommand*{\splitof}{\sqsubset} -\newcommand*{\splitby}{\sqsupset} -\newcommand*{\StrcR}{\ensuremath{\mathcal{R}}} -\newcommand*{\StrcD}{\ensuremath{\mathcal{D}}} + \@packinfo{Loading r.e. set structs w/ containment.} + \let\@orig@setminus=\setminus + \newcommand*{\promptdif}{\@orig@setminus_{\downarrow}} + \let\setbefore=\promptdif + \let\promptminus=\promptdif + \let\promptsetminus=\promptdif + + \newcommand*{\StrcE}{\ensuremath{\mathscr{E}}} + \WithSuffix\def\StrcE*{\ensuremath{\mathscr{E}^{*}}} + \let\strucE\StrcE + \newcommand*{\StrcL}[1]{\mathscr{L}(#1)} + \newcommand*{\StrcStarL}[1]{\mathscr{L}^{*}(#1)} + \WithSuffix\def\StrcL*{\StrcStarL} + \newcommand*{\splitof}{\sqsubset} + \newcommand*{\splitby}{\sqsupset} + \newcommand*{\StrcR}{\ensuremath{\mathcal{R}}} + \newcommand*{\StrcD}{\ensuremath{\mathcal{D}}} \fi -} -\AtEndOfPackage{ + \ifrecthy@nohyphenation \@packinfo{No hyphenation loading.} \else \hyphenation{ra-tion-als ra-tion-al Harrington Slaman Cholak Knight Gerdes Lange} \fi -} -\AtEndOfPackage{ + + \ifrecthy@mrref \@packinfo{MRref helper loading} - \RequirePackage{hyperref} - \def\recthy@checkMR MR#1#2#3 #4\relax% - {\ifx#1M% - \ifx#2R\recthy@MR{#3}\else\recthy@MR{#1#2#3}\fi - \else - \recthy@MR{#1#2#3}% - \fi} - \def\MR#1{\recthy@checkMR MR#1 \relax} - \newcommand{\recthy@MR}[1]{\recthy@MRhref{#1}{MR #1}} - % % \MRhref is called by the amsart/book/proc definition of \MR. - \newcommand{\recthy@MRhref}[2]{\href{http://www.ams.org/mathscinet-getitem?mr=#1}{#2}} + \AtBeginDocument{ + \@ifpackageloaded{hyperref}{ + \def\recthy@checkMR MR#1#2#3 #4\relax% + {\ifx#1M% + \ifx#2R\recthy@MR{#3}\else\recthy@MR{#1#2#3}\fi + \else + \recthy@MR{#1#2#3}% + \fi} + \def\MR#1{\recthy@checkMR MR#1 \relax} + \newcommand{\recthy@MR}[1]{\recthy@MRhref{#1}{MR #1}} + % % \MRhref is called by the amsart/book/proc definition of \MR. + \newcommand{\recthy@MRhref}[2]{\href{http://www.ams.org/mathscinet-getitem?mr=#1}{#2}} + } + } \else \@packinfo{MRref helper not loading} \fi -} + % \newcommand*{\@recthy@abs}[1]{\lvert#1\rvert} \DeclarePairedDelimiter\@recthy@abs{\lvert}{\rvert} \newcommand*{\@recthy@ensuretext}[1]{\ensuremath{\text{#1}}} -\AtEndOfPackage{ + + \ifrecthy@nomath \@packinfo{No math loading.} \else \@packinfo{math loading.} - \providecommand*{\eqdef}{\stackrel{\text{\tiny def}}{=}} %\newcommand*{\eqdef}{\ensuremath{=\limits_{\text{\tiny def}}}} + \providecommand*{\eqdef}{\overset{\text{\tiny def}}{=}} %\newcommand*{\eqdef}{\ensuremath{=\limits_{\text{\tiny def}}}} \providecommand*{\iffdef}{\stackrel{\text{\tiny def}}{\iff}} \ifdefined\aut \else @@ -702,10 +949,10 @@ \newcommand{\FinParFuncs}[2]{{#2}^{\subset_{< \infty} #1}} \recthy@strip{ensuretext} \fi -} -\AtEndOfPackage{ + + \ifrecthy@nooperators \@packinfo{No operators loading.} \else @@ -713,21 +960,22 @@ \providecommand*{\meet}{\mathbin{\wedge}} \providecommand*{\join}{\mathbin{\vee}} \providecommand*{\Meet}{\mathop{\bigwedge}} - \let\MnJoin=\Join - \renewcommand*{\Join}{\mathop{\bigvee}} + \let\MnJoin=\Join %save MnVersion in case wanted + \newcommand*{\Join@recthy}{\mathop{\bigvee}} + \AtBeginDocument{ + \let\Join=\Join@recthy + } \ifdefined\xor \else \DeclareMathOperator{\xor}{xor} \fi \fi -} -\newcommand*{\@recthy@llangle}{\langle\!\langle} -\newcommand*{\@recthy@rrangle}{\rangle\!\rangle} -\AtEndOfPackage{ + + \ifrecthy@nodelim \@packinfo{No delimiters loading.} \else @@ -753,21 +1001,25 @@ <10-12> MnSymbolE-Bold10 <12-> MnSymbolE-Bold12 }{} - \DeclareMathDelimiter{\ulcorner} + \DeclareMathDelimiter{\@recthy@ulcorner} {\mathopen}{MnLargeSymbols}{'036}{MnLargeSymbols}{'036} - \DeclareMathDelimiter{\urcorner} + \DeclareMathDelimiter{\@recthy@urcorner} {\mathclose}{MnLargeSymbols}{'043}{MnLargeSymbols}{'043} + \let\ulcorner=\@recthy@ulcorner + \let\urcorner=\@recthy@urcorner } \newcommand*{\godelnum}[1]{\left\ulcorner #1 \right\urcorner} \let\cornerquote=\godelnum \let\gcode=\godelnum + \let\@recthy@llangle@orig=\llangle + \let\@recthy@rrangle@orig=\rrangle \ifrecthy@nodoubleangles \else \let\llangle=\@recthy@llangle \let\rrangle=\@recthy@rrangle \fi \fi -} + \newcommand*{\@recthy@re}{\@recthy@ensuretext{r.e.\ }} \newcommand*{\@recthy@ce}{\@recthy@ensuretext{c.e.\ }} @@ -785,41 +1037,11 @@ \newcommand*{\@recthy@ComputablyEnumerable}{\@recthy@ensuretext{Computably enumerable}} \def\@recthy@REA{REA} \def\@recthy@CEA{CEA} -\mathchardef\@recthy@mhyphen="2D % Define a "math hyphen" + \NewDocumentCommand{\REA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{\@recthy@REA}\IfValueTF{#1}{(#1)}{}}} \NewDocumentCommand{\CEA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{\@recthy@CEA}\IfValueTF{#1}{(#1)}{}}} -% \newcommand*{\@recthy@REA}{\ensuremath{\text{REA}}} -% \WithSuffix\def\@recthy@REA[#1]{#1-\@recthy@REA\relax} -% \newcommand*{\@recthy@CEA}{\ensuremath{\text{CEA}}} -% \WithSuffix\def\@recthy@CEA[#1]{#1-\@recthy@CEA\relax} - -\DeclareOptionX{reterms}{% - \let\@recthy@ce=\@recthy@re - \let\@recthy@computable=\@recthy@recursive - \let\@recthy@computablyEnumerable=\@recthy@recursivelyEnumerable - \let\@recthy@ComputablyEnumerable=\@recthy@RecursivelyEnumerable - } %Make all references to ce change to re - - \DeclareOptionX{reaterms}{% - \let\@recthy@CEA=\@recthy@REA - } -\DeclareOptionX{ceterms}{% - \let\@recthy@re=\@recthy@ce - \let\@recthy@recursive=\@recthy@computable - \let\@recthy@recursivelyEnumerable=\@recthy@computablyEnumerable - \let\@recthy@RecursivelyEnumerable=\@recthy@ComputablyEnumerable - } %Make all references to re change to ce - -\DeclareOptionX{ceaterms}{% - \let\@recthy@REA=\@recthy@CEA - } - - - - -\AtEndOfPackage{ \ifrecthy@nonames \@packinfo{No names loading.} \else @@ -839,14 +1061,14 @@ \recthy@strip{RecursivelyEnumerable} \recthy@strip{ComputablyEnumerable} \fi -} + % Set stuff -\NewDocumentCommand{\@recthy@set}{mg}{\left \{ #1 \IfNoValueTF{#2}{}{\mid #2} \right \}} +\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 \}}} @@ -861,21 +1083,20 @@ \newcommand*{\@recthy@isect}{\mathbin{\cap}} \newcommand*{\@recthy@Isect}{\mathop{\bigcap}} \newcommand*{\@recthy@nin}{\notin} -\newcommand*{\@recthy@powset}[1]{\mathcal{P}\left(#1\right)} +\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 -\def\@recthy@setdiffSYM{-} \newcommand*{\@recthy@setdiff}{\mathbin{\@recthy@setdiffSYM}} -\DeclareOptionX{setdiffsym}{\edef\@recthy@setdiffSYM{\expandafter\noexpand\csname #1 \endcsname}} -\AtEndOfPackage{ + % \WithSuffix\def\@recthy@setcmp[#1]#2{#1\@recthy@setminus#2} \ifrecthy@nosets \@packinfo{No set cmds loading.} @@ -888,6 +1109,9 @@ \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} @@ -910,9 +1134,9 @@ % \DeclareMathOperator{\clos}{cl} % \fi \fi -} -\AtEndOfPackage{ + + \ifrecthy@noquants \@packinfo{No quants loading.} \else @@ -985,248 +1209,12 @@ \providecommand*{\limplies}{\ensuremath{\rightarrow}} \fi -} - - - - -\AtEndOfPackage{ -\ifrecthy@nospaces - \@packinfo{No spaces loading.} -\else - \@packinfo{Spaces loading.} - - \providecommand*{\bstrs}{2^{<\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 -} - - - - - -\AtEndOfPackage{ -\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} -\fi -} - - - - - -% Tree arguments - -% \newcommand*{\truepath}[2][]{\Gamma_{#1}\ifthenelse{\isempty{#2}}{}{(#2)}} -% \newcommand*{\Tpath}{\truepath} - - - - -%re set relations -\AtEndOfPackage{ -\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^{*}} - \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 - -\AtEndOfPackage{ -\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}{sD(){}oD(){}}{{ - \kleeneOSYM^{#2#4}_{% - \IfNoValueTF{#1}{% - \IfNoValueTF{#3}{}{% - \abs{#3}}% - }% - {% - 1% - \IfNoValueTF{#3}{}{% - , \abs{#3} - }% - }% - }% - }} - % \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 - - \newcommand*{\kleeneOuniq}{\kleeneO*} - \let\ordNotations=\kleeneO - \let\uniqOrdNotations=\kleeneOuniq - \newcommand*{\kleeneNum}[1]{{#1}_{\kleeneO}} - \newcommand*{\kleeneZero}{\kleeneNum{0}} - \newcommand*{\kleeneOne}{\kleeneNum{1}} - \NewDocumentCommand{\kleeneless}{o}{<_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \let\kleenel=\kleeneless - \NewDocumentCommand{\kleeneleq}{o}{\leq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \NewDocumentCommand{\kleenenless}{o}{\nless_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \let\kleenenl=\kleenenless - \NewDocumentCommand{\kleenenleq}{o}{\nleq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \NewDocumentCommand{\kleenegtr}{o}{>_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \let\kleeneg=\kleenegtr - \NewDocumentCommand{\kleenegeq}{o}{\geq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \NewDocumentCommand{\kleenengtr}{o}{\ngtr_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \let\kleeneng=\kleenengtr - \NewDocumentCommand{\kleenengeq}{o}{\ngeq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} - \newcommand*{\kleenePlus}{\mathbin{+_{\kleeneO}}} - \newcommand*{\kleeneMul}{\cdot_{\kleeneO}} - \newcommand*{\kleenehgt}[1]{\lVert #1\rVert_{\kleeneO}} - \let\kleeneHgt=\kleenehgt - % \let\hgtO=\kleenehgt - \newcommand*{\kleenelim}[2]{{#1}_{[#2]}} - \newcommand*{\kleenepred}[1]{{#1}^{-}} - -\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 -\AtEndOfPackage{ -\ifrecthy@noforcing - \@packinfo{No forcing loading.} -\else - \@packinfo{forcing loading.} - \providecommand*{\forces}{\def\@PMG@frcparenarg{}\def\@PMG@frcbraketarg{}\def\@PMG@curfrcsym{\Vdash}\@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} - - % \long\def\forces@[#1][#2]{\Vdash^{#2}_{#1}} - % \newcommand{\forces}{\optparams{\forces@}{[][]}% - % } - \providecommand*{\frc}{\forces} -\fi -} - %%%%%%%%% Formula Classes -\newcommand*{\@recthy@CDelta@default}{\prescript{\mathcal{C}}{}{\Delta}} -\newcommand*{\@recthy@CSigma@default}{\prescript{\mathcal{C}}{}{\Sigma}} -\newcommand*{\@recthy@CPi@default}{\prescript{\mathcal{C}}{}{\Pi}} -\let\@recthy@CDelta=\@recthy@CDelta@default -\let\@recthy@CSigma=\@recthy@CSigma@default -\let\@recthy@CPi=\@recthy@CPi@default -\DeclareOptionX{cdeltasym}[@recthy@CDelta@default]{\letcs{\@recthy@CDelta}{#1}} -\DeclareOptionX{csigmasym}[@recthy@CSigma@default]{\letcs{\@recthy@CSigma}{#1}} -\DeclareOptionX{cpisym}[@recthy@CPi@default]{\letcs{\@recthy@CPi}{#1}} -% \DeclareOptionX<\@recthy@family>{cdeltasym}[]{\def\@recthy@CDelta{#1}} -% \DeclareOptionX<\@recthy@family>{csigmasym}[]{\def\@recthy@CSigma{#1}} -% \DeclareOptionX<\@recthy@family>{cpisym}[]{\def\@recthy@CPi{#1}} -\AtEndOfPackage{ \ifrecthy@nosyntax \@packinfo{No syntax loading.} \else @@ -1613,23 +1601,225 @@ \fi -} -\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 + + + +\ifrecthy@nospaces + \@packinfo{No spaces loading.} +\else + \@packinfo{Spaces loading.} + + \providecommand*{\bstrs}{2^{<\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 + + + + + + + +\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} +\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 + +\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}{sD(){}oD(){}}{{ + \kleeneOSYM^{#2#4}_{% + \IfNoValueTF{#1}{% + \IfNoValueTF{#3}{}{% + \abs{#3}}% + }% + {% + 1% + \IfNoValueTF{#3}{}{% + , \abs{#3} + }% + }% + }% + }} + % \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 + + \newcommand*{\kleeneOuniq}{\kleeneO*} + \let\ordNotations=\kleeneO + \let\uniqOrdNotations=\kleeneOuniq + \newcommand*{\kleeneNum}[1]{{#1}_{\kleeneO}} + \newcommand*{\kleeneZero}{\kleeneNum{0}} + \newcommand*{\kleeneOne}{\kleeneNum{1}} + \NewDocumentCommand{\kleeneless}{o}{<_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \let\kleenel=\kleeneless + \NewDocumentCommand{\kleeneleq}{o}{\leq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \NewDocumentCommand{\kleenenless}{o}{\nless_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \let\kleenenl=\kleenenless + \NewDocumentCommand{\kleenenleq}{o}{\nleq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \NewDocumentCommand{\kleenegtr}{o}{>_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \let\kleeneg=\kleenegtr + \NewDocumentCommand{\kleenegeq}{o}{\geq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \NewDocumentCommand{\kleenengtr}{o}{\ngtr_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \let\kleeneng=\kleenengtr + \NewDocumentCommand{\kleenengeq}{o}{\ngeq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}} + \newcommand*{\kleenePlus}{\mathbin{+_{\kleeneO}}} + \newcommand*{\kleeneMul}{\cdot_{\kleeneO}} + \newcommand*{\kleenehgt}[1]{\lVert #1\rVert_{\kleeneO}} + \let\kleeneHgt=\kleenehgt + % \let\hgtO=\kleenehgt + \newcommand*{\kleenelim}[2]{{#1}_{[#2]}} + \newcommand*{\kleenepred}[1]{{#1}^{-}} + +\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.} + \providecommand*{\forces}{\def\@PMG@frcparenarg{}\def\@PMG@frcbraketarg{}\def\@PMG@curfrcsym{\Vdash}\@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} + + % \long\def\forces@[#1][#2]{\Vdash^{#2}_{#1}} + % \newcommand{\forces}{\optparams{\forces@}{[][]}% + % } + \providecommand*{\frc}{\forces} +\fi + + + + %%%ABREVIATIONS -\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}} %Degree Classes -\AtEndOfPackage{ \ifrecthy@nodegclasses \@packinfo{No degree classes loading.} \else @@ -1638,9 +1828,9 @@ \newcommand{\LowN}[2][]{\ensuremath{ \text{Low}^{#1}_{#2} }} \newcommand{\lowN}[2][]{\ensuremath{ \mathcal{L}^{#1}_{#2} }} \fi -} -\AtEndOfPackage{ + + \ifrecthy@nocomputations \@packinfo{No computations loading.} \else @@ -1653,12 +1843,18 @@ %\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@improved}{omm!g!d()}{{ + \NewDocumentCommand{\recfnl@improved}{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{\recfnl@threeSix}{omm!g!d()}{{ \def\temp@pmg@arg{} \IfValueTF{#4}{\ifthenelse{\isempty{#4}}{}{\def\temp@pmg@arg{; #4}}}{\IfValueTF{#5}{\ifthenelse{\isempty{#5}}{}{\def\temp@pmg@arg{; #5}}}} \@recthy@recfnlSYM_{#2\IfValueT{#1}{, #1}}\ifthenelse{\isempty{#3}}{}{\!\left(#3\temp@pmg@arg \right)} }} - \newcommand*{\recfnl@old}[4][]{\@recthy@recfnlSYM_{#2\ifthenelse{\isempty{#1}}{}{,{#1}} }% + \newcommand*{\recfnl@threeFive}[4][]{\@recthy@recfnlSYM_{#2\ifthenelse{\isempty{#1}}{}{,{#1}} }% \ifthenelse{\isempty{#4}}% {\ifthenelse{\isempty{#3}}% {}% No args then print no parents @@ -1668,7 +1864,10 @@ }} \let\recfnl=\recfnl@improved \appto{\recthy@rollback@threeSix}{ - \let\recfnl=\recfnl@old + \let\recfnl=\recfnl@threeFive + } + \appto{\recthy@rollback@threeSeven}{ + \let\recfnl=\recfnl@threeSix } \NewDocumentCommand{\recf}{od()md()}{ \@recthy@recfSYM_{#3\IfNoValueTF{#1}{}{\ifthenelse{\isempty{#3}}{}{, }{#1}}}\IfNoValueTF{#2}{}{^{#2}}\IfNoValueTF{#4}{}{(#4)} @@ -1725,34 +1924,38 @@ % \NewDocumentCommand{\REset}{D(){}omd()}{ % W_{#2\IfNoValueTF{#1}{}{, #1}}\IfNoValueTF{#3}{}{^{#3}} % } - - \newcommand*{\REset}{\let\@PMG@parenarg\@PMG@undefined\let\@PMG@braketarg\@PMG@undefined\@REsetbody} - \newcommand*{\@REsetbody}[1]{W\ifdefined\@PMG@parenarg - ^{\@PMG@parenarg}% - \fi% - \ifdefined\@PMG@braketarg - _{#1, {\@PMG@braketarg}}% - \else - _{#1} - \fi} - \WithSuffix\def\@REsetbody(#1){\def\@PMG@parenarg{#1}\@REsetbody} - \WithSuffix\def\@REsetbody[#1]{\def\@PMG@braketarg{#1}\@REsetbody} + \NewDocumentCommand{\REset}{D(){}oD(){#1}mD(){#3}}{{W_{#4\IfValueTF{#2}{, #2}{}}^{#5}}} + % \newcommand*{\REset}{\let\@PMG@parenarg\@PMG@undefined\let\@PMG@braketarg\@PMG@undefined\@REsetbody} + % \newcommand*{\@REsetbody}[1]{W\ifdefined\@PMG@parenarg + % ^{\@PMG@parenarg}% + % \fi% + % \ifdefined\@PMG@braketarg + % _{#1, {\@PMG@braketarg}}% + % \else + % _{#1} + % \fi} + % \WithSuffix\def\@REsetbody(#1){\def\@PMG@parenarg{#1}\@REsetbody} + % \WithSuffix\def\@REsetbody[#1]{\def\@PMG@braketarg{#1}\@REsetbody} \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}% - {\mathcal{J}}% {\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)}{}}% } - \NewDocumentCommand{\oneREAop}{st+d()od()m}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}} - \let\iREAop=\oneREAop + \newcommand*{\entersat}[1]{\mathbin{\searrow_{#1}}} + \appto{\recthy@rollback@threeSeven}{ + \NewDocumentCommand{\oneREAop}{st+d()od()m}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}} + \let\iREAop=\oneREAop + } + % \newcommand*{\alphaREAop}[2][]{\mathcal{J}^{#2}_{#1}} \appto{\recthy@rollback@threeTwo}{ \let\reaop=\REAop @@ -1855,92 +2058,37 @@ \newcommand*{\ttngeq}{\ngeq_{\@recthy@ttSYM}} \fi -} - - -%Strings - \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}} - \newcommand*{\@recthy@pair}[2]{\mathopen{\langle} #1, #2 \mathclose{\rangle}} - \newcommand*{\@recthy@str}[1]{\mathopen{\langle}#1\mathclose{\rangle}} - \newcommand*{\@recthy@code}[1]{\mathopen{\langle}#1\mathclose{\rangle}} - - \appto{\recthy@rollback@threeSix}{ - \renewcommand*{\@recthy@pair}[2]{\mathopen{\@recthy@llangle} #1, #2 \mathclose{\@recthy@rrangle}} - \def\@recthy@EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}} - % \renewcommand*{\@recthy@str}[1]{\mathopen{\langle}#1\mathclose{\rangle}} - \renewcommand*{\@recthy@code}[1]{\mathopen{\@recthy@llangle}#1\mathclose{\@recthy@rrangle}} - \newcommand*{\closedn}[1]{{#1}^\blacktriangledown} - } - -% \ProcessOptions* -% \ProcessOptionsX<\@recthy@family> -\ProcessOptionsX - - +\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% + } -\NewDocumentCommand{\incompat@recthy}{o}{\mathrel{\mid}\IfValueTF{#1}{_{#1}}{}} -\NewDocumentCommand{\compat@recthy}{o}{\mathrel{\not\mid}\IfValueTF{#1}{_{#1}}{}} -\ifrecthy@nostrings - \@packinfo{No strings loading.} + % \ExplSyntaxOn + % \cs_new:cpn {steps*} {\steps*} + % \cs_new_eq:cN {endsteps*} \endsteps + % \ExplSyntaxOff \else - \@packinfo{Strings loading.} - \let\code=\@recthy@code - \let\str=\@recthy@str - \newcommand*{\EmptyStr}{\@recthy@EmptyStr} - \newcommand*{\estr}{\EmptyStr} - \newcommand*{\decode}[2]{(#1)_{#2}} - \let\godelpair=\@recthy@pair - \let\gpair=\@recthy@pair - \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} - \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 - - \ifrecthy@nopair - \@packinfo{No redefining pair.} - \else - \@packinfo{pair=godelpair.} - \let\pair=\@recthy@pair - \fi + \@packinfo{No steps} \fi - - - |