summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/rec-thy
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-04-01 03:01:15 +0000
committerNorbert Preining <norbert@preining.info>2021-04-01 03:01:15 +0000
commitf78ba658b3ecd56053fe0837a4404d0c6c16a707 (patch)
tree68160ffbc8adda4460c84c98ab764cddbcefdf71 /macros/latex/contrib/rec-thy
parentd7fa794917856c6236da25ad082a9a52f2e73ffc (diff)
CTAN sync 202104010301
Diffstat (limited to 'macros/latex/contrib/rec-thy')
-rw-r--r--macros/latex/contrib/rec-thy/README1
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.pdfbin121041 -> 127739 bytes
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.sty1560
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.tex166
4 files changed, 979 insertions, 748 deletions
diff --git a/macros/latex/contrib/rec-thy/README b/macros/latex/contrib/rec-thy/README
index 2524d9cc5e..1e6e845706 100644
--- a/macros/latex/contrib/rec-thy/README
+++ b/macros/latex/contrib/rec-thy/README
@@ -39,3 +39,4 @@ Github URL: https://github.com/TruePath/Recursion-Theory-Latex-Package
06/04/2020 - v3.4 Eliminated dependence on undertilde which is missing from texlive
v3.5 - Added \Hop command and misc code cleanup.
v3.6 - Fixed \REA[n] so that dash is shorter. Added BeamerRequirements to add a block for requirements in beamer and fixed the requirements environment for beamer. Fixed \req* command. Improved syntax for \recfnl so it can accept a () delimited argument via the same standard as \REset and \recf. Improved \setcol to allow it to be used repeatedly without typesetting bugs. Changed the code and pair commands to use only a single angle bracket.
+v3.7 - Fixed cases enviornment (both prettier and no problem with creating newline). Major refactor to fix all options. Fixed bug with \set display. Added \st command inside the \set command to depreciate second argument. Added experimental commands \finSsets (alt \ssetsOfsize), \finsets and optional argument to \powset. Changed \REAop so the hat is on the starred version as intended. Added the steps (experimental) code which requires an option to enable and fixed some problems with existing options. Reimplemented \REset to use xparse to avoid some errors in unusual contexts. Fixed the display of \tpath. Depreciated \iREAop and \oneREAop.
diff --git a/macros/latex/contrib/rec-thy/rec-thy.pdf b/macros/latex/contrib/rec-thy/rec-thy.pdf
index 783a3ef95d..601e4953ba 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.pdf
+++ b/macros/latex/contrib/rec-thy/rec-thy.pdf
Binary files differ
diff --git a/macros/latex/contrib/rec-thy/rec-thy.sty b/macros/latex/contrib/rec-thy/rec-thy.sty
index b02e529891..b2a3e7775e 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.sty
+++ b/macros/latex/contrib/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
-
-
-
diff --git a/macros/latex/contrib/rec-thy/rec-thy.tex b/macros/latex/contrib/rec-thy/rec-thy.tex
index a73dc445e8..ded730f3b0 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.tex
+++ b/macros/latex/contrib/rec-thy/rec-thy.tex
@@ -88,7 +88,7 @@
%\usepackage[pdftex]{graphicx}
%\DeclareGraphicsExtensions{.pdf, .jpg, .tif}
-\usepackage[suppPriorityTrees]{rec-thy}
+\usepackage[steps]{rec-thy}
\title{The rec-thy Package}
\author{Peter M. Gerdes (gerdes@invariant.org)}
\date{\DateOfPackage{rec-thy}: Version \recthyVersion}
@@ -126,8 +126,8 @@ While the symbols used by default in the package are suggested for adoption to a
\item[modulescr] Sets the script used to typeset the \verb=\module= command. Default is mathcal.
\item[reqscr] Sets the script used to typeset requirements. Default is mathscr.
\item[pfcasefont] Sets the script used to typeset Case in the cases helper.
- \item[emptystr] Sets the empty string symbol
- \item[concatsym] Sets the concat symbol.
+ \item[emptystr] Sets the empty string symbol. Default is \( \str{} \)
+ \item[concatsym] Sets the concat symbol. Default is \( \concat \)
\item[cdeltasym] Sets the symbol used to denote computably \( \Delta \) formulas. Default is \( \prescript{\mathcal{C}}{}{\Delta} \).
\item[cpisym] Same for \( \Pi \) formulas. Default is \( \prescript{\mathcal{C}}{}{\Pi} \).
\item[csigmasym] Same for \( \Sigma \) formulas. Default is \( \prescript{\mathcal{C}}{}{\Sigma} \).
@@ -135,7 +135,10 @@ While the symbols used by default in the package are suggested for adoption to a
\item[recfsym] Sets the symbol used for recursive functions. Default is \( \phi \).
\item[usesym] Sets the symbol used for the use operator. Default is \( \symbffrak{u} \) where this is printed using \verb=\symbfrak= if unicode-math is loaded and with \verb=\mathfrak= otherwise.
\item[ballsymb] Sets the symbol used for the ball command. Default is \( \mathscr{B} \).
- \item[nodoubleangles] Prevents redefinition of \verb=\rrangle= and \verb=\llangle= with versions that use the repeated angle brackets e.g., lets you use the weird XITS versions.
+ \item[lstrdelim,rstrdelim] Left and right delimiters for \verb=\str=
+ \item[lcodedelim,rcodedelim] Left and right delimiters for \verb=\code=
+ \item[lpairdelim,rpairlim,pairsup] Left and right delimiters for \verb=\pair= and superscript.
+
\end{itemize}
As an example of how to use these commands consider the following code changing the ball symbol to \( \mathbf{B} \).
@@ -170,13 +173,13 @@ Note the commands in this section double as suggestions for standardized notatio
\end{xtabular} \\
-There are a few additional commands relating to priority trees which are less frequently used and require passing the option \verb=suppPriorityTrees= to the package to use. These commands exist in a kind of limbo and will probably be removed in some future edition of the package absent popular demand and feedback for better notation.
+% There are a few additional commands relating to priority trees which are less frequently used and require passing the option \verb=suppPriorityTrees= to the package to use. These commands exist in a kind of limbo and will probably be removed in some future edition of the package absent popular demand and feedback for better notation.
-\begin{xtabular}{l | l | l}\toprule
- \verb=\Astages{\xi}= & \( \Astages{\xi} \) & Set of stages at which \( \xi \) is active. \\ \midrule
- \verb=\Vstages{\xi}= & \( \Vstages{\xi} \) & Stages where \( \xi \subfun \tpath[s] \) even if links skip \( \xi \). \\ \midrule
- \verb=\reqof{\xi}= & \( \reqof{\xi} \) & Requirement implemented by a node \( \xi \). \\ \bottomrule
-\end{xtabular}
+% \begin{xtabular}{l | l | l}\toprule
+% \verb=\Astages{\xi}= & \( \Astages{\xi} \) & Set of stages at which \( \xi \) is active. \\ \midrule
+% \verb=\Vstages{\xi}= & \( \Vstages{\xi} \) & Stages where \( \xi \subfun \tpath[s] \) even if links skip \( \xi \). \\ \midrule
+% \verb=\reqof{\xi}= & \( \reqof{\xi} \) & Requirement implemented by a node \( \xi \). \\ \bottomrule
+% \end{xtabular}
\subsection{Computations}
@@ -212,8 +215,8 @@ To disable these commands pass the option \verb=nocomputations=. \\ To specify
\verb=\Hop[s](X){e}= & \( \Hop[s](X){e} \) & \\[6pt]
\verb=\Hop[s]{e}= & \( \Hop[s]{e} \) & \\[6pt]
\verb=\Hop{e}= & \( \Hop{e} \) & \\ \midrule
- \verb=\iREAop{e}(\eset)= & \multirow{2}{*}{\( \iREAop{e}(\eset) \)} &\multirow{2}{*}{1-REA operator} \\
- \tab \verb=\oneREAop{e}(\eset)= & & \\ \midrule
+ % \verb=\iREAop{e}(\eset)= & \multirow{2}{*}{\( \iREAop{e}(\eset) \)} &\multirow{2}{*}{1-REA operator} \\
+ % \tab \verb=\oneREAop{e}(\eset)= & & \\ \midrule
% \verb=\alphaREAop{\alpha}(\eset)= & \multirow{2}{*}{\( \alphaREAop{\alpha}(\eset) \)} &\multirow{2}{*}{\( \alpha \)-REA operator} \\[6pt]
\verb=\REAop{e}{\alpha}= & \( \REAop{e}{\alpha} \) & \\[6pt]
% \verb=\alphaREAop[f]{\alpha}(\eset)= & \multirow{2}{*}{\( \alphaREAop[f]{\alpha}(\eset) \)} & \multirow{2}{*}{with particular witness to uniformity}\\[6pt]
@@ -251,7 +254,7 @@ To disable these commands pass the option \verb=nodegrees=. \\
\verb=X \nTgeq Y= & \( X \nTgeq Y \) & \\ \midrule
\verb=X \Tincompat Y= & \multirow{2}{*}{\( X \Tincompat Y \)} & Turing incompatibility \\
\tab \verb=X \Tincomp Y= & & \\ \midrule
- \verb=X \Tcompat Y= & & \multirow{3}{*}{\( X \Tcompat Y \)} \\
+ \verb=X \Tcompat Y= & \multirow{3}{*}{\( X \Tcompat Y \)} & \\
\tab \verb=X \nTincomp Y= & & \\
\tab \verb=X \nTincompat Y= & & \\ \midrule
\verb=\Tdeg{d} \Tdegjoin \Tdeg{d'}= & \( \Tdeg{d} \Tdegjoin \Tdeg{d'} \) & Join of degrees\\ \midrule
@@ -262,7 +265,7 @@ To disable these commands pass the option \verb=nodegrees=. \\
\verb=\TPlus_{i \in \omega} X_i= & \multirow{2}{*}{\( \TPlus_{i \in \omega} X_i \)} & \\
\tab \verb=\TJoin_{i \in \omega} X_i= & & \\ \midrule
% \verb=\ttSYM= & \( \ttSYM \) & \\ \midrule
- \verb=X \ttlneq Y= & \( X \ttlneq Y \) & Truth table reproducibilities\\ \midrule
+ \verb=X \ttlneq Y= & \( X \ttlneq Y \) & Truth table reducibilities \\ \midrule
\verb=X \ttleq Y= & \( X \ttleq Y \) & \\ \midrule
\verb=X \ttgneq Y= & \( X \ttgneq Y \) & \\ \midrule
\verb=X \ttgeq Y= & \( X \ttgeq Y \) & \\ \midrule
@@ -388,7 +391,11 @@ Note that \verb=\Cross= and \verb=\cross= overwrite the existing commands saving
\verb=\Isect_{i \in \omega} X_i= & \( \Isect_{i \in \omega} X_i \) & \\ \midrule
\verb=X \cross Y= & \( X \cross Y \) & \multirow{2}{*}{Cartesian product (Cross Product)} \\[6pt]
\verb=\Cross_{i \in \omega} X_i= & \( \Cross_{i \in \omega} X_i \) & \\ \midrule
- \verb=\powset{\omega}= & \( \powset{\omega} \) & Powerset \\ \midrule
+ \verb=\powset{\omega}= & \( \powset{\omega} \) & Powerset \\ \midrule
+ \verb=\powset[\alpha]{\omega}= & \( \powset[\alpha]{A} \) & Subsets of \( A \) of size \( < \alpha \) \\
+ % \verb=\ssetsOfsize[A]^{< \alpha}=, \verb=\finSsets[A]^{< \alpha}=, & \( \ssetsOfsize[A]^{< \alpha} \) & \\ \midrule
+ % \verb=\finSsets[A]= & \( \finSsets[A] \) & Finite subsets of \( A \) \\ \midrule
+ % \verb=\finsets= & \( \finSsets[A] \) & Finite subsets \\ \midrule
\verb=\eset= & \( \eset \) & Emptyset abbreviation\\ \midrule
\verb=x \nin A= & \( x \nin A \) & not an element\\ \midrule
\verb=\setcmp{X}= & \( \setcmp{X} \) & Set compliment\\\midrule
@@ -400,7 +407,7 @@ Note that \verb=\Cross= and \verb=\cross= overwrite the existing commands saving
\end{tabular} \\
\subsection{Delimiters}
-To disable these commands pass the option \verb=nodelim=. \\
+To disable these commands pass the option \verb=nodelim=. To prevent only redefinition of \verb=\llangle= and \verb=\rrangle= (e.g. to use the XITS unusual default) pass the option \verb=nodoubleangles=.\\
\begin{tabular}{l | l | l}\toprule
\verb=\gcode{\phi}= & \multirow{3}{*}{\( \gcode{\phi} \)} & \multirow{3}{*}{Godel Code/Corner Quotes}\\
@@ -620,10 +627,38 @@ To change the syntax for the computable infinitary formulas you can pass the opt
\subsection{Proof Cases}
+
+The pfcases enviornment provides a numbered, referenceable division of a proof segment into cases. Pass the option \verb=nopfcases= to disable loading of this feature. Note these features are not available if you are using the package in a beamer document (not likely to be an issue).
+
+To see how these commands work consider the following code.
+
+\begin{verbatim}
\begin{proof}
-The pfcases enviornment provides a numbered, referenceable division of a proof segment into cases. Note these features are not available if you are using the package in a beamer document (not likely to be an issue).
+\begin{pfcases}
+\case[\( x = y \)]\label{case:first} %
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In et enim eget nisl luctus venenatis. Pellentesque sed erat sodales, tincidunt quam non, eleifend risus. Fusce aliquam dignissim pharetra. Integer id dui ac libero tincidunt consectetur. Sed laoreet nunc nec semper laoreet.
+
+ Vestibulum semper eget velit ut lobortis. In vel finibus est. Nullam tellus dolor, pellentesque sed orci sed, ornare pretium diam. Nam vel tincidunt tellus. Nulla at mi nisl.
+
+\case[\( x = z \land z > q \land z < r \land x + z = r \)] \label{case:second} %
+ Quisque consectetur, felis non congue dictum, mauris mi suscipit sem, vel laoreet justo ipsum in tellus. Suspendisse blandit malesuada velit faucibus pulvinar.
\begin{pfcases}
+\case[\( x=2 \)] \label{case:second:sub1} %
+ ipsum dolor sit amet, consectetur adipiscing elit. In et enim eget nisl luctus venenatis. Pellentesque sed erat sodales, tincidunt quam non, eleifend risus. Fusce aliquam dignissim pharetra. Integer id dui ac libero tincidunt consectetur. Sed laoreet nunc nec semper laoreet.
+\case[\( x = 3 \)] \label{case:second:sub2} %
+ consectetur adipiscing elit. In et enim eget nisl luctus venenatis. Pellentesque sed erat sodales, tincidunt quam non, eleifend
+\end{pfcases}
+
+\end{pfcases}
+\end{proof}
+We can now reference the case number \ref{case:second} and cleveref \cref{case:second} as well as case \ref{case:second:sub1} and cleveref \cref{case:second:sub2}.
+\end{verbatim}
+
+ This produces the following output.
+
+\begin{proof}
+\begin{pfcases}
\case[\( x = y \)]\label{case:first} %
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In et enim eget nisl luctus venenatis. Pellentesque sed erat sodales, tincidunt quam non, eleifend risus. Fusce aliquam dignissim pharetra. Integer id dui ac libero tincidunt consectetur. Sed laoreet nunc nec semper laoreet.
@@ -640,11 +675,49 @@ The pfcases enviornment provides a numbered, referenceable division of a proof s
\end{pfcases}
\end{pfcases}
+\end{proof}
+We may reference the case number \ref{case:second} and cleveref \cref{case:second} as well as case \ref{case:second:sub1} and cleveref \cref{case:second:sub2}.
-We can now reference the case number \ref{case:second} and cleveref \cref{case:second} as well as case \ref{case:second:sub1} and cleveref \cref{case:second:sub2}.
-To skip numbering and instead reference with the argument to \verb=\case= use pfcases*
+To skip numbering and instead reference with the argument to \verb=\case= use pfcases*. For instance, consider the following code.
+
+\begin{verbatim}
+\begin{proof}
+\begin{pfcases*}
+\case[\( x = y \)]\label{case*:first} Lorem ipsum dolor sit amet, consectetur
+\adipiscing elit. In et enim eget nisl luctus venenatis. Pellentesque sed erat
+\sodales, tincidunt quam non, eleifend risus. Fusce aliquam dignissim pharetra.
+\Integer id dui ac libero tincidunt consectetur. Sed laoreet nunc nec semper
+\laoreet.
+
+Vestibulum semper eget velit ut lobortis. In vel finibus est. Nullam tellus
+dolor, pellentesque sed orci sed, ornare pretium diam. Nam vel tincidunt tellus.
+Nulla at mi nisl.
+
+\case[\( x = z \land z > q \land z < r \land x + z = r \)] \label{case*:second}
+\Quisque consectetur, felis non congue dictum, mauris mi suscipit sem, vel
+\laoreet justo ipsum in tellus. Suspendisse blandit malesuada velit faucibus
+\pulvinar.
+
+\begin{pfcases*}
+\case[\( x=2 \)] \label{case*:second:sub1} Lorem ipsum dolor sit amet,
+\consectetur adipiscing elit. In et enim eget nisl luctus venenatis.
+\Pellentesque sed erat sodales, tincidunt quam non, eleifend risus. Fusce
+\aliquam dignissim pharetra. Integer id dui ac libero tincidunt consectetur. Sed
+\laoreet nunc nec semper laoreet.
+
+\case[\( x = 3 \)] \label{case*:second:sub2} consectetur adipiscing elit. In et
+\enim eget nisl luctus venenatis. Pellentesque sed erat sodales, tincidunt quam
+\non, eleifend
+\end{pfcases*}
+\end{pfcases*}
+\end{proof}
+
+Again we can ref case \ref{case*:second} and cleverref that \cref{case*:second}. Also case \ref{case*:second:sub1} and cleveref \cref{case*:second:sub2}.
+\end{verbatim}
+
+\begin{proof}
\begin{pfcases*}
\case[\( x = y \)]\label{case*:first} Lorem ipsum dolor sit amet, consectetur adipiscing elit. In et enim eget nisl luctus venenatis. Pellentesque sed erat sodales, tincidunt quam non, eleifend risus. Fusce aliquam dignissim pharetra. Integer id dui ac libero tincidunt consectetur. Sed laoreet nunc nec semper laoreet.
@@ -660,39 +733,47 @@ Vestibulum semper eget velit ut lobortis. In vel finibus est. Nullam tellus dolo
Again we can ref case \ref{case*:second} and cleverref that \cref{case*:second}. Also case \ref{case*:second:sub1} and cleveref \cref{case*:second:sub2}.
+
+
If the choice of cleveref labels aren't to your taste please let me know and I will consider changing them. Also, note that by passing the options \verb!pfcasefont=textit! one can change the font used to typeset Case to italics (or whatever other font command you choose).
-\vspace{.5cm}
+\subsection{Steps}
+To enable the steps environment you \textit{must} pass the option \verb=steps= when loading the package. This enables use of the steps environment to typeset presentation of procedures. The command \verb=\begin{steps}= starts a list environment with an optional argument which is passed along unchanged as the optional argument to the underlying enumitem based list. Inside the steps environment the command \verb=\step[steptitle]= prints a numbered step with steptitle displayed in bold. An example of the use of the steps environment is provided below.
-The above is accomplished with the following code.
\begin{verbatim}
-\begin{proof}
-\begin{pfcases}
- \case[\( x = y \)]\label{case:first} ...
- \case[\( x = z \land z > q \land z < r \land x + z = r \)] \label{case:second} ..
- \begin{pfcases}
- \case[\( x=2 \)] \label{case:second:sub1} ..
- \case[\( x = 3 \)] \label{case:second:sub2}..
- \end{pfcases}
-\end{pfcases}
-.. \ref{case:second}.. \cref{case:second} .. \ref{case:second:sub1} .. \cref{case:second:sub2}
-\begin{pfcases*}
- \case[\( x = y \)]\label{case*:first} ..
- \case[\( x = z \land z > q \land z < r \land x + z = r \)] \label{case*:second} ..
- \begin{pfcases*}
- \case[\( x=2 \)] \label{case*:second:sub1} ..
- \case[\( x = 3 \)] \label{case*:second:sub2}
- \end{pfcases*}
-.. \ref{case*:second} .. \cref{case*:second} .. \ref{case*:second:sub1} ..
-\cref{case*:second:sub2}.
-\end{proof}
+\begin{steps}
+ \step If \( x=5 \) fails to hold end the stage without acting. Otherwise the module acts by executing the subsequent steps.
+
+ \step If there is \( k < m \) with \( s_{k} - 1 \approx_i s - 1 \) perform the following steps and end the stage.
+ \begin{steps}
+ \step Choose \( a \nin \setcol{A}{1} \) large.
+ \step Set \( c = c_k, b = b_k, \hat{s}_0 = s_{k} - 1, \hat{s}_1 = s - 1 \).
+ \step Enumerate \( b \) into \( \setcol{A}{2} \) and set \( R_{j,e}(s) = 2 \)
+ \end{steps}
+ \step If there is no such \( k \) we instead enumerate \( c_m \) into \( \setcol{A}{3} \) and execute the procedure for expansionary stages.
+
+\end{steps}
\end{verbatim}
+This yields the following output:
+
+\begin{steps}
+ \step If \( x=5 \) fails to hold end the stage without acting. Otherwise the module acts by executing the subsequent steps.
+
+ \step If there is \( k < m \) with \( s_{k} - 1 \approx_i s - 1 \) perform the following steps and end the stage.
+ \begin{steps}
+ \step Choose \( a \nin \setcol{A}{1} \) large.
+ \step Set \( c = c_k, b = b_k, \hat{s}_0 = s_{k} - 1, \hat{s}_1 = s - 1 \).
+ \step Enumerate \( b \) into \( \setcol{A}{2} \) and set \( R_{j,e}(s) = 2 \)
+ \end{steps}
+ \step If there is no such \( k \) we instead enumerate \( c_m \) into \( \setcol{A}{3} \) and execute the procedure for expansionary stages.
+
+\end{steps}
\subsection{MRref}
-Finally to enable the mrref helper macros pass the option \verb=mrref=.\\ These macros normalize the formating of mathscinet references for supported bibliography styles and ensure the MR numbers link to the mathscinet page of the article. Unless you have a good reason (like journal formatting guidelines) there is no reason not to always pass this option. Note this option requires the hyperref package.
+Finally to enable the mrref helper macros pass the option \verb=mrref=.\\ These macros normalize the formating of mathscinet references for supported bibliography styles and ensure the MR numbers link to the mathscinet page of the article.
\section{Release Notes}
@@ -700,6 +781,7 @@ Finally to enable the mrref helper macros pass the option \verb=mrref=.\\ These
% TESTING: \verb=\fpmapsto=, \verb=\fpmapsfrom=, \verb=\ParFuncs{Y}{X}= and \verb=\FinParFuncs{Y}{X}=
\begin{itemize}
+ \item[3.7] Fixed cases environment (both prettier and no problem with creating newline). Major re-factor to fix all options. Fixed bug with \verb=\set= display. Added \verb=\st= command inside the \verb=\set= command to depreciate second argument. Added \verb=\finSsets= (alt \verb=\ssetsOfsize=), \verb=\finsets= and optional argument to \verb=\powset=. Changed \verb=\REAop= so the hat is on the starred version as intended. Added the steps (experimental) environment which requires an option to enable and fixed some problems with existing options. Reimplemented \verb=\REset= to use xparse to avoid some errors in unusual contexts. Fixed the display of \verb=\tpath=. Depreciated \verb=\iREAop= and \verb=\oneREAop=. Fixed \verb=\Join=.
\item[3.6] Fixed \verb=\REA[n]= so that dash is shorter. Added BeamerRequirements to add a block for requirements in beamer and fixed the requirements environment for beamer. Fixed \verb=\req*= error. Improved syntax for \verb=\recfnl= so it can accept a parenthesis delimited argument as the oracle. Improved \verb=\setcol= to allow it to be used in a nested fashion without typesetting bugs. Changed the \verb=\code= and \verb=\pair= commands to use only a single angle bracket.
\item[3.5] Added \verb=\Hop= and misc code cleanup.
\item[3.4] Eliminated dependence on undertilde which is missing from texlive