summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-10-03 23:10:26 +0000
committerKarl Berry <karl@freefriends.org>2008-10-03 23:10:26 +0000
commit425881b562f2bbf12c3d8fd24db155db11aabad1 (patch)
tree82877c7926229cc2d483a2379134ccb111d42876
parent9993ebd073ee23f1d055fd398b472deaeb147f5b (diff)
split out gene-logic, cfrees 3 Oct 2008 00:10:49
git-svn-id: svn://tug.org/texlive/trunk@10847 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/gene-logic/gn-logic14.pdfbin0 -> 92535 bytes
-rw-r--r--Master/texmf-dist/doc/latex/gene-logic/gn-logic14.tex394
-rw-r--r--Master/texmf-dist/tex/latex/gene-logic/gn-logic14.sty119
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-science.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/gene-logic.tlpsrc2
6 files changed, 517 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/gene-logic/gn-logic14.pdf b/Master/texmf-dist/doc/latex/gene-logic/gn-logic14.pdf
new file mode 100644
index 00000000000..cbca95f1c18
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/gene-logic/gn-logic14.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/gene-logic/gn-logic14.tex b/Master/texmf-dist/doc/latex/gene-logic/gn-logic14.tex
new file mode 100644
index 00000000000..1ad9ff0e158
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/gene-logic/gn-logic14.tex
@@ -0,0 +1,394 @@
+%*****************************************************************************/
+%* */
+%* Version: 1.00 Date: 21/04/92 File: gn-logic14.tex */
+%* Last Version: File: */
+%* Changes: */
+%* 30/12/90 First version of documentation. */
+%* 21/04/92 new properties */
+%* */
+%* Title: */
+%* Author: Gerd Neugebauer */
+%* */
+%* Usage: latex gn-logic14.tex */
+%* */
+%*****************************************************************************/
+
+\documentstyle[11pt,dina4,gn-logic14]{article}
+
+\setlength{\unitlength}{1pt}
+
+
+\begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newlength{\Width} \Width=\textwidth \advance\Width by -1.5em \divide\Width by 2
+
+\section{The {\tt gn-logic} style option}
+Description of Version 1.4 (5/95) by Gerd Neugebauer \bigskip
+
+The {\tt gn-logic} style option provides a facility to typeset logical
+formulas of a certain kind. This style option provides an environment like
+\verb|eqnarray|, an extended {\tt newtheorem} environment and several macros.
+
+
+
+\subsection{Mathematical Symbols}
+
+The following marcos provide better usage of the junctors and quantifiers.
+Especially the spacing is improved.
+
+
+\noindent\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*{4}{l}}
+\multicolumn{1}{c}{\small Symbol}
+ & \multicolumn{1}{c}{\small Macro}
+ & \multicolumn{2}{c}{\small Example} \\
+ & & & \\
+$\AND$ & \verb|\AND| & \verb$A\AND B$ & $A\AND B$ \\
+$\OR$ & \verb|\OR| & \verb$A\OR B$ & $A\OR B$ \\
+$\XOR$ & \verb|\XOR| & \verb$A\XOR B$ & $A\XOR B$ \\
+$\IMPLIES$ & \verb|\IMPLIES| & \verb$A\IMPLIES B$ & $A\IMPLIES B$ \\
+$\IMPL$ & \verb|\IMPL| & \verb$A\IMPL B$ & $A\IMPL B$ \\
+$\IF$ & \verb|\IF| & \verb$A\IF B$ & $A\IF B$ \\
+$\IFF$ & \verb|\IFF| & \verb$A\IFF B$ & $A\IFF B$ \\
+$\IFFdef$ & \verb|\IFFdef| & \verb$A\IFFdef B$ & $A\IFFdef B$ \\
+$\ANDdots$ & \verb|\ANDdots| & \verb$A_1\ANDdots A_n$ & $A_1\ANDdots A_n$ \\
+$\ORdots$ & \verb|\ORdots| & \verb$A_1\ORdots A_n$ & $A_1\ORdots A_n$ \\
+$\is$ & \verb|\is| & \verb$x\is y$ & $x\is y$ \\
+$\Nat$ & \verb|\Nat| & \verb$n\in\Nat$ & $n\in\Nat$ \\
+$\Forall$ & \verb|\Forall| & \verb$\Forall x P(x)$ & $\Forall x P(x)$ \\
+$\Exists$ & \verb|\Exists| & \verb$\Exists y P(x)$ & $\Exists y P(x)$ \\
+\end{tabular*}
+
+
+\newcommand{\bs}{{\tt\char"5C}}
+\newcommand{\mac}[1]{The {\tt\char92 #1} Macro}
+\newcommand{\macs}[2]{The {\tt\char92 #1} and the {\tt\char92 #2} Macros}
+\newenvironment{compare}%
+{\noindent\begin{center}%
+ \begin{tabular}{@{}l@{\hspace*{1.5em}produces\hspace*{1.5em}}l@{}}}%
+{\end{tabular}\end{center}}
+
+\subsubsection*{\mac{AND}}
+This macro can be used for the logical conjunction. In addition to the
+\verb|\wedge| macro it adds more space and the formulas tend to be better
+readable. Compare
+
+\begin{compare}
+\verb$x=1\AND y=x$ & $x=1\AND y=x$ \\
+\verb$x=1\wedge y=x$ & $x=1\wedge y=x$ \\
+\verb$x=1\land y=x$ & $x=1\land y=x$
+\end{compare}
+
+\subsubsection*{\mac{OR}}
+This macro can be used for the logical disjunction. In addition to the
+\verb|\vee| macro it adds more space. Compare
+
+\begin{compare}
+\verb$x=1\OR y=x$ & $x=1\OR y=x$ \\
+\verb$x=1\vee y=x$ & $x=1\vee y=x$ \\
+\verb$x=1\lor y=x$ & $x=1\lor y=x$
+\end{compare}
+
+
+\subsubsection*{\mac{XOR}}
+This macro can be used for the exclusive disjunction. It has no common
+counterpart. The spacing is like in in all junctor macros.
+
+\begin{compare}
+\verb$x=1\XOR y=x$ & $x=1\XOR y=x$
+\end{compare}
+
+
+\subsubsection*{\macs{IMPL}{IMPLIES}}
+These macros can be used for the logical implication. In addition to the
+\verb|\rightarrow| macro it adds more space. Compare
+
+\begin{compare}
+\verb$x=1\IMPL y=x$ & $x=1\IMPL y=x$ \\
+\verb$x=1\IMPLIES y=x$ & $x=1\IMPLIES y=x$ \\
+\verb$x=1\rightarrow y=x$ & $x=1\rightarrow y=x$
+\end{compare}
+
+
+\subsubsection*{\mac{IF}}
+ This macro can be used for the logical implication written in reverse order.
+In addition to the \verb|\leftarrow| macro it adds more space. Compare
+
+\begin{compare}
+\verb$x=1\IF y=x$ & $x=1\IF y=x$ \\
+\verb$x=1\lefttarrow y=x$ & $x=1\leftarrow y=x$
+\end{compare}
+
+\subsubsection*{\mac{IFF}}
+ This macro can be used for the logical equivalence.
+In addition to the \verb|\leftrightarrow| macro it adds more space. Compare
+
+\begin{compare}
+\verb$x=1\IFF y=x$ & $x=1\IFF y=x$ \\
+\verb$x=1\leftrighttarrow y=x$ & $x=1\leftrightarrow y=x$
+\end{compare}
+
+\subsubsection*{\mac{IFFdef}}
+ Like above but with a small ``def'' above the arrow.
+
+\begin{compare}
+\verb$x=1\IFFdef y=x$ & $x=1\IFFdef y=x$
+\end{compare}
+
+\subsubsection*{\mac{is}}
+ This macro is for typesetting unifiers. In this case the predefined
+\verb|\setminus| produces to much space.
+
+\begin{compare}
+\verb$\{y\setminus x, z\setminus 4\}$ & $\{y\setminus x, z\setminus 4\}$ \\
+\verb$\{y\is x, z\is 4\}$ & $\{y\is x, z\is 4\}$ \\
+\verb$\{y\backslash x, z\backslash 4P}$ & $\{y\backslash x, z\backslash 4\}$
+\end{compare}
+
+\ifx\AmSTeX\undefined
+\def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox
+ {$\cal M$}\kern-.125em$\cal S$-\kern-.1em\TeX}
+\fi
+
+\subsubsection*{The Number Macros}
+This are macros for those who have no access to the \AmSTeX{} fonts. It makes
+the symbols for the natural numbers, integers, rationals, reals and complex
+numbers. The usual magnification commands apply to it aswell.
+
+
+\def\BB#1{\csname bb#1\endcsname}
+\def\Line#1{\LINE{#1}\(\BB{#1}_{\BB{#1}}\)}
+\def\LINE#1{{\tt \char92bb#1}&%
+ {\tiny\BB{#1}}&%
+ {\scriptsize\BB{#1}}&%
+ {\footnotesize\BB{#1}}&%
+ {\small\BB{#1}}&%
+ {\normalsize\BB{#1}}&%
+ {\large\BB{#1}}&%
+ {\Large\BB{#1}}&%
+ {\LARGE\BB{#1}}&%
+ {\huge\BB{#1}}&%
+ {\Huge\BB{#1}}&%
+ }
+\begin{center}
+ \begin{tabular}{c|cccccccccc|c}
+ &\multicolumn{10}{|c|}{{\tt \char92tiny \hfill...\hfill\char92normalsize \hfill...\hfill\char92Huge}}&\verb|X_X|
+ \\\hline
+ \Line B\\
+ \verb|\Complex|\Line C\\
+ \Line D\\
+ \Line E\\
+ \Line F\\
+ \Line G\\
+ \Line H\\
+ \Line I\\
+ \Line J\\
+ \Line K\\
+ \Line L\\
+ \Line M\\
+ \verb|\Nat| \Line N\\
+ \Line O\\
+ \Line P\\
+ \verb|\Rat| \Line Q\\
+ \verb|\Real| \Line R\\
+ \verb|\Int| \Line Z\\
+ \Line{One}
+ \end{tabular}
+\end{center}
+
+Unfortunately the macros \verb|\bbC|, \verb|\bbG|, \verb|\bbO|, and
+\verb|\bbQ| do not scale properly when used in subscripts or superscripts of
+formulae. The following examples shows how the sizing can be achieved manually
+
+\noindent\begin{compare}
+\verb$\bbQ_{\mbox{\scriptsize \bbQ}}$ & $\bbQ_{\mbox{\scriptsize \bbQ}}$
+\end{compare}
+
+
+
+\subsubsection*{\macs{Forall}{Exists}}
+ The general problem with quantifies is that after the quantified variable the
+following formula is not automatically seperated with a small space. This can
+be overcome by the following macros.
+
+The \verb|\Forall| and the \verb|\Exists| macros take one argument. They
+typeset the respective quantifier followed by the argument (i.e.\ the variable)
+and finally a small space. As usual the argument has to be enclosed in braces
+if it consists of more than one character. Otherwise the braces can be omitted.
+This allows a elegant notation of short quantified formulas.
+
+\noindent\begin{compare}
+\verb$\Forall x P(x)$ & $\Forall x P(x)$\\
+\verb$\Forall{x_1,\ldots,x_n}P(x_1,\ldots,x_n)$%
+&$\Forall{x_1,\ldots,x_n}P(x_1,\ldots,x_n)$\\
+\verb$\Exists x P(x)$ & $\Exists x P(x)$\\
+\verb$\Exists{x_1,\ldots,x_n}P(x_1,\ldots,x_n)$%
+& $\Exists{x_1,\ldots,x_n}P(x_1,\ldots,x_n)$
+\end{compare}
+
+
+
+\subsection{The {\tt Formula} Environment}
+
+This environment allows to typeset logical formulas. The main problem with the
+\verb|eqnarray| environment was the numbering. In multiline formulas my
+intention was to have the number in the middle of the formula. Inside this
+environment several macros are valid.
+
+\begin{description}
+ \item[{\tt\bs begin\{Formula\}[{\em label}] \bs end\{Formula\}}] \ \\
+ Start the list of formulas. Optionally a label can be given. This label
+ is used to reference the first formula.
+ \item[{\tt\bs =}] \ \\
+ Start a new line.
+ \item[{\tt\bs >}{\em level}] \ \\
+ Start a new line and indent to the given {\em level}. This indentation
+ is done in quantities of \verb|\FormulaIndent| which can be set with
+ the \verb|\setlength| command. The default value is {\tt 3em}.
+ \item[{\tt\bs Form[{\em label}]}] \ \\
+ Start a new formula. Optionally a {\em label} can be given. This {\em
+ label} can be used to reference to the formula (see \verb|\ref|).
+\end{description}
+
+Now lets have a look at some examples. First, we see a single two-line formula.
+Note that the number at the right side is centered between the two lines.
+\medskip
+
+\noindent
+\begin{minipage}{\Width}
+\small\begin{verbatim}
+\begin{Formula}
+ P(X) \IMPL
+\= Q(X) \IFF R_1(X) \OR R_2(X)
+\end{Formula}
+\end{verbatim}
+\end{minipage}
+\hfill
+\begin{minipage}{\Width}
+\begin{Formula}
+ P(X) \IMPL
+\= Q(X) \IFF R_1(X) \OR R_2(X)
+\end{Formula}
+\end{minipage}\medskip
+
+Next we will see an example of several formulas. The first formula is split to
+three lines and the third line is indented to level 1. Remark: \verb|\=| is in
+reality an abbrevation for \verb|\>0|.
+\medskip
+
+\noindent
+\begin{minipage}{\Width}
+\small\begin{verbatim}
+\begin{Formula}[form:1]
+ P(X) \IMPL
+\= Q(X) \IFF R_1(X)
+\>1 \OR R_2(X)
+\Form[form:2]
+ S(X) \IMPL
+\= \neg Q(X) \IFF R_1(X) \OR R_2(X)
+\end{Formula}
+\end{verbatim}
+\end{minipage}
+\hfill
+\begin{minipage}{\Width}
+\begin{Formula}[form:1]
+ P(X) \IMPL
+\= Q(X) \IFF R_1(X)
+\>1 \OR R_2(X)
+\Form[form:2]
+ S(X) \IMPL
+\= \neg Q(X) \IFF R_1(X) \OR R_2(X)
+\end{Formula}
+\end{minipage}\medskip
+
+
+\subsection{The {\tt NewTheorem} Environment}
+
+My experience with the {\tt newtheorem} environment was that I had a certain
+scheme to use it. First, every theorem got a label. Thus, every {\em theorem}
+was followed by a {\tt label} command. Optionally a {\em theorem} may have a
+name. This name is typeset right after the number. The body of the {\em
+ theorem} allways started in the next line. This let to the definition of an
+extended {\tt NewTheorem} environment. The arguments are the same as those of
+the {\tt newtheorem} environment. But the environment defined by this extended
+command take two optional arguments. The first optional argument is a label to
+be assigned to the {\em theorem}. This argument has to be enclosed in
+parentheses. The second type of optional argument has to be enclosed in
+brakets. It is typeset in \verb|\small| after the title text. The third
+optional argument is enclosed in \verb|<>|. It is typeset in \verb|\small\bf|
+and surrounded by parentheses.
+\medskip
+
+\noindent\begin{minipage}{\Width}
+\small\begin{verbatim}
+
+\NewTheorem{guess}{Conjecture}
+
+\begin{guess}[Fermat](thm:fermat)
+ There do not exist integers $n>2$,
+ $x$, $y$, and $z$ such that
+ $x^n+y^n=z^n$.
+\end{guess}
+\end{verbatim}
+\end{minipage}
+\hfill
+\begin{minipage}{\Width}
+\NewTheorem{guess}{Conjecture}
+
+\begin{guess}[Fermat](thm:fermat)
+ There do not exist integers $n>2$,
+ $x$, $y$, and $z$ such that
+ $x^n+y^n=z^n$.
+\end{guess}
+\end{minipage}
+\medskip
+
+The commands used to typeset some of the optional argument can be customized
+in the following way. The macros \verb|\TheoremTitle| and \verb|\TheoremName|
+are used to typeset their argument in \verb|\small| and \verb|\small\bf| and
+enclosed in parentheses respectively. This macros can be redefined using
+\verb|\renewcommand| as shown in the following example:
+\medskip
+
+\noindent\begin{minipage}{\Width}
+\footnotesize\begin{verbatim}
+\NewTheorem{theorem}{Theorem}
+\renewcommand{\TheoremTitle}[1]{{\sf [#1]}}
+\renewcommand{\TheoremName}[1]{{\small(#1)}}
+\begin{theorem}[Fermat]<conjecture>(thm:f2)
+ There do not exist integers ...
+\end{theorem}
+\end{verbatim}
+\end{minipage}
+\hfill
+\begin{minipage}{\Width}
+\NewTheorem{theorem}{Theorem}
+\renewcommand{\TheoremTitle}[1]{{\sf #1}}
+\renewcommand{\TheoremName}[1]{{\small(#1)}}
+\begin{theorem}[Fermat]<conjecture>(thm:f2)
+ There do not exist integers $n>2$,
+ $x$, $y$, and $z$ such that
+ $x^n+y^n=z^n$.
+\end{theorem}
+\end{minipage}
+
+\end{document}
+
+
+
+\newcommand{\ENTRY}[1]{{#1 \Nat}& {#1 \Int}& {#1 \Rat}&{#1 \Real}& {#1 \Complex}}
+
+\begin{center}
+\begin{tabular}{l|ccccc}
+&\verb|\Nat|&\verb|\Int|&\verb|\Rat|&\verb|\Real|&\verb|\Complex|\\
+&&\\\hline&&\\
+\verb$\tiny$ & \ENTRY{\tiny} \\
+\verb$\scriptsize$ & \ENTRY{\scriptsize} \\
+\verb$\footnotesize$ & \ENTRY{\footnotesize} \\
+\verb$\small$ & \ENTRY{\small} \\
+\verb$\normalsize$ & \ENTRY{\normalsize} \\
+\verb$\large$ & \ENTRY{\large} \\
+\verb$\Large$ & \ENTRY{\Large} \\
+\verb$\LARGE$ & \ENTRY{\LARGE} \\
+\verb$\huge$ & \ENTRY{\huge} \\
+\verb$\Huge$ & \ENTRY{\Huge}
+\end{tabular}\end{center}
diff --git a/Master/texmf-dist/tex/latex/gene-logic/gn-logic14.sty b/Master/texmf-dist/tex/latex/gene-logic/gn-logic14.sty
new file mode 100644
index 00000000000..ae023304c55
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gene-logic/gn-logic14.sty
@@ -0,0 +1,119 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+ Logic Formula Environments and Macros. Version 1.4 gene 5/95
+%
+% Purpose:
+% Style option for LaTeX2e and LaTeX 2.09 to typeset formulas.
+%
+% Documentation: see seperate LaTeX document `gn-logic14.tex'
+%
+% Author: Gerd Neugebauer
+% \"Odenburger Str. 16
+% 64295 Darmstadt (Germany)
+% Mail: gerd@imn.th-leipzig.de
+%
+% Copyright (C) 1995 Gerd Neugebauer
+%
+% gn-logic.sty is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY. No author or distributor
+% accepts responsibility to anyone for the consequences of using it
+% or for whether it serves any particular purpose or works at all,
+% unless he says so in writing.
+%
+% Everyone is granted permission to copy, modify and redistribute
+% gn-logic.sty, provided this copyright notice is preserved and any
+% modifications are indicated.
+%
+%
+% This style is still under development and may be replaced with a new
+% version which provides an enhanced functionality.
+% Any comments are welcome but don't expect ANY help from my side.
+%
+}
+
+%%%----------------------------------------------------------------------------
+%%% Several useful abbrevations
+%%%
+\def\AND { \,\wedge\, }
+\def\OR { \,\vee\, }
+\def\XOR { \,\stackrel{.}{\vee}\, }
+\def\IMPLIES { \,\rightarrow\, }
+\def\IMPL { \,\rightarrow\, }
+\def\IF { \,\leftarrow\, }
+\def\IFF { \,\leftrightarrow\, }
+\def\IFFdef { \,\stackrel{\rm def}{\longleftrightarrow}\, }
+
+\def\ANDdots { \,\wedge\!\ldots\!\wedge\, }
+\def\ORdots { \,\vee\!\ldots\!\vee\, }
+
+\def\is { \!\setminus\! }
+\def\Forall#1{ \forall #1\ }
+\def\Exists#1{ \exists #1\ }
+
+\def\bbOne{\ifmmode\mathrm{1\!l}\else\mbox{\(\mathrm{1\!l}\)}\fi}
+\def\bbB{\ifmmode\mathrm{I\!B}\else\mbox{\(\mathrm{I\!B}\)}\fi}
+\def\bbD{\ifmmode\mathrm{I\!D}\else\mbox{\(\mathrm{I\!D}\)}\fi}
+\def\bbE{\ifmmode\mathrm{I\!E}\else\mbox{\(\mathrm{I\!E}\)}\fi}
+\def\bbF{\ifmmode\mathrm{I\!F}\else\mbox{\(\mathrm{I\!F}\)}\fi}
+\def\bbH{\ifmmode\mathrm{I\!H}\else\mbox{\(\mathrm{I\!H}\)}\fi}
+\def\bbI{\ifmmode\mathrm{I\!I}\else\mbox{\(\mathrm{I\!I}\)}\fi}
+\def\bbJ{\ifmmode\mathrm{J\!\!J}\else\mbox{\(\mathrm{J\!\!J}\)}\fi}
+\def\bbK{\ifmmode\mathrm{I\!K}\else\mbox{\(\mathrm{I\!K}\)}\fi}
+\def\bbL{\ifmmode\mathrm{I\!L}\else\mbox{\(\mathrm{I\!L}\)}\fi}
+\def\bbN{\ifmmode\mathrm{I\!N}\else\mbox{\(\mathrm{I\!N}\)}\fi}
+\def\bbM{\ifmmode\mathrm{I\!M}\else\mbox{\(\mathrm{I\!M}\)}\fi}
+\def\bbP{\ifmmode\mathrm{I\!P}\else\mbox{\(\mathrm{I\!P}\)}\fi}
+\def\bbR{\ifmmode\mathrm{I\!R}\else\mbox{\(\mathrm{I\!R}\)}\fi}
+\def\bbZ{\ifmmode\mathsf{Z\;\!\!\!\!Z}\else\mbox{\(\mathsf{Z\;\!\!\!\!Z}\)}\fi}
+\let\N=\Nat
+\let\Nat=\bbN
+\let\Real=\bbR
+\let\Int=\bbZ
+%\def\Int{\mbox{\sf Z\hspace{-0.45em}Z}}
+\def\bbC{\mbox{\rm\hspace{0.2em}\rule[.1ex]{.05em}{1.37ex}\hspace{-0.27em}C}}
+\def\bbG{\mbox{\rm\hspace{0.2em}\rule[.1ex]{.05em}{1.37ex}\hspace{-0.27em}G}}
+\def\bbO{\mbox{\rm\hspace{0.2em}\rule[.1ex]{.05em}{1.37ex}\hspace{-0.27em}O}}
+\def\bbQ{\mbox{\rm\hspace{0.2em}\rule[.1ex]{.05em}{1.37ex}\hspace{-0.27em}Q}}
+\let\Complex=\bbC
+\let\Rat=\bbQ
+%%%----------------------------------------------------------------------------
+%%% The formula environment
+%%%
+
+\newlength\FormulaIndent \FormulaIndent=3em
+
+\def\Formula{\@ifnextchar[{\@Formula}{\@Formula[]}}
+
+\def\@FormLabel[#1]{\end{array}\\\label{#1}&&\begin{array}{l} }
+
+\def\@Formula[#1]{\begingroup\setlength{\arraycolsep}{0pt}%
+ \def\Form{\@ifnextchar[{\@FormLabel}{\end{array}\\&&\begin{array}{l} }}%
+ \def\={\\\hspace*{\FormulaIndent}}%
+ \def\>##1{\\\hspace*{\FormulaIndent}\hspace*{##1\FormulaIndent}}%
+ \penalty-500\eqnarray\ifx\@empty#1\else\label{#1}\fi&&\begin{array}{l} }
+
+\def\endFormula{\end{array}\endeqnarray\endgroup}
+
+
+%%%----------------------------------------------------------------------------
+%%% The NewTheorem environment
+%%%
+
+\def\TheoremTitle#1{{\small #1}}
+\def\TheoremName#1{{\small\bf (#1)}}
+
+\def\NewTheorem#1{
+ \expandafter\gdef\csname #1\endcsname{\csname THM#1\endcsname\@@theorem}
+ \expandafter\gdef\csname end#1\endcsname{\csname endTHM#1\endcsname}
+ \@ifnextchar[{\New@Theorem#1}{\expandafter\newtheorem{THM#1}}}
+
+\def\New@Theorem#1[{\expandafter\newtheorem{THM#1}[THM}
+
+\def\@@theorem{%
+\@ifnextchar[{\@@theorem@title}{\@ifnextchar({\@@theorem@label}{\@ifnextchar<{\@@theorem@name}{\ \nobreak\\\nobreak}}}}
+
+\def\@@theorem@label(#1){\label{#1}\@@theorem}
+\def\@@theorem@title[#1]{\ \TheoremTitle{#1}\@@theorem}
+\def\@@theorem@name<#1>{\ \TheoremName{#1}\@@theorem}
+
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index b6c6a849246..5161fedc8cb 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -99,7 +99,7 @@ my @WorkingTLP = qw(
fouridx fourier fouriernc
fp fpl frankenstein free-math-font-survey
frenchle fribrief frletter frontespizio fullblck fullpict functan
- gaceta galois gastex gatech-thesis gb4e gcard gcite
+ gaceta galois gastex gatech-thesis gb4e gcard gcite gene-logic
genmisc genmpage gentle germbib
gfsartemisia gfsbodoni gfscomplutum gfsdidot gfsneohellenic
gfsporson gfssolomos
diff --git a/Master/tlpkg/tlpsrc/collection-science.tlpsrc b/Master/tlpkg/tlpsrc/collection-science.tlpsrc
index ca511efd335..2d68b505df8 100644
--- a/Master/tlpkg/tlpsrc/collection-science.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-science.tlpsrc
@@ -25,6 +25,7 @@ depend fouridx
depend functan
depend galois
depend gastex
+depend gene-logic
depend gu
depend hep
depend hepnames
diff --git a/Master/tlpkg/tlpsrc/gene-logic.tlpsrc b/Master/tlpkg/tlpsrc/gene-logic.tlpsrc
new file mode 100644
index 00000000000..2552c7e5855
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/gene-logic.tlpsrc
@@ -0,0 +1,2 @@
+name gene-logic
+category Package