texlive[58732] Master/texmf-dist: rec-thy (4apr21)

commits+preining at tug.org commits+preining at tug.org
Sun Apr 4 04:23:37 CEST 2021


Revision: 58732
          http://tug.org/svn/texlive?view=revision&revision=58732
Author:   preining
Date:     2021-04-04 04:23:36 +0200 (Sun, 04 Apr 2021)
Log Message:
-----------
rec-thy (4apr21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/rec-thy/README
    trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.pdf
    trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex
    trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty

Modified: trunk/Master/texmf-dist/doc/latex/rec-thy/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/rec-thy/README	2021-04-04 02:22:41 UTC (rev 58731)
+++ trunk/Master/texmf-dist/doc/latex/rec-thy/README	2021-04-04 02:23:36 UTC (rev 58732)
@@ -39,3 +39,4 @@
 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.

Modified: trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex	2021-04-04 02:22:41 UTC (rev 58731)
+++ trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex	2021-04-04 02:23:36 UTC (rev 58732)
@@ -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 at invariant.org)}
 \date{\DateOfPackage{rec-thy}: Version \recthyVersion}
@@ -126,8 +126,8 @@
 	\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 @@
 	\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 @@
 	\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 @@
 		\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 @@
         \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 @@
 	\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 @@
 	\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 @@
 	\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 @@
 
 \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,12 +675,50 @@
 \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. 
 
 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. 
@@ -660,39 +733,47 @@
 
 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 @@
 
 % 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

Modified: trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty	2021-04-04 02:22:41 UTC (rev 58731)
+++ trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty	2021-04-04 02:23:36 UTC (rev 58732)
@@ -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 at ifpackageloaded{unicode-math}{}{\RequirePackage{mathrsfs}}%\RequirePackage{mathbbol}}
+  \ltx at ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
+  % \ltx at ifpackageloaded{amssymb}{}{\RequirePackage{amssymb}}
+  % \ltx at ifpackageloaded{amsfonts}{}{\RequirePackage{amsfonts}}
 \AtBeginDocument{
 % \@ifundefined{hyperref}{\providecommand{\texorpdfstring}[2]{def}  }
-\ltx at ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
-\ltx at ifpackageloaded{amssymb}{}{\RequirePackage{amssymb}}
-\ltx at ifpackageloaded{amsfonts}{}{\RequirePackage{amsfonts}}
-\ltx at ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}}
-\ltx at ifpackageloaded{unicode-math}{}{\RequirePackage{mathrsfs}\RequirePackage{mathbbol}}
-% Undertilde doesn't exist in texlive so we remove the dependency and define it again.
-\ltx at ifpackageloaded{undertilde}{}{
-    \newlength\knuthian at fdfive
-    \def\mathpal at save#1{\let\was at math@style=#1\relax}
-    \def\utilde#1{\mathpalette\mathpal at save
-                  {\setbox124=\hbox{$\was at math@style#1$}%
-    \setbox125=\hbox{$\fam=3\global\knuthian at fdfive=\fontdimen5\font$}
-    \setbox125=\hbox{$\widetilde{\vrule height 0pt depth 0pt width \wd124}$}%
-                   \baselineskip=1pt\relax
-                   \vtop{\copy124\copy125\vskip -\knuthian at fdfive}}}
-    }
+
+  \ltx at ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}}
+  
+  % Undertilde doesn't exist in texlive so we remove the dependency and define it again.
+  \ltx at ifpackageloaded{undertilde}{}{
+      \newlength\knuthian at fdfive
+      \def\mathpal at save#1{\let\was at math@style=#1\relax}
+      \def\utilde#1{\mathpalette\mathpal at save
+                    {\setbox124=\hbox{$\was at math@style#1$}%
+      \setbox125=\hbox{$\fam=3\global\knuthian at fdfive=\fontdimen5\font$}
+      \setbox125=\hbox{$\widetilde{\vrule height 0pt depth 0pt width \wd124}$}%
+                     \baselineskip=1pt\relax
+                     \vtop{\copy124\copy125\vskip -\knuthian at fdfive}}}
+      }
 }
 
 % \ifxetex  %workaround for bug...hopefully can dispense on later
-\ifxetex
+\ifpdftex
+    \def\symbf#1{\mathbf{#1}}
+    \mathchardef\@recthy at mhyphen="2D % Define a "math hyphen"
 \else
-    \def\symbf#1{\mathbf{#1}}
+  \def\@recthy at mhyphen{\mathhyphen}
 \fi
 
 
@@ -128,7 +130,8 @@
 \newif\ifrecthy at nooperators \recthy at nooperatorsfalse
 \newif\ifrecthy at fix@typeset \recthy at fix@typesettrue
 \newif\ifrecthy at nodoubleangles \recthy at nodoubleanglesfalse
-%\newif\ifrecthy at nomodule \recthy at nomodulefalse
+\newif\ifrecthy at stepsenv \recthy at stepsenvfalse
+\newif\ifrecthy at compatThreeSixOrEarlier \recthy at compatThreeSixOrEarlierfalse
 
 \DeclareOptionX{nohyphenation}{\recthy at nohyphenationtrue}
 \DeclareOptionX{mrref}{\recthy at mrreftrue}
@@ -153,19 +156,31 @@
 \DeclareOptionX{nosubfun}{\recthy at nosubfuntrue}
 \DeclareOptionX{nopfcases}{\recthy at nopfcasestrue}
 \DeclareOptionX{noprioritytrees}{\recthy at noprioritytreestrue}
-\DeclareOptionX{suppPriorityTrees}{\recthy at nosuppprioritytreesfalse}
 \DeclareOptionX{nohyperreqs}{\recthy at hyperreqsfalse}
 \DeclareOptionX{nooperators}{\recthy at nooperatorstrue}
+\DeclareOptionX{nofixtype}{\recthy at fix@typesetfalse}
+\DeclareOptionX{nodoubleangles}{\recthy at nodoubleanglestrue}
+\DeclareOptionX{steps}{\recthy at stepsenvtrue}
+
 \DeclareOptionX{compat31}{\recthy at compat@threeOne}
 \DeclareOptionX{compat35}{\recthy at compat@threeFive}
-\DeclareOptionX{nofixtype}{\ifrecthy at fix@typesetfalse}
-\DeclareOptionX{nodoubleangles}{\ifrecthy at nodoubleanglestrue}
+\DeclareOptionX{compat36}{\recthy at compat@threeSix}
 
+\DeclareOptionX{suppPriorityTrees}{
+\ifrecthy at 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 at 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 at rollback@threeTwo}{}
 \newcommand*{\recthy at rollback@threeSix}{}
-\newcommand*{\recthy at compat@threeFive}{\recthy at rollback@threeSix}
-\newcommand*{\recthy at compat@threeOne}{\recthy at compat@threeFive\recthy at rollback@threeTwo}
+\newcommand*{\recthy at rollback@threeSeven}{}
+\newcommand*{\recthy at compat@threeSix}{\recthy at compatThreeSixOrEarliertrue\AtEndOfPackage{\recthy at rollback@threeSeven}}
+\newcommand*{\recthy at compat@threeFive}{\recthy at compatThreeSixOrEarliertrue\recthy at compat@threeSix\AtEndOfPackage{\recthy at rollback@threeSix}}
+\newcommand*{\recthy at compat@threeOne}{\recthy at compatThreeSixOrEarliertrue\recthy at compat@threeFive\AtEndOfPackage{\recthy at rollback@threeTwo}}
 
 %\DeclareOptionX{nomodule}{\recthy at nomoduletrue}
 
@@ -178,194 +193,352 @@
 \let\@recthy at ballsymb\@recthy at ballsymb@default
 \DeclareOptionX{ballsymb}[@recthy at ballsymb@default]{\letcs{\@recthy at ballsymb}{#1}}
 
-\AtEndOfPackage{
-    \ifrecthy at fix@typeset
-        %Defining \overbar
-        \let\save at mathaccent\mathaccent
-    \newcommand*\if at 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 at kerna, which is computed by amsmath:
-    \newcommand*\rel at kern[1]{\kern#1\dimexpr\macc at 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 at bar{#1}{0}}}{\over at bar{#1}{1}}}
-    %Use a separate algorithm for single symbols:
-    \newcommand*\over at bar[2]{\if at single{#1}{\over at bar@{#1}{#2}{1}}{\over at bar@{#1}{#2}{2}}}
-    \newcommand*\over at bar@[3]{%
-      \begingroup
-      \def\mathaccent##1##2{%
-    %Enable nesting of accents:
-        \let\mathaccent\save at mathaccent
-    %If there's more than a single symbol, use the first character instead (see below):
-        \if#32 \let\macc at nucleus\first at char \fi
-    %Determine the italic correction:
-        \setbox\z@\hbox{$\macc at style{\macc at nucleus}_{}$}%
-        \setbox\tw@\hbox{$\macc at style{\macc at nucleus}{}_{}$}%
-        \dimen@\wd\tw@
-        \advance\dimen at -\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 at -\@tempdima
-    %Now \dimen@ = (italic correction / 3) - (Breite / 10)
-        \ifdim\dimen@>\z@ \dimen at 0pt\fi
-    %The bar will be shortened in the case \dimen@<0 !
-        \rel at kern{0.6}\kern-\dimen@
-        \if#31
-          \overline{\rel at kern{-0.6}\kern\dimen@\macc at nucleus\rel at kern{0.4}\kern\dimen@}%
-          \advance\dimen at 0.4\dimexpr\macc at kerna
-    %Place the combined final kern (-\dimen@) if it is >0 or if a superscript follows:
-          \let\final at kern#2%
-          \ifdim\dimen@<\z@ \let\final at kern1\fi
-          \if\final at kern1 \kern-\dimen@\fi
-        \else
-          \overline{\rel at kern{-0.6}\kern\dimen@#1}%
-        \fi
-      }%
-      \macc at depth\@ne
-      \let\math at bgroup\@empty \let\math at egroup\macc at set@skewchar
-      \mathsurround\z@ \frozen at everymath{\mathgroup\macc at group\relax}%
-      \macc at set@skewchar\relax
-      \let\mathaccentV\macc at nested@a
-    %The following initialises \macc at kerna and calls \mathaccent:
+
+
+
+
+
+
+
+
+
+\let\pmg at casefont\textsc
+\DeclareOptionX{pfcasefont}[textsc]{\letcs{\pmg at casefont}{#1}}
+
+
+
+\let\@recthy at reqscr\mathscr
+\DeclareOptionX{reqscr}[mathscr]{\letcs{\@recthy at reqscr}{#1}}
+% \DeclareOptionX{beamerreq}[@recthy at EmptyStr@Default]{\letcs{\@recthy at EmptyStr}{#1}}
+
+
+
+
+
+
+
+
+% \newcommand*{\@recthy at REA}{\ensuremath{\text{REA}}}
+% \WithSuffix\def\@recthy at REA[#1]{#1-\@recthy at REA\relax}
+% \newcommand*{\@recthy at CEA}{\ensuremath{\text{CEA}}}
+% \WithSuffix\def\@recthy at CEA[#1]{#1-\@recthy at CEA\relax}
+
+\DeclareOptionX{reterms}{%
+    \let\@recthy at ce=\@recthy at re
+    \let\@recthy at computable=\@recthy at recursive
+    \let\@recthy at computablyEnumerable=\@recthy at recursivelyEnumerable
+    \let\@recthy at ComputablyEnumerable=\@recthy at RecursivelyEnumerable
+    } %Make all references to ce change to re
+
+    \DeclareOptionX{reaterms}{%
+        \let\@recthy at CEA=\@recthy at REA
+        }
+
+\DeclareOptionX{ceterms}{%
+    \let\@recthy at re=\@recthy at ce
+    \let\@recthy at recursive=\@recthy at computable
+    \let\@recthy at recursivelyEnumerable=\@recthy at computablyEnumerable
+    \let\@recthy at RecursivelyEnumerable=\@recthy at ComputablyEnumerable
+    } %Make all references to re change to ce
+
+\DeclareOptionX{ceaterms}{%
+            \let\@recthy at REA=\@recthy at CEA
+            }
+
+\def\@recthy at setdiffSYMdefault{-}
+\let\@recthy at setdiffSYM=\@recthy at setdiffSYMdefault
+\DeclareOptionX{diffsym}[@recthy at setdiffSYMdefault]{\letcs{\@recthy at setdiffSYM}{#1}}
+% \newcommand*{\@recthy at Cform@default}{\prescript{\mathcal{C}}{}{\Pi}}
+
+
+\newcommand*{\@recthy at CDelta@default}{\prescript{\mathcal{C}}{}{\Delta}}
+\newcommand*{\@recthy at CSigma@default}{\prescript{\mathcal{C}}{}{\Sigma}}
+\newcommand*{\@recthy at CPi@default}{\prescript{\mathcal{C}}{}{\Pi}}
+\let\@recthy at CDelta=\@recthy at CDelta@default
+\let\@recthy at CSigma=\@recthy at CSigma@default
+\let\@recthy at CPi=\@recthy at CPi@default
+\DeclareOptionX{cdeltasym}[@recthy at CDelta@default]{\letcs{\@recthy at CDelta}{#1}}
+\DeclareOptionX{csigmasym}[@recthy at CSigma@default]{\letcs{\@recthy at CSigma}{#1}}
+\DeclareOptionX{cpisym}[@recthy at CPi@default]{\letcs{\@recthy at CPi}{#1}}
+% \DeclareOptionX{cformsym}[@recthy at Cform@default]{\letcs{\@recthy at CPi}{#1}\letcs{\@recthy at CSigma}{#1}\letcs{\@recthy at CDelta}{#1}}
+
+
+
+
+\def\@recthy at recfSYM@default{\phi}
+\let\@recthy at recfSYM=\@recthy at recfSYM@default
+\def\@recthy at recfnlSYM@default{\Phi}
+\let\@recthy at recfnlSYM=\@recthy at recfnlSYM@default
+\def\@recthy at useSYM@default{\ltx at ifpackageloaded{unicode-math}{\symbffrak{u}}{\mathfrak{u}}}
+\let\@recthy at useSYM=\@recthy at useSYM@default
+\DeclareOptionX{recfnlsym}[@recthy at recfnlSYM@default]{\letcs{\@recthy at recfnlSYM}{#1}}
+\DeclareOptionX{recfsym}[@recthy at recfSYM@default]{\letcs{\@recthy at recfSYM}{#1}}
+\DeclareOptionX{usesym}[@recthy at useSYM@default]{\letcs{\@recthy at useSYM}{#1}}
+
+\newcommand*{\@recthy at llangle}{\langle\!\langle}
+\newcommand*{\@recthy at rrangle}{\rangle\!\rangle}
+
+\let\@recthy at EmptyStr=\@recthy at EmptyStr@Default
+\let\@recthy at concatSYM=\@recthy at concatSYM@Default
+\def\@recthy at langle{\langle}
+\def\@recthy at rangle{\rangle}
+\let\@recthy at lstrdelim=\@recthy at langle
+\let\@recthy at rstrdelim=\@recthy at rangle
+\let\@recthy at lcodedelim=\@recthy at langle
+\let\@recthy at rcodedelim=\@recthy at rangle
+\let\@recthy at lpairdelim=\@recthy at langle
+\let\@recthy at rpairdelim=\@recthy at rangle
+
+
+\def\@recthy at concatSYM@Default{\widehat{\phantom{X}}}
+\def\@recthy at EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
+\let\@recthy at concatSYM\@recthy at concatSYM@Default
+\let\@recthy at EmptyStr\@recthy at EmptyStr@Default
+
+\DeclareOptionX{emptystr}[@recthy at EmptyStr@Default]{\letcs{\@recthy at EmptyStr}{#1}}
+\DeclareOptionX{concatsym}[@recthy at concatSYM@Default]{\letcs{\@recthy at concatSYM}{#1}}
+\DeclareOptionX{lstrdelim}[@recthy at langle]{\letcs{\@recthy at lstrdelim}{#1}}
+\DeclareOptionX{rstrdelim}[@recthy at rangle]{\letcs{\@recthy at rstrdelim}{#1}}
+\DeclareOptionX{lcodedelim}[@recthy at langle]{\letcs{\@recthy at lcodedelim}{#1}}
+\DeclareOptionX{rcodedelim}[@recthy at rangle]{\letcs{\@recthy at rcodedelim}{#1}}
+\DeclareOptionX{lpairdelim}[@recthy at llangle]{\letcs{\@recthy at lpairdelim}{#1}}
+\DeclareOptionX{rpairdelim}[@recthy at rrangle]{\letcs{\@recthy at rpairdelim}{#1}}
+
+
+
+
+
+
+% \ProcessOptions*
+% \ProcessOptionsX<\@recthy at family>
+\ProcessOptionsX
+
+%misc tools
+
+\def\@recthy at ignorespacesandallparsafterend{\ifhmode\unskip\fi
+\aftergroup\@recthy at useignorespacesandallpars}
+\def\@recthy at useignorespacesandallpars#1\ignorespaces\fi{%
+#1\fi\@recthy at ignorespacesandallpars}
+\def\@recthy at ignorespacesandallpars{%
+  \@ifnextchar\par
+    {\expandafter\@recthy at ignorespacesandallpars\@gobble}%
+    {}%
+}
+
+
+\ifrecthy at fix@typeset
+      %Defining \overbar
+      \let\save at mathaccent\mathaccent
+  \newcommand*\if at 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 at kerna, which is computed by amsmath:
+  \newcommand*\rel at kern[1]{\kern#1\dimexpr\macc at 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 at bar{#1}{0}}}{\over at bar{#1}{1}}}
+  %Use a separate algorithm for single symbols:
+  \newcommand*\over at bar[2]{\if at single{#1}{\over at bar@{#1}{#2}{1}}{\over at bar@{#1}{#2}{2}}}
+  \newcommand*\over at bar@[3]{%
+    \begingroup
+    \def\mathaccent##1##2{%
+  %Enable nesting of accents:
+      \let\mathaccent\save at mathaccent
+  %If there's more than a single symbol, use the first character instead (see below):
+      \if#32 \let\macc at nucleus\first at char \fi
+  %Determine the italic correction:
+      \setbox\z@\hbox{$\macc at style{\macc at nucleus}_{}$}%
+      \setbox\tw@\hbox{$\macc at style{\macc at nucleus}{}_{}$}%
+      \dimen@\wd\tw@
+      \advance\dimen at -\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 at -\@tempdima
+  %Now \dimen@ = (italic correction / 3) - (Breite / 10)
+      \ifdim\dimen@>\z@ \dimen at 0pt\fi
+  %The bar will be shortened in the case \dimen@<0 !
+      \rel at kern{0.6}\kern-\dimen@
       \if#31
-        \macc at nested@a\relax111{#1}%
+        \overline{\rel at kern{-0.6}\kern\dimen@\macc at nucleus\rel at kern{0.4}\kern\dimen@}%
+        \advance\dimen at 0.4\dimexpr\macc at kerna
+  %Place the combined final kern (-\dimen@) if it is >0 or if a superscript follows:
+        \let\final at kern#2%
+        \ifdim\dimen@<\z@ \let\final at kern1\fi
+        \if\final at 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 at till@marker##1\endmarker{}%
-        \futurelet\first at char\gobble at till@marker#1\endmarker
-        \ifcat\noexpand\first at char A\else
-          \def\first at char{}%
-        \fi
-        \macc at nested@a\relax111{\first at char}%
+        \overline{\rel at kern{-0.6}\kern\dimen@#1}%
       \fi
-      \endgroup
-    }
+    }%
+    \macc at depth\@ne
+    \let\math at bgroup\@empty \let\math at egroup\macc at set@skewchar
+    \mathsurround\z@ \frozen at everymath{\mathgroup\macc at group\relax}%
+    \macc at set@skewchar\relax
+    \let\mathaccentV\macc at nested@a
+  %The following initialises \macc at kerna and calls \mathaccent:
+    \if#31
+      \macc at 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 at till@marker##1\endmarker{}%
+      \futurelet\first at char\gobble at till@marker#1\endmarker
+      \ifcat\noexpand\first at char A\else
+        \def\first at char{}%
+      \fi
+      \macc at nested@a\relax111{\first at char}%
     \fi
+    \endgroup
+  }
+\else
+  \@packinfo{Not loading Fix Typesetting}
+\fi
 
-}
 
+%Strings
 
-\AtEndOfPackage{
-    \ifrecthy at 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 at modulescr{#1}}^{#2}_{#3} }}
-        \let\module=\PriorityTreeModule
-        \providecommand{\ball}[3][]{{\@recthy at ballsymb}^{#1}(#2, #3)}
-    \fi
 
-}
 
+  
 
-\AtEndOfPackage{
-    \ifrecthy at nosuppprioritytrees
-        \@packinfo{Not loading Priority Tree Supplemental Helper}
+  \newcommand*{\@recthy at pair}[2]{\mathopen{\@recthy at lpairdelim} #1, #2 \mathclose{\@recthy at rpairdelim}}
+  \newcommand*{\@recthy at str}[1]{\mathopen{\@recthy at lstrdelim}#1\mathclose{\@recthy at rstrdelim}}
+  \newcommand*{\@recthy at code}[1]{\mathopen{\@recthy at lcodedelim}#1\mathclose{\@recthy at rcodedelim}}
+
+
+  \appto{\recthy at rollback@threeSix}{
+    \renewcommand*{\@recthy at pair}[2]{\mathopen{\@recthy at llangle} #1, #2 \mathclose{\@recthy at rrangle}}
+    \def\@recthy at EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
+    % \renewcommand*{\@recthy at str}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
+    \renewcommand*{\@recthy at code}[2][]{\mathopen{\@recthy at llangle}#2\mathclose{\@recthy at rrangle}^{#1}}
+    }
+\NewDocumentCommand{\incompat at recthy}{o}{\mathrel{\mid}\IfValueTF{#1}{_{#1}}{}}
+\NewDocumentCommand{\compat at recthy}{o}{\mathrel{\not\mid}\IfValueTF{#1}{_{#1}}{}}
+
+\ifrecthy at nostrings
+    \@packinfo{No strings loading.}
+\else
+    \@packinfo{Strings loading.}
+    \appto{\recthy at rollback@threeSix}{\newcommand*{\closedn}[1]{{#1}^\blacktriangledown}}
+    \let\code=\@recthy at code
+    \let\str=\@recthy at str
+    \newcommand*{\EmptyStr}{\@recthy at EmptyStr}
+    \newcommand*{\estr}{\EmptyStr}
+    \newcommand*{\decode}[2]{\left(#1\right)_{#2}}
+    \let\godelpair=\@recthy at pair
+    \let\gpair=\@recthy at pair
+    \newcommand*{\concat}{\@recthy at concatSYM}
+    \WithSuffix\def\concat[#1]{\concat\str{#1}}
+    \newcommand*{\strpred}[1]{{#1}^{-}}
+    \providecommand*{\lh}[2][]{\@recthy at abs{#2}_{#1}} %% Gives length of a string
+
+    \providecommand*{\incompat}{\incompat at recthy} %incompatible stringes FIX SPACING
+    \providecommand*{\incomp}{\incompat at recthy}
+    \providecommand*{\compat}{\compat at recthy}
+    \providecommand*{\nincompat}{\compat at recthy}
+    \providecommand*{\nincomp}{\compat at 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 at 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 at pair
     \fi
+\fi
 
-}
+\ifrecthy at 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 at modulescr{#1}}^{#2}_{#3} }}
+    \let\module=\PriorityTreeModule
+    \providecommand{\ball}[3][]{{\@recthy at ballsymb}^{#1}(#2, #3)}
+\fi
 
-\let\pmg at casefont\textsc
-\DeclareOptionX{pfcasefont}[textsc]{\letcs{\pmg at casefont}{#1}}
 
-\AtEndOfPackage{
-    \ifrecthy at nopfcases
-        \@packinfo{Not loading Proof Cases Helper}
-    \else
-        \@packinfo{Loading Proof Cases Helper.}
-        \RequirePackage{enumitem}
-        \ltx at 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 at 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 at nopfcases
+    \@packinfo{Not loading Proof Cases Helper}
+\else
+    \@packinfo{Loading Proof Cases Helper.}
+    \RequirePackage{enumitem}
+    \appto{\recthy at rollback@threeSeven}{
         \setlist[pfcasesnonum]{
           label={\pmg at casefont{Case}}\protect\thiscase:~,
           align=left,
           labelsep=!,
           itemindent=-1em,
-          leftmargin=2em,
-          labelindent=0pt,
-          labelwidth=0pt
         }
-        \setlist[pfcasesnonum,1]{
-            before=\def\pfcasecounter at pmg{pfcasesnonumi},
-        }
-        \setlist[pfcasesnonum,2]{
-            before=\def\pfcasecounter at pmg{pfcasesnonumii},
-        }
-        \setlist[pfcasesnonum,3]{
-            before=\def\pfcasecounter at 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 at pmg{pfcasesnumberedi},
           label={{\pmg at casefont{Case}}~\arabic*\protect\thiscase:~},
-          ref={\arabic*},
         }
         \setlist[pfcasesnumbered,2]{
-            before=\def\pfcasecounter at pmg{pfcasesnumberedii},
           label={{\pmg at casefont{Case}}~\arabic{pfcasesnumberedi}\alph*:\protect\thiscase.~},
-          ref={\arabic{pfcasesnumberedi}\alph*},
         }
         \setlist[pfcasesnumbered,3]{
-            before=\def\pfcasecounter at pmg{pfcasesnumberediii},
           label={{\pmg at 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 at xdef\cref at currentlabel{[\pfcasecounter at pmg][][\cref at result] \csname the\pfcasecounter at pmg \endcsname}}{}%
         }
         \begin{pfcasesnumbered}}{\end{pfcasesnumbered}}
-    \fi
-}
+    }
 
-\AtEndOfPackage{
+
+  \ltx at 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 at casefont{Case}},
+      align=left,
+      labelsep=0pt,
+      itemindent=!,
+      leftmargin=2em,
+      labelindent=0pt,
+      labelwidth=0pt
+    }
+    \setlist[pfcasesnonum,1]{
+        before=\def\pfcasecounter at pmg{pfcasesnonumi},
+    }
+    \setlist[pfcasesnonum,2]{
+        before=\def\pfcasecounter at pmg{pfcasesnonumii},
+    }
+    \setlist[pfcasesnonum,3]{
+        before=\def\pfcasecounter at 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 at pmg{pfcasesnumberedi},
+      label={{\pmg at casefont{Case}}~\arabic*},
+      ref={\arabic*},
+    }
+    \setlist[pfcasesnumbered,2]{
+        before=\def\pfcasecounter at pmg{pfcasesnumberedii},
+      label={{\pmg at casefont{Case}}~\arabic{pfcasesnumberedi}\alph*},
+      ref={\arabic{pfcasesnumberedi}\alph*},
+      labelindent=-1em,
+    }
+    \setlist[pfcasesnumbered,3]{
+        before=\def\pfcasecounter at pmg{pfcasesnumberediii},
+      label={{\pmg at casefont{Case}}~\arabic{pfcasesnumberedi}\alph{pfcasesnumberedii}.\roman*},
+      ref={\arabic{pfcasesnumberedi}\alph{pfcasesnumberedii}.\roman*},
+      labelindent=-1em,
+    }
+    \def\@recthy at cases@labelindent{0pt}
+    \newenvironment{pfcases*}{
+        \def\@recthy at cases@labelindent{-1em}
+        \ProvideDocumentCommand{\case}{r[]}{
+                \def\thiscase{~##1}%
+            \item~##1\textbf{:} %
+            \ltx at ifpackageloaded{cleveref}{%
+            \cref at constructprefix{pfcases}{\cref at result}%
+            \protected at xdef\cref at currentlabel{[\pfcasecounter at pmg][][\cref at result]##1}}{}  \protected at edef\@currentlabel{##1}\ignorespaces}
+    \begin{pfcasesnonum}[labelindent=\@recthy at cases@labelindent]\def\@recthy at 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 at ifpackageloaded{cleveref}{%
+            \cref at constructprefix{\pfcasecounter at pmg}{\cref at result}%
+            \protected at xdef\cref at currentlabel{[\pfcasecounter at pmg][][\cref at result]\csname the\pfcasecounter at pmg \endcsname}}{}\ignorespaces}
+    
+    \begin{pfcasesnumbered}[labelindent=\@recthy at cases@labelindent]\def\@recthy at cases@labelindent{-1em}\ignorespaces}{\end{pfcasesnumbered}\ignorespacesafterend}
+\fi
+
+
 \ifrecthy at nosubfun
     \@packinfo{Not loading subfun defs.}
 \else
     \@packinfo{Loading subfun defs.}
     %DOCUMENT ME
-    \newcommand{\@pnrelbar}{%
-  \linethickness{\dimen2}%
-  \sbox\z@{$\m at th\prec$}%
-  \dimen@=1.1\ht\z@
-  \begin{picture}(\dimen@,.4ex)
-  \roundcap
-  \put(0,.2ex){\line(1,0){\dimen@}}
-  \put(\dimexpr 0.5\dimen at -.2ex\relax,0){\line(1,1){.4ex}}
-  \end{picture}%
-}
+  \newcommand{\@pnrelbar}{%
+    \linethickness{\dimen2}%
+    \sbox\z@{$\m at th\prec$}%
+    \dimen@=1.1\ht\z@
+    \begin{picture}(\dimen@,.4ex)
+    \roundcap
+    \put(0,.2ex){\line(1,0){\dimen@}}
+    \put(\dimexpr 0.5\dimen at -.2ex\relax,0){\line(1,1){.4ex}}
+    \end{picture}%
+  }
 
 
-    \newcommand{\@snrelbar}{%
-  \linethickness{\dimen2}%
-  \sbox\z@{$\m at th\succ$}%
-  \dimen@=1.1\ht\z@
-  \begin{picture}(\dimen@,.4ex)
-  \roundcap
-  \put(0,.2ex){\line(1,0){\dimen@}}
-  \put(\dimexpr 0.5\dimen at -.2ex\relax,0){\line(1,1){.4ex}}
-  \end{picture}%
-}
+  \newcommand{\@snrelbar}{%
+    \linethickness{\dimen2}%
+    \sbox\z@{$\m at th\succ$}%
+    \dimen@=1.1\ht\z@
+    \begin{picture}(\dimen@,.4ex)
+    \roundcap
+    \put(0,.2ex){\line(1,0){\dimen@}}
+    \put(\dimexpr 0.5\dimen at -.2ex\relax,0){\line(1,1){.4ex}}
+    \end{picture}%
+  }
 
 
-\newcommand{\@precneq}{\mathrel{\vcenter{\hbox{\text{\prec at neq}}}}}
-\newcommand{\prec at neq}{%
-  \dimen2=\f at size\dimexpr.04pt\relax
-  \oalign{%
-    \noalign{\kern\dimexpr.2ex-.5\dimen2\relax}
-    $\m at th\prec$\cr
-    \noalign{\kern-.5\dimen2}
-    \hidewidth\@pnrelbar\hidewidth\cr
-  }%
-}
+  \newcommand{\@precneq}{\mathrel{\vcenter{\hbox{\text{\prec at neq}}}}}
+  \newcommand{\prec at neq}{%
+    \dimen2=\f at size\dimexpr.04pt\relax
+    \oalign{%
+      \noalign{\kern\dimexpr.2ex-.5\dimen2\relax}
+      $\m at th\prec$\cr
+      \noalign{\kern-.5\dimen2}
+      \hidewidth\@pnrelbar\hidewidth\cr
+    }%
+  }
 
 
-\newcommand{\@succneq}{\mathrel{\vcenter{\hbox{\text{\succ at neq}}}}}
-\newcommand{\succ at neq}{%
-  \dimen2=\f at size\dimexpr.04pt\relax
-  \oalign{%
-    \noalign{\kern\dimexpr.2ex-.5\dimen2\relax}
-    $\m at th\prec$\cr
-    \noalign{\kern-.5\dimen2}
-    \hidewidth\@snrelbar\hidewidth\cr
-  }%
-}
+  \newcommand{\@succneq}{\mathrel{\vcenter{\hbox{\text{\succ at neq}}}}}
+  \newcommand{\succ at neq}{%
+    \dimen2=\f at size\dimexpr.04pt\relax
+    \oalign{%
+      \noalign{\kern\dimexpr.2ex-.5\dimen2\relax}
+      $\m at 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}}}
+  \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 at reqscr\mathscr
-\DeclareOptionX{reqscr}[mathscr]{\letcs{\@recthy at reqscr}{#1}}
-% \DeclareOptionX{beamerreq}[@recthy at EmptyStr@Default]{\letcs{\@recthy at EmptyStr}{#1}}
 
 \newcommand*{\@pmg at saveeqstate}{\let\@origif at fleqn@pmg=\if at fleqn \let\@origiftagsleft at pmg=\iftagsleft@}
 \newcommand*{\@pmg at restoreeqstate}{ \let\if at fleqn=\@origif at fleqn@pmg\let\iftagsleft@=\@origiftagsleft at pmg}
 
-
-\AtEndOfPackage{
 \ifrecthy at noreqhelper
     \@packinfo{Not loading requirement assist.}
 \else
@@ -519,8 +770,8 @@
 
     \NewDocumentCommand{\refreq}{O{}mO{}}{\ref{\detokenize{req:#2@#1#3}}}
 
-    \NewDocumentCommand{\require at nested}{sO{}mO{}m}{
-        \tag{\req at nohref[#2#4]{#3}{#5}}\IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}}
+    \NewDocumentCommand{\require at nested}{sO{}mO{}m}{%
+        \tag{\req at nohref[#2#4]{#3}{#5}}\IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}}%
     }
 
 
@@ -552,97 +803,93 @@
           \let\require=\require at beamer %
           \begin{flalign*}%
           #1 &
-          \end{flalign*}}{}
+          \end{flalign*}}{\ignorespacesafterend}%\@recthy at ignorespacesandallparsafter}
     \else
 
-        \NewDocumentEnvironment{requirements}{}{
-        \@pmg at saveeqstate
-        \@fleqntrue
-        \setlength\@mathmargin{1.5cm}
-        \tagsleft at true
-        \usetagform{colon}
-        \let\require=\require at nested
-        % \let\maketag@@@orig at pmg=\maketag@@@
-        % \def\maketag@@@#1{\hbox{\m at th\normalfont#1:}}
+        \NewDocumentEnvironment{requirements}{}{%
+        \@pmg at saveeqstate%
+        \@fleqntrue%
+        \setlength\@mathmargin{1.5cm}%
+        \tagsleft at true%
+        \usetagform{colon}%
+        \let\require=\require at nested%
         \gather
-    }{
-        \endgather
-        \@pmg at restoreeqstate
-        \usetagform{default}
-        % \let\maketag@@@=\maketag@@@orig at pmg  
-    }
+        }{\endgather%
+        \@pmg at restoreeqstate%
+        \usetagform{default}%
+        \ignorespacesafterend}
 
  \fi
 
 
 \fi
-}
 
 
-
-\AtEndOfPackage{
 \ifrecthy at nostructresets
     \@packinfo{Not loading r.e. set structs w/ containment.}
 \else
-    \@packinfo{Loading r.e. set structs w/ containment.}
-\let\@orig at setminus=\setminus
-\newcommand*{\promptdif}{\@orig at setminus_{\downarrow}}
-\let\setbefore=\promptdif
-\let\promptminus=\promptdif
-\let\promptsetminus=\promptdif
+  \@packinfo{Loading r.e. set structs w/ containment.}
+  \let\@orig at setminus=\setminus
+  \newcommand*{\promptdif}{\@orig at 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}}}
+  \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 at nohyphenation
     \@packinfo{No hyphenation loading.}
 \else
 \hyphenation{ra-tion-als ra-tion-al Harrington Slaman Cholak Knight Gerdes Lange}
 \fi
-}
 
 
-\AtEndOfPackage{
+
+
 \ifrecthy at mrref
     \@packinfo{MRref helper loading}
-    \RequirePackage{hyperref}
-    \def\recthy at checkMR MR#1#2#3 #4\relax%
-      {\ifx#1M%
-         \ifx#2R\recthy at MR{#3}\else\recthy at MR{#1#2#3}\fi
-       \else
-         \recthy at MR{#1#2#3}%
-       \fi}
-    \def\MR#1{\recthy at checkMR MR#1 \relax}
-    \newcommand{\recthy at MR}[1]{\recthy at MRhref{#1}{MR #1}}
-    % % \MRhref is called by the amsart/book/proc definition of \MR.
-    \newcommand{\recthy at MRhref}[2]{\href{http://www.ams.org/mathscinet-getitem?mr=#1}{#2}}
+    \AtBeginDocument{
+      \@ifpackageloaded{hyperref}{
+        \def\recthy at checkMR MR#1#2#3 #4\relax%
+          {\ifx#1M%
+             \ifx#2R\recthy at MR{#3}\else\recthy at MR{#1#2#3}\fi
+           \else
+             \recthy at MR{#1#2#3}%
+           \fi}
+        \def\MR#1{\recthy at checkMR MR#1 \relax}
+        \newcommand{\recthy at MR}[1]{\recthy at MRhref{#1}{MR #1}}
+        % % \MRhref is called by the amsart/book/proc definition of \MR.
+        \newcommand{\recthy at MRhref}[2]{\href{http://www.ams.org/mathscinet-getitem?mr=#1}{#2}}
+      }
+    }
 \else
     \@packinfo{MRref helper not loading}
 \fi
-}
 
+
 % \newcommand*{\@recthy at abs}[1]{\lvert#1\rvert}
 \DeclarePairedDelimiter\@recthy at abs{\lvert}{\rvert}
 \newcommand*{\@recthy at ensuretext}[1]{\ensuremath{\text{#1}}}
-\AtEndOfPackage{
+
+
 \ifrecthy at 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 at strip{ensuretext}
 \fi
-}
 
 
-\AtEndOfPackage{
+
+
 \ifrecthy at 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 at recthy}{\mathop{\bigvee}}
+    \AtBeginDocument{
+      \let\Join=\Join at recthy
+    }
     \ifdefined\xor
     \else
         \DeclareMathOperator{\xor}{xor}
     \fi
 \fi
-}
 
-\newcommand*{\@recthy at llangle}{\langle\!\langle}
-\newcommand*{\@recthy at rrangle}{\rangle\!\rangle}
 
 
 
-\AtEndOfPackage{
+
+
 \ifrecthy at nodelim
     \@packinfo{No delimiters loading.}
 \else
@@ -753,14 +1001,18 @@
       <10-12> MnSymbolE-Bold10
       <12->   MnSymbolE-Bold12
     }{}
-    \DeclareMathDelimiter{\ulcorner}
+    \DeclareMathDelimiter{\@recthy at ulcorner}
         {\mathopen}{MnLargeSymbols}{'036}{MnLargeSymbols}{'036}
-    \DeclareMathDelimiter{\urcorner}
+    \DeclareMathDelimiter{\@recthy at urcorner}
         {\mathclose}{MnLargeSymbols}{'043}{MnLargeSymbols}{'043}
+        \let\ulcorner=\@recthy at ulcorner
+        \let\urcorner=\@recthy at urcorner
 }
     \newcommand*{\godelnum}[1]{\left\ulcorner #1 \right\urcorner}
     \let\cornerquote=\godelnum
     \let\gcode=\godelnum
+    \let\@recthy at llangle@orig=\llangle
+    \let\@recthy at rrangle@orig=\rrangle
     \ifrecthy at nodoubleangles
     \else
       \let\llangle=\@recthy at llangle
@@ -767,8 +1019,8 @@
       \let\rrangle=\@recthy at rrangle
     \fi
 \fi
-}
 
+
 \newcommand*{\@recthy at re}{\@recthy at ensuretext{r.e.\ }}
 \newcommand*{\@recthy at ce}{\@recthy at ensuretext{c.e.\ }}
 \newcommand*{\@recthy at RE}{\@recthy at ensuretext{R.E.\ }}
@@ -785,41 +1037,11 @@
 \newcommand*{\@recthy at ComputablyEnumerable}{\@recthy at ensuretext{Computably enumerable}}
 \def\@recthy at REA{REA}
 \def\@recthy at CEA{CEA}
-\mathchardef\@recthy at mhyphen="2D % Define a "math hyphen"
+
 \NewDocumentCommand{\REA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy at mhyphen}{}\text{\@recthy at REA}\IfValueTF{#1}{(#1)}{}}}
 \NewDocumentCommand{\CEA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy at mhyphen}{}\text{\@recthy at CEA}\IfValueTF{#1}{(#1)}{}}}
 
-% \newcommand*{\@recthy at REA}{\ensuremath{\text{REA}}}
-% \WithSuffix\def\@recthy at REA[#1]{#1-\@recthy at REA\relax}
-% \newcommand*{\@recthy at CEA}{\ensuremath{\text{CEA}}}
-% \WithSuffix\def\@recthy at CEA[#1]{#1-\@recthy at CEA\relax}
 
-\DeclareOptionX{reterms}{%
-    \let\@recthy at ce=\@recthy at re
-    \let\@recthy at computable=\@recthy at recursive
-    \let\@recthy at computablyEnumerable=\@recthy at recursivelyEnumerable
-    \let\@recthy at ComputablyEnumerable=\@recthy at RecursivelyEnumerable
-    } %Make all references to ce change to re
-
-    \DeclareOptionX{reaterms}{%
-        \let\@recthy at CEA=\@recthy at REA
-        }
-
-\DeclareOptionX{ceterms}{%
-    \let\@recthy at re=\@recthy at ce
-    \let\@recthy at recursive=\@recthy at computable
-    \let\@recthy at recursivelyEnumerable=\@recthy at computablyEnumerable
-    \let\@recthy at RecursivelyEnumerable=\@recthy at ComputablyEnumerable
-    } %Make all references to re change to ce
-
-\DeclareOptionX{ceaterms}{%
-            \let\@recthy at REA=\@recthy at CEA
-            }
-
-
-
-
-\AtEndOfPackage{
 \ifrecthy at nonames
     \@packinfo{No names loading.}
 \else
@@ -839,14 +1061,14 @@
     \recthy at strip{RecursivelyEnumerable}
     \recthy at strip{ComputablyEnumerable}
 \fi
-}
 
 
+
 % Set stuff
 
 
 
-\NewDocumentCommand{\@recthy at set}{mg}{\left \{ #1 \IfNoValueTF{#2}{}{\mid  #2} \right \}}
+\NewDocumentCommand{\@recthy at set}{m!G{}}{{\let\st=\mid\left\{#1 \ifthenelse{\isempty{#2}}{}{\mid #2} \right\}}}
 
 % \def\@recthy at set#1{\def\@set at argi@pmg{#1}\@ifnextchar\bgroup\@setst at pmg\@setplain at pmg}
 % \newcommand*{\@setst at pmg}[1]{\ifthenelse{\isempty{#1}}{\@setplain at pmg}{\left \{ \@set at argi@pmg \middle | #1\right \}}}
@@ -861,21 +1083,20 @@
 \newcommand*{\@recthy at isect}{\mathbin{\cap}}
 \newcommand*{\@recthy at Isect}{\mathop{\bigcap}}
 \newcommand*{\@recthy at nin}{\notin}
-\newcommand*{\@recthy at powset}[1]{\mathcal{P}\left(#1\right)}
+\NewDocumentCommand{\@recthy at powset}{O{}m}{\mathcal{P}_{#1}\left(#2\right)}
+\NewDocumentCommand{\@recthy at finSsets}{r[]E{^}{{< \omega}}}{\left[#1\right]^{#2}}
 \newcommand*{\@recthy at eset}{\emptyset}
 \newcommand*{\@recthy at setovercmp}[1]{\overline{#1}}
 \newcommand*{\@recthy at setsimcmp}[1]{\backsim #1}
 \let\@recthy at setcmp=\@recthy at setovercmp
-\def\@recthy at setdiffSYM{-}
 \newcommand*{\@recthy at setdiff}{\mathbin{\@recthy at setdiffSYM}}
 
-\DeclareOptionX{setdiffsym}{\edef\@recthy at setdiffSYM{\expandafter\noexpand\csname #1 \endcsname}}
 
 
 
 
 
-\AtEndOfPackage{
+
 % \WithSuffix\def\@recthy at setcmp[#1]#2{#1\@recthy at setminus#2}
 \ifrecthy at nosets
     \@packinfo{No set cmds loading.}
@@ -888,6 +1109,9 @@
     \recthy at strip{isect}
     \recthy at strip{Isect}
     \recthy at strip{powset}
+    \recthy at strip{finSsets}
+    \let\ssetsOfsize\finSsets
+    \newcommand*{\finsets}{\finSsets[\omega]\relax}
     \recthy at strip{eset}
     \recthy at strip{nin}
     \recthy at strip{setcmp}
@@ -910,9 +1134,9 @@
         % \DeclareMathOperator{\clos}{cl}
     % \fi
 \fi
-}
 
-\AtEndOfPackage{
+
+
 \ifrecthy at noquants
     \@packinfo{No quants loading.}
 \else
@@ -985,248 +1209,12 @@
     \providecommand*{\limplies}{\ensuremath{\rightarrow}}
 
 \fi
-}
 
-
-
-
-\AtEndOfPackage{
-\ifrecthy at 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 at 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 at nosetrels
-    \@packinfo{No setrels loading.}
-\else
-    \@packinfo{setrels loading.}
-    \AtBeginDocument{
-        \providecommand*{\nsupset}{\not\supset at recthy@orig}
-        \providecommand*{\nsubset}{\not\subset at recthy@orig}
-        \let\nsubset at recthy@orig=\nsubset
-        \let\nsupset at recthy@orig=\nsupset
-        \let\subset at recthy@orig=\subset
-        \let\supset at recthy@orig=\supset
-        \let\subseteq at recthy@orig=\subseteq
-        \let\supseteq at recthy@orig=\supseteq
-        \let\subsetneq at recthy@orig=\subsetneq
-        \let\supsetneq at recthy@orig=\supsetneq
-        \newcommand*{\subset at recthy}{\subset at recthy@orig}
-        \newcommand*{\supset at recthy}{\supset at recthy@orig}
-        \newcommand*{\subseteq at recthy}{\subseteq at recthy@orig}
-        \newcommand*{\supseteq at recthy}{\supseteq at recthy@orig}
-        \newcommand*{\nsubset at recthy}{\nsubset at recthy@orig}
-        \newcommand*{\nsupset at recthy}{\nsupset at recthy@orig}
-        \newcommand*{\nsubseteq at recthy}{\nsubseteq at recthy@orig}
-        \newcommand*{\nsupseteq at recthy}{\nsupseteq at recthy@orig}
-        \WithSuffix\def\subset at recthy*{\subset at recthy@orig^{*}}
-        \WithSuffix\def\supset at recthy*{\supset at recthy@orig^{*}}
-        \WithSuffix\def\subseteq at recthy*{\subseteq at recthy@orig^{*}}
-        \WithSuffix\def\supseteq at recthy*{\supseteq at recthy@orig^{*}}
-        \WithSuffix\def\subsetneq at recthy*{\subsetneq at recthy@orig^{*}}
-        \WithSuffix\def\supsetneq at recthy*{\supsetneq at recthy@orig^{*}}
-        \WithSuffix\def\nsubset at recthy*{\nsubset^{*}}
-        \WithSuffix\def\nsupset at recthy*{\nsupset^{*}}
-        \WithSuffix\def\nsubseteq at recthy*{\nsubseteq^{*}}
-        \WithSuffix\def\nsupseteq at recthy*{\nsupseteq^{*}}
-        \let\subset=\subset at recthy
-        \let\supset=\supset at recthy
-        \let\subseteq=\subseteq at recthy
-        \let\supseteq=\supseteq at recthy
-        \let\subsetneq=\subsetneq at recthy
-        \let\supsetneq=\supsetneq at recthy
-        \let\nsubset=\nsubset at recthy
-        \let\nsupset=\nsupset at recthy
-        \let\nsubseteq=\nsubseteq at recthy
-        \let\nsupseteq=\nsupseteq at 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 at noordinalnotations
-    \@packinfo{No ordinal notations loading.}
-\else
-    \@packinfo{ordinal notations loading.}
-
-\providecommand*{\wck}{\ensuremath{\omega^{\mathrm{CK}}_1}}
-  % \newcommand*{\ordtype}[1]{\ensuremath{\@recthy at 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 at parenarg\@PMG at undefined\let\@PMG at braketarg\@PMG at undefined\@kleeneObody}
-    % \newcommand*{\@kleeneObody}{\kleeneOSYM\ifdefined\@PMG at parenarg
-    % ^{\@PMG at parenarg}%
-    % \fi%
-    % \ifdefined\@PMG at braketarg
-    % _{\abs{\@PMG at braketarg}}%
-    % \fi}
-    % \WithSuffix\def\@kleeneObody(#1){\def\@PMG at parenarg{#1}\@kleeneObody}
-    % \WithSuffix\def\@kleeneObody[#1]{\def\@PMG at 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 at VdashStar}{{\Vdash\smash{\mkern-12mu\raise4\p@\hbox{\text{\tiny*}}}\mkern2mu}}
-
-% Forcing
-\AtEndOfPackage{
-\ifrecthy at noforcing
-    \@packinfo{No forcing loading.}
-\else
-    \@packinfo{forcing loading.}
-    \providecommand*{\forces}{\def\@PMG at frcparenarg{}\def\@PMG at frcbraketarg{}\def\@PMG at curfrcsym{\Vdash}\@forcesBody}
-    \newcommand*{\@forcesBody}{\mathrel{{\@PMG at curfrcsym}^{\@PMG at frcparenarg}_{\@PMG at frcbraketarg}}}
-    \WithSuffix\def\@forcesBody(#1){\def\@PMG at frcparenarg{#1}\@forcesBody}
-    \WithSuffix\def\@forcesBody[#1]{\def\@PMG at frcbraketarg{#1}\@forcesBody}
-    \WithSuffix\def\@forcesBody*{\let\@PMG at curfrcsym=\@PMG at VdashStar\@forcesBody}
-
-    % \long\def\forces@[#1][#2]{\Vdash^{#2}_{#1}}
-    % \newcommand{\forces}{\optparams{\forces@}{[][]}%
-    % }
-    \providecommand*{\frc}{\forces}
-\fi
-}
-
-
 %%%%%%%%% Formula Classes
 
-\newcommand*{\@recthy at CDelta@default}{\prescript{\mathcal{C}}{}{\Delta}}
-\newcommand*{\@recthy at CSigma@default}{\prescript{\mathcal{C}}{}{\Sigma}}
-\newcommand*{\@recthy at CPi@default}{\prescript{\mathcal{C}}{}{\Pi}}
-\let\@recthy at CDelta=\@recthy at CDelta@default
-\let\@recthy at CSigma=\@recthy at CSigma@default
-\let\@recthy at CPi=\@recthy at CPi@default
 
-\DeclareOptionX{cdeltasym}[@recthy at CDelta@default]{\letcs{\@recthy at CDelta}{#1}}
-\DeclareOptionX{csigmasym}[@recthy at CSigma@default]{\letcs{\@recthy at CSigma}{#1}}
-\DeclareOptionX{cpisym}[@recthy at CPi@default]{\letcs{\@recthy at CPi}{#1}}
 
-% \DeclareOptionX<\@recthy at family>{cdeltasym}[]{\def\@recthy at CDelta{#1}}
-% \DeclareOptionX<\@recthy at family>{csigmasym}[]{\def\@recthy at CSigma{#1}}
-% \DeclareOptionX<\@recthy at family>{cpisym}[]{\def\@recthy at CPi{#1}}
 
-\AtEndOfPackage{
 \ifrecthy at nosyntax
     \@packinfo{No syntax loading.}
 \else
@@ -1613,23 +1601,225 @@
 
 
 \fi
-}
 
 
-\def\@recthy at recfSYM@default{\phi}
-\let\@recthy at recfSYM=\@recthy at recfSYM@default
-\def\@recthy at recfnlSYM@default{\Phi}
-\let\@recthy at recfnlSYM=\@recthy at recfnlSYM@default
-\def\@recthy at useSYM@default{\ltx at ifpackageloaded{unicode-math}{\symbffrak{u}}{\mathfrak{u}}}
-\let\@recthy at useSYM=\@recthy at useSYM@default
+
+
+
+\ifrecthy at 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 at 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 at nosetrels
+    \@packinfo{No setrels loading.}
+\else
+    \@packinfo{setrels loading.}
+    \AtBeginDocument{
+        \providecommand*{\nsupset}{\not\supset at recthy@orig}
+        \providecommand*{\nsubset}{\not\subset at recthy@orig}
+        \let\nsubset at recthy@orig=\nsubset
+        \let\nsupset at recthy@orig=\nsupset
+        \let\subset at recthy@orig=\subset
+        \let\supset at recthy@orig=\supset
+        \let\subseteq at recthy@orig=\subseteq
+        \let\supseteq at recthy@orig=\supseteq
+        \let\subsetneq at recthy@orig=\subsetneq
+        \let\supsetneq at recthy@orig=\supsetneq
+    }
+        \newcommand*{\subset at recthy}{\subset at recthy@orig}
+        \newcommand*{\supset at recthy}{\supset at recthy@orig}
+        \newcommand*{\subseteq at recthy}{\subseteq at recthy@orig}
+        \newcommand*{\supseteq at recthy}{\supseteq at recthy@orig}
+        \newcommand*{\nsubset at recthy}{\nsubset at recthy@orig}
+        \newcommand*{\nsupset at recthy}{\nsupset at recthy@orig}
+        \newcommand*{\nsubseteq at recthy}{\nsubseteq at recthy@orig}
+        \newcommand*{\nsupseteq at recthy}{\nsupseteq at recthy@orig}
+        \WithSuffix\def\subset at recthy*{\subset at recthy@orig^{*}}
+        \WithSuffix\def\supset at recthy*{\supset at recthy@orig^{*}}
+        \WithSuffix\def\subseteq at recthy*{\subseteq at recthy@orig^{*}}
+        \WithSuffix\def\supseteq at recthy*{\supseteq at recthy@orig^{*}}
+        \WithSuffix\def\subsetneq at recthy*{\subsetneq at recthy@orig^{*}}
+        \WithSuffix\def\supsetneq at recthy*{\supsetneq at recthy@orig^{*}}
+        \WithSuffix\def\nsubset at recthy*{\nsubset^{*}}
+        \WithSuffix\def\nsupset at recthy*{\nsupset^{*}}
+        \WithSuffix\def\nsubseteq at recthy*{\nsubseteq^{*}}
+        \WithSuffix\def\nsupseteq at recthy*{\nsupseteq^{*}}
+        \AtBeginDocument{
+          \let\subset=\subset at recthy
+          \let\supset=\supset at recthy
+          \let\subseteq=\subseteq at recthy
+          \let\supseteq=\supseteq at recthy
+          \let\subsetneq=\subsetneq at recthy
+          \let\supsetneq=\supsetneq at recthy
+          \let\nsubset=\nsubset at recthy
+          \let\nsupset=\nsupset at recthy
+          \let\nsubseteq=\nsubseteq at recthy
+          \let\nsupseteq=\nsupseteq at 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 at noordinalnotations
+    \@packinfo{No ordinal notations loading.}
+\else
+    \@packinfo{ordinal notations loading.}
+
+\providecommand*{\wck}{\ensuremath{\omega^{\mathrm{CK}}_1}}
+  % \newcommand*{\ordtype}[1]{\ensuremath{\@recthy at 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 at parenarg\@PMG at undefined\let\@PMG at braketarg\@PMG at undefined\@kleeneObody}
+    % \newcommand*{\@kleeneObody}{\kleeneOSYM\ifdefined\@PMG at parenarg
+    % ^{\@PMG at parenarg}%
+    % \fi%
+    % \ifdefined\@PMG at braketarg
+    % _{\abs{\@PMG at braketarg}}%
+    % \fi}
+    % \WithSuffix\def\@kleeneObody(#1){\def\@PMG at parenarg{#1}\@kleeneObody}
+    % \WithSuffix\def\@kleeneObody[#1]{\def\@PMG at 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 at VdashStar}{{\Vdash\smash{\mkern-12mu\raise4\p@\hbox{\text{\tiny*}}}\mkern2mu}}
+
+% Forcing
+\ifrecthy at noforcing
+    \@packinfo{No forcing loading.}
+\else
+    \@packinfo{forcing loading.}
+    \providecommand*{\forces}{\def\@PMG at frcparenarg{}\def\@PMG at frcbraketarg{}\def\@PMG at curfrcsym{\Vdash}\@forcesBody}
+    \newcommand*{\@forcesBody}{\mathrel{{\@PMG at curfrcsym}^{\@PMG at frcparenarg}_{\@PMG at frcbraketarg}}}
+    \WithSuffix\def\@forcesBody(#1){\def\@PMG at frcparenarg{#1}\@forcesBody}
+    \WithSuffix\def\@forcesBody[#1]{\def\@PMG at frcbraketarg{#1}\@forcesBody}
+    \WithSuffix\def\@forcesBody*{\let\@PMG at curfrcsym=\@PMG at VdashStar\@forcesBody}
+
+    % \long\def\forces@[#1][#2]{\Vdash^{#2}_{#1}}
+    % \newcommand{\forces}{\optparams{\forces@}{[][]}%
+    % }
+    \providecommand*{\frc}{\forces}
+\fi
+
+
+
+
 %%%ABREVIATIONS
-\DeclareOptionX{recfnlsym}[@recthy at recfnlSYM@default]{\letcs{\@recthy at recfnlSYM}{#1}}
-\DeclareOptionX{recfsym}[@recthy at recfSYM@default]{\letcs{\@recthy at recfSYM}{#1}}
-\DeclareOptionX{usesym}[@recthy at useSYM@default]{\letcs{\@recthy at useSYM}{#1}}
 
 
 %Degree Classes
-\AtEndOfPackage{
 \ifrecthy at 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 at 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 at improved}{omm!g!d()}{{
+    \NewDocumentCommand{\recfnl at improved}{oD(){}m!G{#2}!g!d()}{{
       \def\temp at pmg@arg{}
+      \IfValueTF{#5}{\ifthenelse{\isempty{#5}}{}{\def\temp at pmg@arg{; #5}}}{\IfValueTF{#6}{\ifthenelse{\isempty{#6}}{}{\def\temp at pmg@arg{; #6}}}}
+        \@recthy at recfnlSYM_{#3\IfValueT{#1}{, #1}}\ifthenelse{\isempty{#4}}{}{\!\left(#4\temp at pmg@arg \right)}
+    }}
+
+    \NewDocumentCommand{\recfnl at threeSix}{omm!g!d()}{{
+      \def\temp at pmg@arg{}
       \IfValueTF{#4}{\ifthenelse{\isempty{#4}}{}{\def\temp at pmg@arg{; #4}}}{\IfValueTF{#5}{\ifthenelse{\isempty{#5}}{}{\def\temp at pmg@arg{; #5}}}}
         \@recthy at recfnlSYM_{#2\IfValueT{#1}{, #1}}\ifthenelse{\isempty{#3}}{}{\!\left(#3\temp at pmg@arg \right)}
     }}
-    \newcommand*{\recfnl at old}[4][]{\@recthy at recfnlSYM_{#2\ifthenelse{\isempty{#1}}{}{,{#1}} }%
+    \newcommand*{\recfnl at threeFive}[4][]{\@recthy at recfnlSYM_{#2\ifthenelse{\isempty{#1}}{}{,{#1}} }%
         \ifthenelse{\isempty{#4}}%
         {\ifthenelse{\isempty{#3}}%
             {}% No args then print no parents
@@ -1668,8 +1864,11 @@
     }}
     \let\recfnl=\recfnl at improved
     \appto{\recthy at rollback@threeSix}{
-      \let\recfnl=\recfnl at old
+      \let\recfnl=\recfnl at threeFive
     }
+    \appto{\recthy at rollback@threeSeven}{
+      \let\recfnl=\recfnl at threeSix
+    }
     \NewDocumentCommand{\recf}{od()md()}{
         \@recthy at 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 at parenarg\@PMG at undefined\let\@PMG at braketarg\@PMG at undefined\@REsetbody}
-    \newcommand*{\@REsetbody}[1]{W\ifdefined\@PMG at parenarg
-    ^{\@PMG at parenarg}%
-    \fi%
-    \ifdefined\@PMG at braketarg
-    _{#1, {\@PMG at braketarg}}%
-    \else
-    _{#1}
-    \fi}
-    \WithSuffix\def\@REsetbody(#1){\def\@PMG at parenarg{#1}\@REsetbody}
-    \WithSuffix\def\@REsetbody[#1]{\def\@PMG at braketarg{#1}\@REsetbody}
+    \NewDocumentCommand{\REset}{D(){}oD(){#1}mD(){#3}}{{W_{#4\IfValueTF{#2}{, #2}{}}^{#5}}}
+    % \newcommand*{\REset}{\let\@PMG at parenarg\@PMG at undefined\let\@PMG at braketarg\@PMG at undefined\@REsetbody}
+    % \newcommand*{\@REsetbody}[1]{W\ifdefined\@PMG at parenarg
+    % ^{\@PMG at parenarg}%
+    % \fi%
+    % \ifdefined\@PMG at braketarg
+    % _{#1, {\@PMG at braketarg}}%
+    % \else
+    % _{#1}
+    % \fi}
+    % \WithSuffix\def\@REsetbody(#1){\def\@PMG at parenarg{#1}\@REsetbody}
+    % \WithSuffix\def\@REsetbody[#1]{\def\@PMG at 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}%
+        {\widehat{\mathcal{J}}}%
         {\mathcal{J}}%
-        {\widehat{\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 at 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 at rollback@threeTwo}{
         \let\reaop=\REAop
@@ -1855,92 +2058,37 @@
     \newcommand*{\ttngeq}{\ngeq_{\@recthy at ttSYM}}
 \fi
 
-}
 
+\ifrecthy at stepsenv
+  \@packinfo{Experimental steps code loaded.}
+  \newlist{pmg at steps}{enumerate}{4}
+  \setlist[pmg at steps,1]{label={Step \arabic*}, ref={\arabic*}, labelsep=1em}
+  \setlist[pmg at steps,2]{label={Step \arabic{pmg at stepsi}\alph*}, ref={\arabic{pmg at stepsi}\alph*}}
+  \setlist[pmg at steps,3]{label={Step \arabic{pmg at stepsi}\alph{pmg at stepsii}.\Roman*}, ref={\arabic{pmg at stepsi}\alph{pmg at stepsii}.\Roman*}}
+  \setlist[pmg at steps,4]{label={Step \arabic{pmg at stepsi}\alph{pmg at stepsii}.\Roman{pmg at stepsiii}\Alph*}, ref={\arabic{pmg at stepsi}\alph{pmg at stepsii}.\Roman{pmg at stepsiii}\Alph*}}
+  \crefname{pmg at stepsi}{step}{steps}
+  \Crefname{pmg at stepsi}{Step}{Steps}
+  \crefname{pmg at stepsii}{step}{steps}
+  \Crefname{pmg at stepsii}{Step}{Steps}
+  \crefname{pmg at stepsiii}{step}{steps}
+  \Crefname{pmg at stepsiii}{Step}{Steps}
+  \crefname{pmg at stepsiiii}{step}{steps}
+  \Crefname{pmg at stepsiiii}{Step}{Steps}
+  \NewDocumentEnvironment{steps}{o}{
+      \begingroup
+      \ProvideDocumentCommand{\step}{o}{\IfValueTF{##1}{\item\textbf{##1}:}{\item}}
+      \IfValueTF{#1}{\begin{pmg at steps}[#1]}{\begin{pmg at steps}}%
+  }{%
+      \end{pmg at steps}%
+      \endgroup\ignorespacesafterend%
+      }
 
-%Strings
-  \def\@recthy at concatSYM@Default{\widehat{\phantom{X}}}
-  \def\@recthy at EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
-  \let\@recthy at concatSYM\@recthy at concatSYM@Default
-  \let\@recthy at EmptyStr\@recthy at EmptyStr@Default
 
-  \DeclareOptionX{emptystr}[@recthy at EmptyStr@Default]{\letcs{\@recthy at EmptyStr}{#1}}
-  \DeclareOptionX{concatsym}[@recthy at concatSYM@Default]{\letcs{\@recthy at concatSYM}{#1}}
-  \newcommand*{\@recthy at pair}[2]{\mathopen{\langle} #1, #2 \mathclose{\rangle}}
-  \newcommand*{\@recthy at str}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
-  \newcommand*{\@recthy at code}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
-
-  \appto{\recthy at rollback@threeSix}{
-    \renewcommand*{\@recthy at pair}[2]{\mathopen{\@recthy at llangle} #1, #2 \mathclose{\@recthy at rrangle}}
-    \def\@recthy at EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
-    % \renewcommand*{\@recthy at str}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
-    \renewcommand*{\@recthy at code}[1]{\mathopen{\@recthy at llangle}#1\mathclose{\@recthy at rrangle}}
-    \newcommand*{\closedn}[1]{{#1}^\blacktriangledown}
-    }
-
-% \ProcessOptions*
-% \ProcessOptionsX<\@recthy at family>
-\ProcessOptionsX
-
-
-
-
-\NewDocumentCommand{\incompat at recthy}{o}{\mathrel{\mid}\IfValueTF{#1}{_{#1}}{}}
-\NewDocumentCommand{\compat at recthy}{o}{\mathrel{\not\mid}\IfValueTF{#1}{_{#1}}{}}
-
-\ifrecthy at 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 at code
-    \let\str=\@recthy at str
-    \newcommand*{\EmptyStr}{\@recthy at EmptyStr}
-    \newcommand*{\estr}{\EmptyStr}
-    \newcommand*{\decode}[2]{(#1)_{#2}}
-    \let\godelpair=\@recthy at pair
-    \let\gpair=\@recthy at pair
-    \newcommand*{\concat}{\@recthy at concatSYM}
-    \WithSuffix\def\concat[#1]{\concat\str{#1}}
-    \newcommand*{\strpred}[1]{{#1}^{-}}
-    \providecommand*{\lh}[2][]{\@recthy at abs{#2}_{#1}} %% Gives length of a string
-
-    \providecommand*{\incompat}{\incompat at recthy} %incompatible stringes FIX SPACING
-    \providecommand*{\incomp}{\incompat at recthy}
-    \providecommand*{\compat}{\compat at recthy}
-    \providecommand*{\nincompat}{\compat at recthy}
-    \providecommand*{\nincomp}{\compat at 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 at nopair
-        \@packinfo{No redefining pair.}
-    \else
-        \@packinfo{pair=godelpair.}
-        \let\pair=\@recthy at pair
-    \fi
+    \@packinfo{No steps}
 \fi
 
-
-
-



More information about the tex-live-commits mailing list.