Logiweb(TM)

Logiweb body of ijcar in pyk

Up Help

"File page.tex
\documentstyle[url]{llncs}

\everymath{\rm}
\everydisplay{\rm}
\input{lgwinclude}

% Save current \parindent (used by e.g. pyk display ... end display)
\newlength{\docparindent}
\setlength{\docparindent}{\parindent}

\newcommand{\liberalUrlBreak}[1]{{%
\mathcode`\/="!262F%
\mathcode`\0="!2630%
\mathcode`\1="!2631%
\mathcode`\2="!2632%
\mathcode`\3="!2633%
\mathcode`\4="!2634%
\mathcode`\5="!2635%
\mathcode`\6="!2636%
\mathcode`\7="!2637%
\mathcode`\8="!2638%
\mathcode`\9="!2639%
\mathcode`\:="!263A%
\mathcode`\A="!2641%
\mathcode`\B="!2642%
\mathcode`\C="!2643%
\mathcode`\D="!2644%
\mathcode`\E="!2645%
\mathcode`\F="!2646%
%\thinmuskip=0mu%
\medmuskip=0mu plus 2mu minus 0mu%
%\thickmuskip=0mu%
%\def\thinspace{\kern 0em}%
$#1$}}

\let\oldmathbf=\mathbf
\renewcommand{\mathbf}[1]{{\oldmathbf #1}}
\let\oldmathit=\mathit
\renewcommand{\mathit}[1]{{\oldmathit #1}}
\let\oldmathsf=\mathsf
\renewcommand{\mathsf}[1]{{\oldmathsf #1}}

\begin {document}
\title {The Logiweb sequent calculus}
\author {Klaus Grue\inst{1}}
\institute {Department of Computer Science, University of Copenhagen (DIKU)}
\date {\today}
\maketitle

"

begin ragged right expansion

end "



\begin{abstract}
The `Logiweb sequent calculus' is suited for terse, human readable formulation of axioms, inference rules, theories, lemmas, and proofs. It supports different styles of theories like equational theories and FOL based theories. It permits to express arbitrary side conditions in the `Logiweb programming language'. As an example of use, the calculus allows to express the deduction rule as an inference rule which makes it easy to get started using a theory. The calculus has operations for `dereferencing' and `referencing' which allow to convert e.g.\ the name of a lemma into the contents of the lemma and vice versa. The calculus interacts smoothly with fully automatic tactics as well as proofs in which part of the work is done by a human author and part is done by proof tactics.
\end{abstract}



\section{Introduction}\label{sec:Introduction}

Logiweb \cite{grue04,grue05,base} is a system for electronic publication of logic. It allows authors different places in the world to define theories, state and prove lemmas, and to publish {\em Logiweb pages} that contain the results. The present paper is an example of a Logiweb page, and the present paper is correct in the sense that it has been verified by Logiweb.

Core Logiweb allows users to program proof systems in the {\em Logiweb programming language} and to publish the proof system. Users who use the same proof system and the same axiomatic theory may benefit from the results of each other in that a proof written by one author may make references across the internet to lemmas proved by another author. Cross theory cooperation (e.g.\ use of ZFC results in NBG) could be more cumbersome and cross proof system cooperation even more so, depending on the theories and systems involved.

The present paper introduces {\em Logiweb sequent calculus} which allows users to express arbitrary axiomatic theories on the same footing. That calculus supports arbitrary styles of logic (e.g.\ FOL or equational) equally well. The calculus is machine friendly in that proofs are easy to generate, verify, store, and transmit and it is general so that users of Logiweb are not tempted to make a proof system each. User friendliness in the sense that theories, lemmas, and proofs should be easy to read and write is taken care of by Logiwebs rendering and Turing complete macro expansion facilities combined with the support for proof tactics in the implementation of the calculus in \cite{base}.

The present paper gives an overview. Details are in a web appendix \cite{appendix}.



\section{Logiweb sequent calculus}

Let "

begin math meta v end math

end " and "

begin math meta t end math

end " denote the syntax classes of metavariables and object terms, respectively. The format "

begin math meta s end math

end " of Logiweb statements is "

begin math meta s

begin "::="

end meta v alternative meta t alternative meta s infer meta s alternative meta t endorse meta s alternative for all terms meta v indeed meta s alternative absurdity alternative meta s rule plus meta s end math

end ". As an example of use, consider the following:

\[ "

begin array left

then center

then left

then left is "Let" tab ijcar example axiom tab "denote" tab for all terms meta a indeed meta a plus zero equal meta a

then "." safe row "Let" tab ijcar example rule tab "denote" tab for all terms meta a comma meta b comma meta c indeed meta a equal meta b infer meta a equal meta c infer meta b equal meta c

then "." safe row "Let" tab ijcar example contradiction tab "denote" tab zero equal one infer absurdity

then "." safe row "Let" tab ijcar example theory tab "denote" tab ijcar example rule rule plus ijcar example contradiction rule plus ijcar example axiom

then "." safe row "Let" tab ijcar example lemma tab "denote" tab ijcar example theory infer for all terms meta a indeed meta a equal meta a

then "." end array

end " \]

\noindent The construct "

begin math for all terms meta x indeed meta a end math

end " states that "

begin math meta a end math

end " is provable for all object terms "

begin math meta x end math

end ". Hence, "

begin math ijcar example axiom end math

end " above is an axiom scheme which says that "

begin math meta a plus zero equal meta a end math

end " for all object terms "

begin math meta a end math

end ".

The construct "

begin math meta a infer meta b end math

end " states that if "

begin math meta a end math

end " is provable then "

begin math meta b end math

end " is provable. "

begin math meta a infer meta b end math

end " is right associative and has higher priority than "

begin math for all terms meta x indeed meta a end math

end ", so "

begin math ijcar example rule end math

end " above means "

begin math for all terms meta a indeed for all terms meta b indeed for all terms meta c indeed parenthesis meta a equal meta b infer parenthesis meta a equal meta c infer meta b equal meta c end parenthesis end parenthesis end math

end ". Hence, "

begin math ijcar example rule end math

end " is the inference rule which states that "

begin math meta a equal meta b end math

end " and "

begin math meta a equal meta c end math

end " infer "

begin math meta b equal meta c end math

end ". The macro that expands "

begin math for all terms meta a comma meta b comma meta c indeed meta d end math

end " into "

begin math for all terms meta a indeed for all terms meta b indeed for all terms meta c indeed meta d end math

end " is defined in \cite{appendix}.

The construct "

begin math absurdity end math

end " denotes absurdity, i.e. meta-falsehood (we reserve "

begin math false end math

end " and "

begin math bottom end math

end " to denote falsehood and infinite looping, respectively, at the object level). Hence, "

begin math ijcar example contradiction end math

end " above states that "

begin math zero equal one end math

end " is an absurdity.

The construct "

begin math meta a rule plus meta b end math

end " states that both "

begin math meta a end math

end " and "

begin math meta b end math

end " are provable. Hence, "

begin math ijcar example theory end math

end " above is the axiomatic theory which comprises the axiom scheme "

begin math ijcar example axiom end math

end ", the inference rule "

begin math ijcar example rule end math

end ", and the statement that "

begin math zero equal one end math

end " is an absurdity.

The lemma "

begin math ijcar example lemma end math

end " above says that "

begin math meta a equal meta a end math

end " is provable in the theory "

begin math ijcar example theory end math

end ".

The construct "

begin math meta a endorse meta b end math

end " states that if computation of "

begin math meta a end math

end " yields "

begin math true end math

end " then "

begin math meta b end math

end " is provable. "

begin math meta a end math

end " must be expressed in the Logiweb programming language (c.f.\ \cite{base}). "

begin math true end math

end " denotes truth in the Logiweb programming language. If "

begin math meta a endorse meta b end math

end " then we shall say that "

begin math meta a end math

end " {\em endorses} "

begin math meta b end math

end ". The endorsement operator allows to express side conditions as we shall see later.

A {\em Logiweb sequent} is a triple "

begin math tuple var p comma var s comma var c end tuple end math

end " where "

begin math var c end math

end " is a Logiweb statement and "

begin math var p end math

end " and "

begin math var s end math

end " are finite sets of Logiweb statements. The sequent "

begin math tuple set var p sub one end sub comma "\ldots" comma var p sub var m end sub end set comma set var s sub one end sub comma "\ldots" comma var s sub var n end sub end set comma var c end tuple end math

end " represents "

begin math var p sub one end sub infer "\ldots" infer var p sub var m end sub infer var s sub one end sub endorse "\ldots" endorse var s sub var n end sub endorse var c end math

end ". The operations of Logiweb sequent calculus are:

\["

begin array right

then left

then left

then left

then right

then left

then left is var a init tab evaluates to tab tuple the empty set comma the empty set comma var a infer var a end tuple tab empty tab tuple var p comma var s comma for all terms var x indeed var c end tuple at var a tab evaluates to tab tuple var p comma var s comma substitute var c set var x to var a end substitute end tuple

then "\footnotemark" safe row var a infer tuple var p comma var s comma var c end tuple tab evaluates to tab tuple var p term minus var a end minus comma var s comma var a infer var c end tuple tab empty tab tuple var p comma var s comma var a endorse var b end tuple verify tab evaluates to tab tuple var p comma var s comma var b end tuple

then "\footnotemark" safe row var a endorse tuple var p comma var s comma var c end tuple tab evaluates to tab tuple var p comma var s term minus var a end minus comma var a endorse var c end tuple tab empty tab tuple var p comma var s comma var a infer var b infer var c end tuple curry plus tab evaluates to tab tuple var p comma var s comma parenthesis var a rule plus var b end parenthesis infer var c end tuple safe row for all terms var x indeed tuple var p comma var s comma var c end tuple tab evaluates to tab tuple var p comma var s comma for all terms var x indeed var c end tuple

then "\footnotemark" tab empty tab tuple var p comma var s comma parenthesis var a rule plus var b end parenthesis infer var c end tuple curry minus tab evaluates to tab tuple var p comma var s comma var a infer var b infer var c end tuple safe row tuple var p comma var s comma var a infer var c end tuple modus tab evaluates to tab tuple var p term plus var a end plus comma var s comma var c end tuple tab empty tab tuple var p comma var s comma var c end tuple id est var n tab evaluates to tab tuple var p comma var s comma var n end tuple

then "\footnotemark" safe row tuple var p comma var s comma var a endorse var c end tuple modus tab evaluates to tab tuple var p comma var s term plus var a end plus comma var c end tuple tab empty tab tuple var p comma var s comma var n end tuple dereference tab evaluates to tab tuple var p comma var s comma var c end tuple

then "\addtocounter{footnote}{-1}\footnotemark" safe row empty tab empty tab empty tab "\makebox[0mm][r]{"

begin math tuple var p sub one end sub comma var s sub one end sub comma var c sub one end sub end tuple cut tuple var p sub two end sub comma var s sub two end sub comma var c sub two end sub end tuple end math

end "}"

begin evaluates to

end "\makebox[0mm][l]{"

begin math tuple var p sub one end sub term union parenthesis var p sub two end sub term minus var c sub one end sub end minus end parenthesis comma var s sub one end sub term union var s sub two end sub comma var c sub two end sub end tuple end math

end "}" end array

end "\]%
%
\footnotetext[1]{if "

begin math var a end math

end " is free for "

begin math var x end math

end " in "

begin math var c end math

end "}%
%
\footnotetext[2]{if computation of "

begin math var a end math

end " yields "

begin math true end math

end " in the Logiweb programming language}%
%
\footnotetext[3]{if "

begin math var x end math

end " is not free in any member of "

begin math var p end math

end " or "

begin math var s end math

end "}%
%
\footnotetext[4]{if "

begin math var n end math

end " is defined to denote "

begin math var c end math

end "}

\noindent Evaluation of a sequent operation gives a sequent or an exception. Exceptional cases are omitted above. Now let "

begin math ijcar example axiom prime end math

end " denote "

begin math ijcar example theory infer for all terms meta a indeed meta a plus zero equal meta a end math

end ". We have

\[ "

begin array left

then left

then left is ijcar example theory infer parenthesis ijcar example theory init modus dereference cut parenthesis ijcar example rule rule plus ijcar example contradiction infer ijcar example lemma init end parenthesis curry plus end parenthesis dereference id est ijcar example axiom prime tab evaluates to safe row ijcar example theory infer parenthesis tuple the empty set comma the empty set comma ijcar example theory infer ijcar example theory end tuple modus dereference cut parenthesis ijcar example rule rule plus ijcar example contradiction infer tuple the empty set comma the empty set comma ijcar example axiom infer ijcar example axiom end tuple end parenthesis curry plus end parenthesis dereference id est ijcar example axiom prime tab evaluates to safe row ijcar example theory infer parenthesis tuple set ijcar example theory end set comma the empty set comma ijcar example theory end tuple dereference cut tuple the empty set comma the empty set comma ijcar example rule rule plus ijcar example contradiction infer ijcar example axiom infer ijcar example axiom end tuple curry plus end parenthesis dereference id est ijcar example axiom prime tab evaluates to safe row ijcar example theory infer parenthesis tuple set ijcar example theory end set comma the empty set comma ijcar example rule rule plus ijcar example contradiction rule plus ijcar example axiom end tuple cut tuple the empty set comma the empty set comma ijcar example rule rule plus ijcar example contradiction rule plus ijcar example axiom infer ijcar example axiom end tuple end parenthesis dereference id est ijcar example axiom prime tab evaluates to safe row ijcar example theory infer parenthesis tuple set ijcar example theory end set comma the empty set comma ijcar example rule rule plus ijcar example contradiction rule plus ijcar example axiom end tuple cut tuple set ijcar example rule rule plus ijcar example contradiction rule plus ijcar example axiom end set comma the empty set comma ijcar example axiom end tuple end parenthesis dereference id est ijcar example axiom prime tab evaluates to safe row ijcar example theory infer tuple set ijcar example theory end set comma the empty set comma ijcar example lemma end tuple dereference id est ijcar example axiom prime

then evaluates to

then ijcar example theory infer tuple set ijcar example theory end set comma the empty set comma for all terms meta a indeed meta a plus zero equal meta a end tuple id est ijcar example axiom prime tab evaluates to safe row tuple the empty set comma the empty set comma ijcar example theory infer for all terms meta a indeed meta a plus zero equal meta a end tuple id est ijcar example axiom prime

then evaluates to

then tuple the empty set comma the empty set comma ijcar example axiom prime end tuple end array

end " \]

\noindent which proves "

begin math ijcar example axiom prime end math

end ".

The syntax of {\em Logiweb sequent terms} reads "

begin math meta q

begin "::="

end meta s init alternative meta s infer meta q alternative meta s endorse meta q alternative for all terms meta v indeed meta q alternative meta q modus alternative meta q at meta s alternative meta q verify alternative meta q curry plus alternative meta q curry minus alternative meta q id est meta s alternative meta q dereference alternative meta q cut meta q end math

end ". A sequent term "

begin math var q end math

end " is said to {\em prove} the statement "

begin math var c end math

end " if "

begin math var q end math

end " evaluates to "

begin math tuple the empty set comma the empty set comma var c end tuple end math

end " (\cite{base} allows "

begin math var q end math

end " to evaluate to "

begin math tuple var p comma the empty set comma var c end tuple end math

end " provided all elements of "

begin math var p end math

end " are names of previously proved lemmas).



\section{Object theories}\label{section:ObjectTheories}

Logiweb sequent calculus is like assembly language: general and machine friendly, but it needs syntactic sugar. The user friendliness of the combined system of Logiweb, Logiweb sequent calculus, and syntactic sugar has been tested during a course in logic in which ten students wrote Logiweb pages that proved "

begin math object x plus object y equal object y plus object x end math

end " from the raw axioms of Mendelsons system "

begin math system s end math

end " (Peano arithmetic) \cite{mendelson}. It was found that the students could prove commutativity, get the proof verified, and write a report on that in less than three weeks, starting with little experience in Logiweb, mechanical proof checking, and logic in general. For links to the reports, consult \url{http://yoa.dk/}.

While proving "

begin math object x plus object y equal object y plus object x end math

end " from the raw axioms may be a good student exercise, it was found that the deduction theorem and parallel instantiation of object variables was badly needed. Versions of theorems that used inference "

begin math unicode end of text infer unicode end of text end math

end " and meta variables were easier to use than theorems using implication "

begin math unicode end of text imply unicode end of text end math

end " and object variables, but the axiom of induction forced implication and object variables upon the students. Instantiation of object variables is cumbersome because axiom A4 in \cite{mendelson} only allows to instantiate one variable at a time whereas the students needed parallel instantiation, e.g.\ when swapping two object variables. And hypothetical reasoning either required manual unfolding of the deduction theorem or programming of a proof tactic that could cost a lot of CPU-time for large developments.

An {\em inference rule of deduction} would eliminate these problems. If, however, "

begin math for all object x comma object y indeed parenthesis object x equal object y imply object y equal object x end parenthesis end math

end " is an object statement and "

begin math for all terms meta a comma meta b indeed meta a equal meta b infer meta b equal meta a end math

end " is a meta statement, then the deduction rule is a meta meta statement. We do not want to introduce a meta meta level above the Logiweb sequent calculus just to express deduction so we shall express deduction using the side condition machinery of the sequent calculus.



\subsection{Peano arithmetic}

A modified version of Mendelsons system "

begin math system s end math

end " (Peano arithmetic) \cite{mendelson} may be formulated thus:

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item \makebox[0.45\textwidth][l]{"

begin math theory system s end theory end math

end "}"

begin math in theory system s rule rule mp says for all terms meta a comma meta b indeed meta a imply meta b infer meta a infer meta b end rule end math

end "

\item \makebox[0.45\textwidth][l]{"

begin math in theory system s rule rule gen says for all terms meta x comma meta a indeed meta a infer for all meta x indeed meta a end rule end math

end "}"

begin math in theory system s rule deduction says for all terms meta a comma meta b indeed deduction meta a conclude meta b end deduction endorse meta a infer meta b end rule end math

end "

\item \makebox[0.45\textwidth][l]{"

begin math in theory system s rule double negation says for all terms meta a indeed not not meta a infer meta a end rule end math

end "}"

begin math in theory system s rule axiom s two says for all terms meta a comma meta b indeed meta a equal meta b infer meta a suc equal meta b suc end rule end math

end "

\item \makebox[0.45\textwidth][l]{"

begin math in theory system s rule axiom s three says for all terms meta a indeed not zero equal meta a suc end rule end math

end "}"

begin math in theory system s rule axiom s four says for all terms meta a comma meta b indeed meta a suc equal meta b suc infer meta a equal meta b end rule end math

end "

\item \makebox[0.45\textwidth][l]{"

begin math in theory system s rule axiom s five says for all terms meta a indeed meta a plus zero equal meta a end rule end math

end "}"

begin math in theory system s rule axiom s six says for all terms meta a comma meta b indeed meta a plus meta b suc equal parenthesis meta a plus meta b end parenthesis suc end rule end math

end "

\item \makebox[0.45\textwidth][l]{"

begin math in theory system s rule axiom s seven says for all terms meta a indeed meta a times zero equal zero end rule end math

end "}"

begin math in theory system s rule axiom s eight says for all terms meta a comma meta b indeed meta a times parenthesis meta b suc end parenthesis equal parenthesis meta a times meta b end parenthesis plus meta a end rule end math

end "

\item "

begin math in theory system s rule axiom s one says for all terms meta a comma meta b comma meta c indeed meta a equal meta b infer meta a equal meta c infer meta b equal meta c end rule end math

end "

\item "

begin math in theory system s rule axiom s nine says for all terms meta x comma meta a comma meta b comma meta c indeed sub meta b is meta a where meta x is zero end sub endorse sub meta c is meta a where meta x is meta x suc end sub endorse meta b infer meta a imply meta c infer meta a end rule end math

end "\footnote{"

begin math sub meta a is meta b where meta x is meta c end sub end math

end " says `the object term "

begin math meta b end math

end " where the object variable "

begin math meta x end math

end " is replaced by the object term "

begin math meta c end math

end " is alpha equivalent to the object term "

begin math meta a end math

end ", c.f.\ \cite{appendix}}

\end{list}

\noindent As defined in \cite{base}, "

begin math in theory system s rule axiom s five says for all terms meta a indeed meta a plus zero equal meta a end rule end math

end " macro expands into a lemma and a proof where the lemma says "

begin math system s infer for all terms meta a indeed meta a plus zero equal meta a end math

end " and the proof is a proof of that lemma. "

begin math theory system s end theory end math

end " macro expands into a definition which defines "

begin math system s end math

end " as the conjunction of "

begin math for all terms meta a indeed meta a plus zero equal meta a end math

end " and all the other rules attributed to "

begin math system s end math

end ". The "

begin math theory meta x end theory end math

end " macro is somewhat complex since it has to scan the entire page to find all rules related to the theory being defined. The benefit of collecting rules from the entire page is that it gives authors the freedom to introduce axioms one by one.

The deduction rule "

begin math deduction end math

end " is such that e.g.\ "

begin math for all terms meta a comma meta b indeed meta a equal meta b infer meta b equal meta a end math

end " allows to conclude "

begin math meta a equal meta b imply meta b equal meta a end math

end " and "

begin math object x plus object y equal object y plus object x end math

end " allows to conclude "

begin math meta a plus meta b equal meta b plus meta a end math

end " so "

begin math deduction end math

end " implements both deduction and parallel instantiation. All complexity is hidden in the side condition which is defined in \cite{appendix}.

Having the deduction rule, axioms A1, A2, A4, and A5 in \cite{mendelson} become superfluous. For proofs of those axioms based on deduction, see \cite{appendix}.

As an example of a development, \cite{appendix} proves the following lemmas from \cite{mendelson} in system "

begin math system s end math

end ":

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math in theory system s lemma prop three two a says for all terms meta a indeed meta a equal meta a end lemma end math

end "

\item "

begin math in theory system s lemma prop three two b says for all terms meta a comma meta b indeed meta a equal meta b infer meta b equal meta a end lemma end math

end "

\item "

begin math in theory system s lemma prop three two c says for all terms meta a comma meta b comma meta c indeed meta a equal meta b infer meta b equal meta c infer meta a equal meta c end lemma end math

end "

\item "

begin math in theory system s lemma prop three two d says for all terms meta a comma meta b comma meta c indeed meta a equal meta c infer meta b equal meta c infer meta a equal meta b end lemma end math

end "

\item "

begin math in theory system s lemma prop three two e says for all terms meta a comma meta b comma meta c indeed meta a equal meta b infer meta a plus meta c equal meta b plus meta c end lemma end math

end "

\item "

begin math in theory system s lemma prop three two f says for all terms meta a indeed meta a equal zero plus meta a end lemma end math

end "

\item "

begin math in theory system s lemma prop three two g says for all terms meta a comma meta b indeed meta a suc plus meta b equal parenthesis meta a plus meta b end parenthesis suc end lemma end math

end "

\item "

begin math in theory system s lemma prop three two h says for all terms meta a comma meta b indeed meta a plus meta b equal meta b plus meta a end lemma end math

end "

\end{list}

\noindent In the present paper we merely show the proof of an auxiliary lemma which proves the induction step of "

begin math prop three two f end math

end ":

\begin{list}{}{
\setlength{\leftmargin}{0em}
\setlength{\itemindent}{0em}
\setlength{\itemsep}{1ex}}

\item "

begin math in theory system s lemma prop three two f two says for all terms meta a indeed meta a equal zero plus meta a imply meta a suc equal zero plus meta a suc end lemma end math

end "



\item "

begin math system s proof of prop three two f two reads any term meta a end line block any term macro indent meta a end line line ell a premise macro indent meta a equal zero plus meta a end line line ell b because axiom s two modus ponens ell a indeed macro indent meta a suc equal parenthesis zero plus meta a end parenthesis suc end line line ell c because axiom s six indeed macro indent zero plus meta a suc equal parenthesis zero plus meta a end parenthesis suc end line because prop three two d modus ponens ell b modus ponens ell c indeed macro indent meta a suc equal zero plus meta a suc end line line ell d end block because deduction modus ponens ell d indeed meta a equal zero plus meta a imply meta a suc equal zero plus meta a suc qed end math

end "

\end{list}

\noindent As defined in \cite{base}, "

begin math make visible any term meta a end line meta b end visible end math

end " macro expands into "

begin math for all terms meta a indeed meta b end math

end ". "

begin math make root visible line "L05" because axiom s two modus ponens "L04" indeed meta a suc equal parenthesis zero plus meta a end parenthesis suc end line meta b end visible end math

end " macro expands into a local macro definition and a call to a proof tactic. The local macro definition defines "

begin math "L05" end math

end " as shorthand for "

begin math meta a suc equal parenthesis zero plus meta a end parenthesis suc end math

end " and the proof tactic expands the line into "

begin math axiom s two init modus dereference modus at meta a at parenthesis zero plus meta a end parenthesis cut meta b end math

end " using unification. For more details see \cite{appendix}.



\section{Conclusion and further work}

Logiweb sequent calculus with examples from traditional Peano arithmetic has been presented. For further examples, click `Map Theory' at http://yoa.dk/. Map theory is an equational theory. In that theory, all definitions present on a lemmas home page become axioms according to an `axiom of definition' which is expressible by a side condition in the Logiweb sequent calculus.

The traditional deduction theorem requires that no application of Gen is made to variables free in the premise. The side condition of the deduction rule above is quite different. Proving the consistency of the deduction rule is work of the future but is expected to be straightforward since, in the standard model, a statement holds for all natural numbers if and only if it holds for all terms.



%------------------------------------------------------------------------------
\bibliographystyle{alpha}
\bibliography{./page}
%------------------------------------------------------------------------------
\everymath{}
\everydisplay{}

\end{document}
End of file
File page.bib
@incollection{bruijn80,
author = {Nicolaas Govert de Bruijn},
title = {A Survey of the Project {AUTOMATH}},
editor = {J.P. Seldin and J. R. Hindley},
booktitle = {To H. B. Curry: Essays in Combinatory Logic, Lambda Calculus
and Formalism},
publisher = {Academic Press},
year = {1980},
pages = {579--606}}

@book {church41,
author = {A. Church},
title = {The Calculi of Lambda-Conversion},
publisher = {Princeton University Press},
year = {1941}}

@book {constable86,
author = {Robert L. Constable and S. Allen and H. Bromly and
W. Cleaveland and J. Cremer and R. Harper and D. Howe and
T. Knoblock and N. Mendler and P. Panangaden and J. Sasaki and
S. Smith},
title = {Implementing Mathematics with the Nuprl Proof Development
System},
publisher = {Prentice-Hall},
address = {Englewood Cliffs, New Jersey},
year = {1986}}

@inproceedings{dobbertin96,
author = {Hans Dobbertin and Antoon Bosselaers and Bart Preneel},
title = {{RIPEMD}-160: A Strengthened Version of {RIPEMD}},
booktitle = {Fast Software Encryption},
pages = {71-82},
year = {1996},
note = {\url{http://citeseer.nj.nec.com/dobbertin96ripemd.html}}}

@article {godel31,
author = {K. G{\"!o}del},
title = {{\"!U}ber for\-mal un\-ent\-scheid\-ba\-re
{S\"!at}\-ze der {Prin}\-ci\-pia
{Mathe}\-ma\-ti\-ca und ver\-wand\-ter
{Sys}\-teme {I}},
journal = {Mo\-nats\-hef\-te f{\"!u}r {Mathe}\-ma\-tik und {Phy}\-sik},
year = {19\-31},
volume = {12},
number = {{XXXVIII}},
pages = {173-198}}

@book {gordon79,
author = {M. J. Gordon, A. J. Milner, C. P. Wadsworth},
title = {Edinburgh {LCF}, A mechanised logic of computation},
publisher = {Springer-Verlag},
year = {1979},
volume = {78},
series = {Lecture Notes in Computer Science}}

@article {grue92,
author = {K. Grue},
title = {Map Theory},
journal = TCS,
year = {1992},
volume = {102},
number = {1},
pages = {1--133},
month = {jul}}

@book {MathComp,
author = {Klaus Grue},
year = {2001},
title = {Mathematics and Computation},
publisher = {DIKU},
address = {Universitetsparken 1, DK-2100 Copenhagen},
volume = {1--3},
edition = {7},
keywords = {Logic}}

@misc {MathML,
author = {Robert Miner and Jeff Schaeffer},
title = {A Gentle Introduction to {MathML}},
TYPE = {Tutorial},
note = {\url
{http://www.dessci.com/en/support/tutorials/mathml/default.htm}},
year = {2001}}

@techreport{grue02b,
author = {K. Grue},
year = {2002},
title = {Map Theory with Classical Maps},
institution
= {DIKU},
note = {\url{http://www.diku.dk/publikationer/tekniske.rapporter/2002/}},
number = {02/21}}

@inproceedings{grue04,
author = {K. Grue},
title = {Logiweb},
editor = {Fairouz Kamareddine},
booktitle = {Mathematical Knowledge Management Symposium 2003},
publisher = {Elsevier},
series = {Electronic Notes in Theoretical Computer Science},
volume = {93},
year = {2004},
pages = {70--101}}

@InProceedings{grue05,
author = {K. Grue},
year = {2005},
title = {The implementation of Logiweb},
booktitle = {Empirically Successful Classical Automated Reasoning
(ESCAR)},
editor = {Bernd Fischer and Stephan Schulz and Geoff Sutcliffe},
keywords = {Automated Reasoning, Electronic Publishing}}

@techreport{base,
author = {K. Grue},
year = {2005},
title = {A Logiweb base page},
institution={Logiweb},
note = {\liberalUrlBreak{\lgwIjcarBaseUrl}}}

@techreport{appendix,
author = {K. Grue},
year = {2006},
title = {Logiweb sequent calculus, appendix},
institution={Logiweb},
note = {\liberalUrlBreak{\lgwIjcarUrl body/tex/appendix.pdf}}}

@misc {kohlhase03,
author = {Michael Kohlhase},
title = {{OMDoc}: An Open Markup Format for Mathematical Documents
(Version 1.1)},
type = {Open Specification},
note = {\url{http://www.mathweb.org/omdoc.ps}},
year = {2003}}

@article {mccarthy60,
author = {J. McCarthy},
title = {Recursive functions of symbolic expressions and their
computation by machine},
journal = {Communications of the ACM},
year = {1960},
pages = {184--195}}

@book {mendelson,
author = {E. Mendelson},
title = {Introduction to Mathematical Logic},
publisher = {Wadsworth and Brooks},
year = {1987},
edition = {3.}}

@manual {matuszewski93,
title = {An Outline of PC Mizar},
author = {Micha{\l} Muzalewski},
editor = {Roman Matuszewski},
year = {1993},
address = {Brussels},
organization
= {Foundation of Logic, Mathematics and Informatics,
Mizar User Group},
file = {/home/mostynm/papers/mizarmanual.ps.gz}}

@techreport {paulson98a,
author = {Lawrence C. Paulson},
title = {Introduction to {Isabelle}},
institution
= {University of Cambridge, Computer Laboratory},
year = {1998}}

@techreport {paulson98b,
author = {Lawrence C. Paulson},
title = {The {Isabelle} Reference Manual},
institution
= {University of Cambridge, Computer Laboratory},
year = {1998}}

@phdthesis {skalberg02,
author = {Sebastian C. Skalberg},
title = {An Interactive Proof System for Map Theory},
school = {University of Copenhagen},
year = {2002},
month = {oct},
note = {\url{http://www.mangust.dk/skalberg/phd/}},
postscript= {\url{http://www.mangust.dk/skalberg/phd/skalberg-phd.ps}}}

@Book {steele,
author = {Guy L. Steele},
title = {Common Lisp---The Language},
publisher = {Digital Press},
year = {1990},
edition = {2.}}

@book {TeXbook,
author = {D. Knuth},
title = {The TeXbook},
publisher = {Addison Wesley},
year = {1983}}

@inproceedings{trybulec85a,
author = {Andrzej Trybulec and Howard Blair},
title = {Computer Assisted Reasoning with {MIZAR}},
pages = {26--28},
booktitle = {Proceedings of the 9th International Joint Conference on
Artificial Intelligence},
editor = {Aravind Joshi},
month = {aug},
year = {1985},
address = {Los Angeles, CA},
publisher = {Morgan Kaufmann},
note = {\url{http://www.mizar.org/}}}

@book {vallee03,
author = {Thierry Vall\'{e}e},
title = {``{Map Theory}'' et Antifondation},
series = {Electronic Notes in Theoretical Computer Science},
volume = {79},
publisher = {Elsevier},
year = {2003},
pages = {1-258}}

End of file
File llncs.sty
% LLNCS DOCUMENT STYLE -- version 1.2
"

then "% for LaTeX version 2.09
"

then "
"

then "% This style file is an adaptation of
"

then "% the original LaTeX article.sty
"

then "
"

then "\typeout{Document Style `llncs', <version 1.2>}
"

then "
"

then "\frenchspacing
"

then "\def~{\penalty\@M\kern3pt}
"

then "
"

then "% Language dependant section
"

then "\def\literaturename{References}
"

then "\def\contentsname{Table of Contents}
"

then "\def\listoffiguresname{List of Figures}
"

then "\def\figurename{Fig.\thinspace}
"

then "\def\listoftablesname{List of Tables}
"

then "\def\tablename{Table }
"

then "\def\abstractname{Abstract.}
"

then "\newif\if@deutsch\@deutschfalse
"

then "%
"

then "\def\ds@deutsch{\typeout{German version}
"

then "\def\literaturename{Literatur}
"

then "\def\contentsname{Inhaltsverzeichnis}
"

then "\def\listoffiguresname{Abbildungsverzeichnis}
"

then "\def\figurename{Abb.\thinspace}
"

then "\def\listoftablesname{Tabellenverzeichnis}
"

then "\def\tablename{Tabelle }
"

then "\def\abstractname{Zusammenfassung.}
"

then "\@deutschtrue}
"

then "
"

then "\def\thebibliography#1{\section*{\literaturename}\small\list
"

then " {\arabic{enumi}.}{\settowidth\labelwidth{#1.}\leftmargin\labelwidth
"

then " \advance\leftmargin\labelsep
"

then " \usecounter{enumi}}
"

then " \def\newblock{\hskip .11em plus .33em minus -.07em}
"

then " \sloppy
"

then " \sfcode`\.=1000\relax}
"

then "
"

then "\def\ds@citeauthoryear{\def\thebibliography##1{\section*{\literaturename}%
"

then " \small\list{}{\settowidth\labelwidth{}\leftmargin\parindent
"

then " \itemindent=-\parindent
"

then " \labelsep=\z@
"

then " \usecounter{enumi}}%
"

then " \def\newblock{\hskip .11em plus .33em minus -.07em}%
"

then " \sloppy
"

then " \sfcode`\.=1000\relax}%
"

then " \def\@cite##1{##1}%
"

then " \def\@lbibitem[##1]##2{\item[]\if@filesw
"

then " {\def\protect####1{\string ####1\space}\immediate
"

then " \write\@auxout{\string\bibcite{##2}{##1}}}\fi\ignorespaces}}%
"

then "
"

then "\newif\if@envcountreset\@envcountresetfalse
"

then "\def\ds@envcountreset{\@envcountresettrue}
"

then "
"

then "\def\@mbi{cmmib10}
"

then "\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}}
"

then "\@namedef{ds@12pt}{\def\@ptsize{2}}
"

then "\def\ds@twoside{\@twosidetrue \@mparswitchtrue}
"

then "\def\ds@draft{\overfullrule
"

then "5pt}
"

then "\@options
"

then "
"

then "\ds@twoside
"

then "
"

then "\lineskip 1pt \normallineskip 1pt
"

then "\def\baselinestretch{1}
"

then "
"

then "\def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt
"

then "\abovedisplayskip=3 mm plus6pt minus 4pt
"

then "\belowdisplayskip=3 mm plus6pt minus 4pt
"

then "\abovedisplayshortskip=0mm plus6pt minus 2pt
"

then "\belowdisplayshortskip=2 mm plus4pt minus 4pt}
"

then "
"

then "\mathchardef\Gamma="!0100
"

then "\mathchardef\Delta="!0101
"

then "\mathchardef\Theta="!0102
"

then "\mathchardef\Lambda="!0103
"

then "\mathchardef\Xi="!0104
"

then "\mathchardef\Pi="!0105
"

then "\mathchardef\Sigma="!0106
"

then "\mathchardef\Upsilon="!0107
"

then "\mathchardef\Phi="!0108
"

then "\mathchardef\Psi="!0109
"

then "\mathchardef\Omega="!010A
"

then "
"

then "\def\small{\@setsize\small{11pt}\ixpt\@ixpt
"

then "\abovedisplayskip=2.5 mm plus5pt minus 3pt
"

then "\belowdisplayskip=2.5 mm plus5pt minus 3pt
"

then "\abovedisplayshortskip=0mm plus6pt minus 2pt
"

then "\belowdisplayshortskip=2 mm plus4pt minus 4pt
"

then "\def\@listi{\leftmargin\leftmargini\topsep 4pt plus 2pt minus 2pt}}
"

then "
"

then "\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
"

then "\abovedisplayskip=2.5 mm plus5pt minus 3pt
"

then "\belowdisplayskip=2.5 mm plus5pt minus 3pt
"

then "\abovedisplayshortskip=0mm plus6pt minus 2pt
"

then "\belowdisplayshortskip=2 mm plus4pt minus 4pt
"

then "\def\@listi{\leftmargin\leftmargini\topsep 4pt plus 2pt minus 2pt}}
"

then "
"

then "\def\scriptsize{\@setsize\scriptsize{8.4pt}\viipt\@viipt}
"

then "
"

then "\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
"

then "\def\large{\@setsize\large{13.2pt}\xipt\@xipt}
"

then "\def\Large{\@setsize\Large{14.4pt}\xiipt\@xiipt}
"

then "\def\LARGE{\@setsize\LARGE{16.8pt}\xivpt\@xivpt}
"

then "\def\huge{\@setsize\huge{22pt}\xxpt\@xxpt}
"

then "\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
"

then "\@normalsize
"

then "
"

then "\if@twoside
"

then " \oddsidemargin 44pt
"

then " \evensidemargin 82pt
"

then " \marginparwidth 107pt
"

then "\else \oddsidemargin 63pt \evensidemargin 63pt
"

then " \marginparwidth 90pt
"

then "\fi
"

then "\marginparsep 11pt
"

then "\topmargin 11pt \headheight 12pt \headsep 13.66pt
"

then "\footheight 12pt \footskip 30pt
"

then "\textwidth 12.2truecm
"

then "\textheight 19.3truecm
"

then "\columnsep 1cc \columnseprule 0pt
"

then "
"

then "\footnotesep 7.7pt
"

then "\skip\footins 9pt plus 4pt minus 2pt
"

then "\floatsep 12pt plus 2pt minus 2pt
"

then "\textfloatsep 8mm plus 2pt minus 4pt
"

then "\intextsep 8mm plus 2pt minus 2pt
"

then "\@maxsep 8mm
"

then "
"

then "\dblfloatsep 12pt plus 2pt minus 2pt
"

then "\dbltextfloatsep 20pt plus 2pt minus 4pt
"

then "\@dblmaxsep 20pt
"

then "
"

then "\@fptop 0pt plus 1fil \@fpsep 8pt plus 2fil \@fpbot 0pt plus 1fil
"

then "\@dblfptop0pt plus1fil \@dblfpsep8pt plus2fil\@dblfpbot 0pt plus1fil
"

then "\marginparpush 5pt
"

then "
"

then "\parskip 0pt plus 1pt \parindent 1.5em \topsep 8pt plus 2pt minus 4pt
"

then "\partopsep 2pt plus 1pt minus 1pt \itemsep \z@
"

then "\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301
"

then "\@beginparpenalty-\@lowpenalty\@endparpenalty -\@lowpenalty\@itempenalty
"

then "-\@lowpenalty
"

then "
"

then "\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle\bf#1$}}
"

then "{\mbox{\boldmath$\textstyle\bf#1$}}
"

then "{\mbox{\boldmath$\scriptstyle\bf#1$}}
"

then "{\mbox{\boldmath$\scriptscriptstyle\bf#1$}}}
"

then "
"

then "\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
"

then " \def\@svsec{}\else
"

then " \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\quad }\fi
"

then " \@tempskipa #5\relax
"

then " \ifdim \@tempskipa>\z@
"

then " \begingroup #6\relax
"

then " \noindent{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
"

then " \endgroup
"

then " \csname #1mark\endcsname{#7}\addcontentsline
"

then " {toc}{#1}{\ifnum #2>\c@secnumdepth \else
"

then " \protect\numberline{\csname the#1\endcsname}\fi
"

then " #7}\else
"

then " \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname
"

then " {#7}\addcontentsline
"

then " {toc}{#1}{\ifnum #2>\c@secnumdepth \else
"

then " \protect\numberline{\csname the#1\endcsname}\fi
"

then " #7}}\fi
"

then " \@xsect{#5}}
"

then "
"

then "\def\part{\par \addvspace{4ex} \@afterindentfalse \secdef\@part\@spart}
"

then "
"

then "\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne \refstepcounter{part}
"

then "\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else
"

then "\addcontentsline{toc}{part}{#1}\fi { \parindent 0pt \raggedright
"

then " \ifnum \c@secnumdepth >\m@ne \Large \bf
"

then " Part\thepart\par\nobreak\fi\huge
"

then "\bf #2\markboth{}{}\par } \nobreak \vskip 3ex \@afterheading }
"

then "
"

then "\def\@spart#1{{\parindent 0pt \raggedright
"

then " \huge \bf
"

then " #1\par} \nobreak \vskip 3ex \@afterheading }
"

then "
"

then "\def\section{\@startsection {section}{1}{\z@}{-18pt plus -4pt minus
"

then "-4pt}{12pt plus 4pt minus 4pt}{\Large\bf\boldmath
"

then "\pretolerance=10000\relax\rightskip=0pt plus8em}}
"

then "\def\subsection{\@startsection{subsection}{2}{\z@}{-18pt plus-4pt minus
"

then " -4pt}{8pt plus 4pt minus 4pt}{\normalsize\bf\boldmath
"

then "\pretolerance=10000\relax\rightskip=0pt plus8em}}
"

then "\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-18pt plus-4pt
"

then " minus -4pt}{-0.5em plus -.22em minus -0.1em}{\normalsize\bf\boldmath}}
"

then "\def\paragraph{\@startsection{paragraph}{4}{\z@}{-12pt plus -4pt minus
"

then " -4pt}{-0.5em plus -.22em minus -0.1em}{\normalsize\it}}
"

then "\def\subparagraph#1{\typeout{LLNCS Warning: You should not use
"

then "\protect\subparagraph \space in this style.}\vskip0.5cm
"

then "You should not use $\backslash${\tt subparagraph} in this
"

then "style.\vskip0.5cm}
"

then "
"

then "\setcounter{secnumdepth}{2}
"

then "
"

then "\def\appendix{\par
"

then " \setcounter{section}{0}
"

then " \setcounter{subsection}{0}
"

then " \def\thesection{\Alph{section}}}
"

then "
"

then "\leftmargini 17pt \leftmarginii 17pt
"

then "\leftmarginiii 17pt \leftmarginiv 17pt
"

then "\leftmarginv 10pt \leftmarginvi 10pt
"

then "\leftmargin\leftmargini \labelwidth\leftmargini
"

then "\advance\labelwidth-\labelsep
"

then "\labelsep 5pt
"

then "\parsep 0pt plus 1pt
"

then "\def\@listi{\leftmargin\leftmargini}
"

then "\def\@listii{\leftmargin\leftmarginii
"

then " \labelwidth\leftmarginii\advance\labelwidth-\labelsep
"

then " \topsep 0pt plus 1pt}
"

then "\def\@listiii{\leftmargin\leftmarginiii
"

then " \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
"

then " \topsep 0pt plus 1pt}
"

then "\def\@listiv{\leftmargin\leftmarginiv
"

then " \labelwidth\leftmarginiv\advance\labelwidth-\labelsep
"

then " \topsep 0pt plus 1pt}
"

then "\def\@listv{\leftmargin\leftmarginv
"

then " \labelwidth\leftmarginv\advance\labelwidth-\labelsep
"

then " \topsep 0pt plus 1pt}
"

then "\def\@listvi{\leftmargin\leftmarginvi
"

then " \labelwidth\leftmarginvi\advance\labelwidth-\labelsep
"

then " \topsep 0pt plus 1pt}
"

then "
"

then "\def\labelenumi{\arabic{enumi}.}
"

then "\def\theenumi{\arabic{enumi}}
"

then "\def\labelenumii{(\alph{enumii})}
"

then "\def\theenumii{\alph{enumii}}
"

then "\def\p@enumii{\theenumi}
"

then "\def\labelenumiii{\roman{enumiii}.}
"

then "\def\theenumiii{\roman{enumiii}}
"

then "\def\p@enumiii{\theenumi(\theenumii)}
"

then "\def\labelenumiv{\Alph{enumiv}.}
"

then "\def\theenumiv{\Alph{enumiv}}
"

then "\def\p@enumiv{\p@enumiii\theenumiii}
"

then "
"

then "\def\labelitemi{\bf --}
"

then "\def\labelitemii{$\bullet$}
"

then "\def\labelitemiii{$\ast$}
"

then "\def\labelitemiv{$\cdot$}
"

then "
"

then "\def\verse{\let\\=\@centercr
"

then " \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
"

then " \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
"

then "\let\endverse\endlist
"

then "\def\quotation{\list{}{\listparindent 1.5em
"

then " \itemindent\listparindent
"

then " \rightmargin\leftmargin}\item[]}
"

then "\let\endquotation=\endlist
"

then "\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
"

then "\let\endquote=\endlist
"

then "
"

then "\def\descriptionlabel#1{\hspace\labelsep \bf #1}
"

then "\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
"

then " \let\makelabel\descriptionlabel}}
"

then "\let\enddescription\endlist
"

then "
"

then "\def\theequation{\arabic{equation}}
"

then "
"

then "\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
"

then " \else \newpage \fi \thispagestyle{empty}\c@page\z@}
"

then "\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
"

then "
"

then "\arraycolsep 1.4pt \tabcolsep 1.4pt \arrayrulewidth .4pt \doublerulesep
"

then "2pt
"

then "\tabbingsep \labelsep
"

then "
"

then "\skip\@mpfootins = \skip\footins
"

then "\fboxsep = 3pt \fboxrule = .4pt
"

then "
"

then "\newcounter{part}
"

then "\newcounter {section}
"

then "\newcounter {subsection}[section]
"

then "\newcounter {subsubsection}[subsection]
"

then "\newcounter {paragraph}[subsubsection]
"

then "
"

then "\def\thepart{\Roman{part}}
"

then "\def\thesection {\arabic{section}}
"

then "\def\thesubsection {\thesection.\arabic{subsection}}
"

then "\def\thesubsubsection {\thesubsection.\arabic{subsubsection}}
"

then "\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
"

then "
"

then "\def\@pnumwidth{1.55em}
"

then "\def\@tocrmarg {2.55em}
"

then "\def\@dotsep{4.5}
"

then "\setcounter{tocdepth}{3}
"

then "
"

then "\def\tableofcontents{\section*{\contentsname}
"

then " \@starttoc{toc}}
"

then "\def\l@part#1#2{\addpenalty{\@secpenalty}
"

then " \addvspace{2.25em plus 1pt} \begingroup
"

then " \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
"

then "-\@pnumwidth
"

then " {\Large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
"

then " \nobreak \endgroup}
"

then "%
"

then "\def\numberline#1{\advance\hangindent by\@tempdima%
"

then "\hbox to\@tempdima{\hss#1\enspace}}
"

then "%
"

then "\def\bf@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
"

then " \vskip \z@ plus .2pt
"

then " {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
"

then " \parindent #2\relax\@afterindenttrue
"

then " \interlinepenalty\@M
"

then " \leavevmode
"

then " \@tempdima #3\relax \advance\leftskip \@tempdima \hbox{}\hskip
"

then " -\leftskip
"

then "{\bf#4}\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep
"

then " mu$}\hfill \nobreak \hbox to\@pnumwidth{\hfil\rm #5}\par}\fi}
"

then "%
"

then "\def\l@section{\vskip2mm\bf@dottedtocline{1}{0em}{1.7em}}
"

then "\def\l@subsection{\@dottedtocline{2}{1.7em}{2.3em}}
"

then "\def\l@subsubsection{\@dottedtocline{3}{4em}{2em}}
"

then "\def\l@paragraph{\@dottedtocline{4}{6em}{2em}}
"

then "\def\l@subparagraph{\@dottedtocline{5}{8em}{2em}}
"

then "\def\listoffigures{\section*{\listoffiguresname\markboth
"

then " {\listoffiguresname}{\listoffiguresname}}\@starttoc{lof}}
"

then "\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
"

then "\def\listoftables{\section*{\listoftablesname\markboth
"

then " {\listoftablesname}{\listoftablesname}}\@starttoc{lot}}
"

then "\let\l@table\l@figure
"

then "
"

then "\def\endthebibliography{\endlist\normalsize}
"

then "
"

then "\newif\if@restonecol
"

then "\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
"

then "\columnseprule \z@
"

then "\columnsep 35pt\twocolumn[\section*{Index}]
"

then " \markboth{Index}{Index}\thispagestyle{plain}\parindent\z@
"

then " \parskip\z@ plus .3pt\relax\let\item\@idxitem}
"

then "\def\@idxitem{\par\hangindent 40pt}
"

then "\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
"

then "\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
"

then "\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
"

then "\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
"

then "
"

then "\def\footnoterule{\kern-3\p@\hrule width 2 true cm\kern 2.6\p@}
"

then "
"

then "\long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize
"

then " \advance\@tempdima-1em\parshape \@ne 1em\@tempdima}\par
"

then " \parindent 1em\noindent \hbox to \z@{\hss$^{\@thefnmark}$\ }#1}
"

then "
"

then "\setcounter{topnumber}{2}
"

then "\def\topfraction{.9}
"

then "\setcounter{bottomnumber}{1}
"

then "\def\bottomfraction{.3}
"

then "\setcounter{totalnumber}{3}
"

then "\def\textfraction{.15}
"

then "\def\floatpagefraction{.85}
"

then "\setcounter{dbltopnumber}{2}
"

then "\def\dbltopfraction{.85}
"

then "\def\dblfloatpagefraction{.85}
"

then "
"

then "\long\def\@makecaption#1#2{
"

then " \vskip 10pt
"

then " \setbox\@tempboxa\hbox{{\bf #1} #2}
"

then " \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox
"

then "to\hsize{\hfil\box\@tempboxa\hfil}
"

then " \fi\vskip5pt}
"

then "
"

then "\long\def\@caption#1[#2]#3{\addcontentsline{\csname
"

then " ext@#1\endcsname}{#1}{\protect\numberline{\csname
"

then " the#1\endcsname}{\ignorespaces #2}}\par
"

then " \begingroup
"

then " \@parboxrestore
"

then " \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
"

then " \endgroup}
"

then "
"

then "\newcounter{figure}
"

then "\def\thefigure{\@arabic\c@figure}
"

then "
"

then "\def\fps@figure{htbp}
"

then "\def\ftype@figure{1}
"

then "\def\ext@figure{lof}
"

then "\def\fnum@figure{\figurename\thefigure.}
"

then "\def\figure{\small\rm\@float{figure}}
"

then "\def\endfigure{\vskip-5pt\end@float}
"

then "\@namedef{figure*}{\@dblfloat{figure}}
"

then "\@namedef{endfigure*}{\end@dblfloat}
"

then "
"

then "\newcounter{table}
"

then "\def\thetable{\@arabic\c@table}
"

then "\def\fps@table{htbp}
"

then "\def\ftype@table{2}
"

then "\def\ext@table{lot}
"

then "\def\fnum@table{\tablename\thetable.}
"

then "\def\table{\small\rm\@float{table}}
"

then "\let\endtable\end@float
"

then "\@namedef{table*}{\@dblfloat{table}}
"

then "\@namedef{endtable*}{\end@dblfloat}
"

then "
"

then "% LaTeX does not provide a command to enter the authors institute
"

then "% addresses. The \institute command is defined here.
"

then "
"

then "\newcounter{@inst}
"

then "\newcounter{@auth}
"

then "
"

then "\def\institute#1{\gdef\@institute{#1}}
"

then "
"

then "\def\institutename{\par
"

then " \begingroup
"

then " \parskip=\z@
"

then " \parindent=\z@
"

then " \setcounter{@inst}{1}%
"

then " \def\and{\par\stepcounter{@inst}%
"

then " \noindent$^{\the@inst}$\enspace\ignorespaces}%
"

then " \setbox0=\vbox{\def\thanks##1{}\@institute}%
"

then " \ifnum\c@@inst=1\relax
"

then " \else
"

then " \setcounter{footnote}{\c@@inst}%
"

then " \setcounter{@inst}{1}%
"

then " \noindent$^{\the@inst}$\enspace
"

then " \fi
"

then " \ignorespaces
"

then " \@institute\par
"

then " \endgroup}
"

then "
"

then "\def\@thanks{}
"

then "
"

then "\def\@fnsymbol#1{\ifcase#1\or\star\or{\star\star}\or{\star\star\star}%
"

then " \or \dagger\or \ddagger\or
"

then " \mathchar "!278\or \mathchar "!27B\or \|\or **\or \dagger\dagger
"

then " \or \ddagger\ddagger\else\@ctrerr\fi\relax}
"

then "
"

then "\def\inst#1{\unskip$^{#1}$}
"

then "
"

then "\def\subtitle#1{\gdef\@subtitle{#1}}
"

then "\def\@subtitle{}
"

then "
"

then "\def\maketitle{\par
"

then " \begingroup
"

then " \parindent=\z@
"

then " \def\thefootnote{\fnsymbol{footnote}}
"

then " \if@twocolumn
"

then " \twocolumn[\@maketitle]
"

then " \else \newpage
"

then " \global\@topnum\z@ \@maketitle \fi\thispagestyle{empty}\@thanks
"

then " \endgroup
"

then " \let\maketitle\relax
"

then " \let\@maketitle\relax
"

then " \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@subtitle{}%
"

then " \let\thanks\relax}
"

then "
"

then "\def\@maketitle{\newpage
"

then " \begin{center}%
"

then " {\LARGE \bf\boldmath
"

then " \pretolerance=10000
"

then " \@title \par}\vskip .8cm
"

then "\if!\@subtitle!\else {\Large \bf\boldmath
"

then " \vskip -.65cm
"

then " \pretolerance=10000
"

then " \@subtitle \par}\vskip .8cm\fi
"

then "{\normalsize\rm\lineskip .5em
"

then "\@author\vskip.35cm}
"

then " {\small\rm\institutename}
"

then " \end{center}%
"

then " }
"

then "
"

then "\mark{{}{}}
"

then "
"

then "% Define `abstract' environment
"

then "\def\abstract{%
"

then "\list{}{\advance\topsep by0.35cm\relax\small\rm
"

then " \leftmargin=1cm
"

then " \labelwidth=\z@
"

then " \listparindent=\z@
"

then " \itemindent\listparindent
"

then " \rightmargin\leftmargin}\item[\hskip\labelsep\bf\abstractname]}
"

then "\let\endabstract=\endlist
"

then "\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
"

then "\let\endquote=\endlist
"

then "
"

then "\def\ps@headings{\def\@evenhead{}%
"

then "\let\@oddhead\@evenhead
"

then "\let\@evenfoot\@evenhead
"

then "\let\@oddfoot\@evenhead
"

then "\def\sectionmark##1{}%
"

then "\def\subsectionmark##1{}}
"

then "\def\ps@myheadings{\let\@mkboth\@gobbletwo
"

then "\def\@oddhead{\hbox{}\small\rm\rightmark \hfil\thepage}%
"

then "\def\@oddfoot{}\def\@evenhead{\small\rm\thepage\hfil
"

then "\leftmark\hbox {}}%
"

then "\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
"

then "
"

then "\def\today{\ifcase\month\or
"

then " January\or February\or March\or April\or May\or June\or
"

then " July\or August\or September\or October\or November\or December\fi
"

then " \space\number\day, \number\year}
"

then "
"

then "\ps@headings \pagenumbering{arabic} \onecolumn
"

then "\if@twoside\else\raggedbottom\fi
"

then "
"

then "% new environments and theorems
"

then "% borrowed form the LTMP-style of Springer-Verlag
"

then "% designed by Dr. Christoph Ender
"

then "%
"

then "% define the new theorem like environments
"

then "% define a new style of environments where it is possible to define
"

then "% the font % used as the theorem name and the fontfamily for the text.
"

then "%
"

then "% \newstytheorem{name}{thefont}{txtfont}{Text}[Counter]
"

then "% \newstytheorem{name}{thefont}{txtfont}[oldname]{Text}
"

then "%
"

then "% #1 - name of theorem
"

then "% #2 - theorem font
"

then "% #3 - text font
"

then "%
"

then "\def\newstytheorem#1#2#3{%
"

then "\@ifnextchar[{\che@othm{#1}{#2}{#3}}{\che@nthm{#1}{#2}{#3}}}
"

then "%
"

then "% #1 - name of theorem
"

then "% #2 - theorem font
"

then "% #3 - text font
"

then "% #4 - text string of thorem name
"

then "%
"

then "\def\che@nthm#1#2#3#4{%
"

then "\@ifnextchar[{\che@xnthm{#1}{#2}{#3}{#4}}{\che@ynthm{#1}{#2}{#3}{#4}}}
"

then "%
"

then "% #1 - name of theorem
"

then "% #2 - theorem font
"

then "% #3 - text font
"

then "% #4 - text string of thorem name
"

then "% #5 - add theorem counter to reset list of another counter
"

then "%
"

then "\def\che@xnthm#1#2#3#4[#5]{\expandafter
"

then "\@ifdefinable\csname #1\endcsname
"

then "{\@definecounter{#1}\if@envcountreset\@addtoreset{#1}{#5}\fi
"

then "\expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
"

then "\global\@namedef{#1}{\che@thm{#1}{#4}{#2}{#3}}\global
"

then "\@namedef{end#1}{\@endtheorem}}}
"

then "%
"

then "% #1 - name of theorem
"

then "% #2 - theorem font
"

then "% #3 - text font
"

then "% #4 - text string of thorem name
"

then "%
"

then "\def\che@ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname
"

then "{\@definecounter{#1}%
"

then "\expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
"

then "\global\@namedef{#1}{\che@thm{#1}{#2}{#3}{#4}}\global
"

then "\@namedef{end#1}{\@endtheorem}}}
"

then "%
"

then "% change oldthm if oldname in specification is '*'
"

then "% then don't use a counter
"

then "% #1 - countername
"

then "% #2 - theorem font
"

then "% #3 - text font
"

then "% #4 - counter used
"

then "% #5 - string containing theorem name to print
"

then "%
"

then "\def\che@othm#1#2#3[#4]#5{\expandafter\@ifdefinable
"

then "\csname#1\endcsname%
"

then "{\@@othm@{#1}{#2}{#3}{#4}{#5}\global\@namedef{end#1}{\@endtheorem}}}
"

then "%
"

then "\def\@@othm@#1#2#3#4#5{\if *#4{\global\@namedef{the#1}{\relax}
"

then "\global\@namedef{#1}{\@bthm@{}{#5}{#2}{#3}}}\else
"

then "{\global\@namedef{the#1}{\@nameuse{the#4}}% define the counter
"

then "\global\@namedef{#1}{\che@thm{#4}{#5}{#2}{#3}}}\fi}
"

then "%
"

then "% new defs for theorem environment che 17-MAR-1989
"

then "% it improves the option possible
"

then "%
"

then "% #1 - countername = theorem name
"

then "% #2 - string containing theorem name to print
"

then "% #3 - theorem font
"

then "% #4 - text font
"

then "\def\che@thm#1#2#3#4{\@ifnextchar({\@athm{#1}{#2}{#3}{#4}}{%
"

then "\@ifnextchar *{\@bthm{#1}{#2}{#3}{#4}}%
"

then "{\@@thm{#1}{#2}{#3}{#4}}}}
"

then "%
"

then "% \begin{thm}(A.1)[test] results in:
"

then "% \end{thm} thm A.1 (test) ....
"

then "% #1 - theorem
"

then "% #2 - string of theorem name
"

then "% #3 - font for theorem name and label
"

then "% #4 - Text font
"

then "% #5 - is the new label
"

then "% #6 - optional string
"

then "%
"

then "\def\@athm#1#2#3#4(#5){\@ifnextchar[{%
"

then "\@aythm{#1}{#2}{#3}{#4}{#5}}{\@axthm{#1}{#2}{#3}{#4}{#5}}}
"

then "\def\@axthm#1#2#3#4#5{\@@locthmlab{#1}{#5}%
"

then "\@begintheorem{#2}{#5}{#3}{#4}\ignorespaces}
"

then "\def\@aythm#1#2#3#4#5[#6]{\@@locthmlab{#1}{#5}%
"

then "\fuh@opargbegintheorem{#2}{#5}{#6}{#3}{#4}\ignorespaces}
"

then "%
"

then "% \begin{thm}*[xytest] results in:
"

then "% \end{thm} thm (xytest) ....
"

then "% #1 - theorem
"

then "% #2 - string of theorem name
"

then "% #3 - font for theorem name and label
"

then "% #4 - Text font
"

then "% #5 - optional string
"

then "%
"

then "\def\@bthm@#1#2#3#4{\@ifnextchar[{\@bythm{#1}{#2}{#3}{#4}}{%
"

then "\@bxthm{#1}{#2}{#3}{#4}}}
"

then "\def\@bthm#1#2#3#4*{\@ifnextchar[{\@bythm{#1}{#2}{#3}{#4}}{%
"

then "\@bxthm{#1}{#2}{#3}{#4}}}
"

then "\def\@bxthm#1#2#3#4{\if !#1!\relax\else\@@locthmlab{#1}{}\fi
"

then "\@@begintheorem{#2}{#3}{#4}\ignorespaces}
"

then "\def\@bythm#1#2#3#4[#5]{%
"

then "\@@opargbegintheorem{#2}{#3}{#4}{#5}\ignorespaces}
"

then "%
"

then "% define local label
"

then "% if no number or a user specified label occured
"

then "%
"

then "\def\@@locthmlab#1#2{\expandafter\def\csname the#1\endcsname{#2}
"

then "\let\@chetempa\protect\def\protect{\noexpand\protect\noexpand}%
"

then "\edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}%
"

then "\let\protect\@chetempa}
"

then "%
"

then "% #1 - counter = theorem name
"

then "% #2 - string with name
"

then "% #3 - font for theorem name and label
"

then "% #4 - font for text
"

then "\def\@@thm#1#2#3#4{\refstepcounter
"

then " {#1}\@ifnextchar[{\che@ythm{#1}{#2}{#3}{#4}}{%
"

then " \che@xthm{#1}{#2}{#3}{#4}}}
"

then "%
"

then "\def\che@xthm#1#2#3#4{\che@begintheorem{#2}{\csname
"

then "the#1\endcsname}{#3}{#4}\ignorespaces}
"

then "\def\che@ythm#1#2#3#4[#5]{\che@opargbegintheorem{#2}{\csname
"

then " the#1\endcsname}{#5}{#3}{#4}\ignorespaces}
"

then "%
"

then "% #1 - name of theorem
"

then "% #2 - label string
"

then "% #3 - font for name and lable
"

then "% #4 - text fomt
"

then "%
"

then "\def\che@begintheorem#1#2#3#4{#4\trivlist\item[\hskip\labelsep
"

then "#3#1\ts #2.]}
"

then "%
"

then "% #1 - name of theorem
"

then "% #2 - label string
"

then "% #3 - additonal text
"

then "% #4 - font for name and lable
"

then "% #5 - text fomt
"

then "%
"

then "\def\che@opargbegintheorem#1#2#3#4#5{#5\trivlist
"

then "\item[\hskip\labelsep#4#1\ts #2\ #3.]}
"

then "%
"

then "\def\fuh@opargbegintheorem#1#2#3{\it \trivlist
"

then " \item[\hskip \labelsep{\bf #1\ #2\ (#3).}]}
"

then "%
"

then "\def\@@begintheorem#1#2#3{#3\trivlist\item[\hskip\labelsep
"

then "#2#1.]}
"

then "\def\@@opargbegintheorem#1#2#3#4{#3\trivlist\item[\hskip\labelsep
"

then "#2#1 #4.]}
"

then "
"

then "\if@deutsch
"

then "\newstytheorem{theorem}{\bf}{\it}{Theorem}[section]
"

then "\newstytheorem{example}{\it}{\rm}{Beispiel}[section]
"

then "\newstytheorem{proposition}{\bf}{\it}[theorem]{Proposition}
"

then "\newstytheorem{corollary}{\bf}{\it}[theorem]{Korollar}
"

then "\newstytheorem{lemma}{\bf}{\it}[theorem]{Lemma}
"

then "\newstytheorem{proof}{\it}{\rm}[*]{Beweis}
"

then "\newstytheorem{definition}{\bf}{\rm}[theorem]{Definition}
"

then "\newstytheorem{remark}{\it}{\rm}[*]{Anmerkung}
"

then "\newstytheorem{exercise}{\it}{\rm}[theorem]{\"!{U}bung}
"

then "\newstytheorem{problem}{\it}{\rm}[theorem]{Problem}
"

then "\newstytheorem{solution}{\it}{\rm}[theorem]{L\"!{o}sung}
"

then "\newstytheorem{note}{\it}{\rm}[theorem]{Hinweis}
"

then "\newstytheorem{question}{\it}{\rm}[theorem]{Frage}
"

then "\else
"

then "\newstytheorem{theorem}{\bf}{\it}{Theorem}[section]
"

then "\newstytheorem{example}{\it}{\rm}{Example}[section]
"

then "\newstytheorem{proposition}{\bf}{\it}[theorem]{Proposition}
"

then "\newstytheorem{corollary}{\bf}{\it}[theorem]{Corollary}
"

then "\newstytheorem{lemma}{\bf}{\it}[theorem]{Lemma}
"

then "\newstytheorem{proof}{\it}{\rm}[*]{Proof}
"

then "\newstytheorem{definition}{\bf}{\rm}[theorem]{Definition}
"

then "\newstytheorem{remark}{\it}{\rm}[*]{Remark}
"

then "\newstytheorem{exercise}{\it}{\rm}[theorem]{Exercise}
"

then "\newstytheorem{problem}{\it}{\rm}[theorem]{Problem}
"

then "\newstytheorem{solution}{\it}{\rm}[theorem]{Solution}
"

then "\newstytheorem{note}{\it}{\rm}[theorem]{Note}
"

then "\newstytheorem{question}{\it}{\rm}[theorem]{Question}
"

then "\fi
"

then "
"

then "\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}}
"

then "\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil
"

then "\penalty50\hskip1em\null\nobreak\hfil\squareforqed
"

then "\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}
"

then "
"

then "\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip
"

then "\halign{\hfil
"

then "$\displaystyle##$\hfil\cr\gets\cr\to\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets
"

then "\cr\to\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets
"

then "\cr\to\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
"

then "\gets\cr\to\cr}}}}}
"

then "\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
"

then "$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
"

then "\noalign{\vskip1.2pt}=\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
"

then "\noalign{\vskip1pt}=\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
"

then "<\cr
"

then "\noalign{\vskip0.9pt}=\cr}}}}}
"

then "\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
"

then "$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
"

then "\noalign{\vskip1.2pt}=\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
"

then "\noalign{\vskip1pt}=\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
"

then ">\cr
"

then "\noalign{\vskip0.9pt}=\cr}}}}}
"

then "\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip
"

then "\halign{\hfil
"

then "$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
"

then ">\cr\noalign{\vskip-1pt}<\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
"

then ">\cr\noalign{\vskip-0.8pt}<\cr}}}
"

then "{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
"

then ">\cr\noalign{\vskip-0.3pt}<\cr}}}}}
"

then "\def\bbbr{{\rm I\!R}} %reelle Zahlen
"

then "\def\bbbm{{\rm I\!M}}
"

then "\def\bbbn{{\rm I\!N}} %natuerliche Zahlen
"

then "\def\bbbf{{\rm I\!F}}
"

then "\def\bbbh{{\rm I\!H}}
"

then "\def\bbbk{{\rm I\!K}}
"

then "\def\bbbp{{\rm I\!P}}
"

then "\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l}
"

then "{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}}
"

then "\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox
"

then "to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox
"

then "to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox
"

then "to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox
"

then "to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}}
"

then "\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
"

then "Q$}\hbox{\raise
"

then "0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise
"

then "0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise
"

then "0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise
"

then "0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}}
"

then "\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
"

then "T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox
"

then "to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox
"

then "to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox
"

then "to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}}
"

then "\def\bbbs{{\mathchoice
"

then "{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox
"

then "to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
"

then "to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox
"

then "to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
"

then "to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox
"

then "to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
"

then "to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}}
"

then "{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox
"

then "to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
"

then "to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
"

then "\def\bbbz{{\mathchoice {\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
"

then "{\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
"

then "{\hbox{$\sf\scriptstyle Z\kern-0.3em Z$}}
"

then "{\hbox{$\sf\scriptscriptstyle Z\kern-0.2em Z$}}}}
"

then "\def\ts{\thinspace}
"

then "
"

then "\if@deutsch
"

then "\def\typeset{\vfill\small\noindent Dieser Artikel wurde mit
"

then "dem \LaTeX\ Makro-Paket und dem LLNCS-Style formatiert.\par}
"

then "\else
"

then "\def\typeset{\vfill\small\noindent This article was processed using
"

then "the \LaTeX\ macro package with LLNCS style\par}
"

then "\fi
"

then "
"

then "\def\enddocument{\par\typeset
"

then "\@checkend{document}\clearpage\begingroup
"

then "\if@filesw \immediate\closeout\@mainaux
"

then "\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
"

then "\def\bibcite{\@testdef b}\@tempswafalse\makeatletter\input \jobname.aux
"

then "\if@tempswa \@warning{Label(s) may have changed. Rerun to get
"

then "cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
"

then "\endinput
End of file
latex page
bibtex page
latex page
latex page
dvipdfm page
File appendix.tex
\documentclass [fleqn]{article}

\everymath{\rm}
\usepackage{latexsym}
\setlength {\overfullrule }{0mm}
\input{lgwinclude}

\usepackage{url}
\usepackage[dvipdfm=true]{hyperref}
\hypersetup{pdfpagemode=none}
\hypersetup{pdfstartpage=1}
\hypersetup{pdfstartview=FitBH}
\hypersetup{pdfpagescrop={120 130 490 730}}
\hypersetup{pdftitle=Logiweb sequent calculus - Appendix}
\hypersetup{colorlinks=true}



\begin {document}
\title {Logiweb sequent calculus, Appendix}
\author {Klaus Grue}
\date {\today}
\maketitle
\tableofcontents



\section{Introduction}

The present appendix is part of the {\em Logiweb page} available at

\begin{raggedright}
\begin{sloppypar}
\noindent \url{\lgwIjcarUrl body/tex/page.pdf}.
\end{sloppypar}
\end{raggedright}

The hex number which contains a RIPEMD-160 \cite{dobbertin96} hash key and a time stamp identifies the present paper uniquely on Logiweb. The part before the hex number is the address of a {\em Logiweb relay} which redirects the users browser to the paper. That part can be replaced by the address of any Logiweb relay. The part after the hex number indicates the address of the body of the paper relative to the official, binary representation (2/ is shorthand for ../../).

Actually, the present page is rendered as three pdf files present at \href{\lgwIjcarUrl body/tex/page.pdf}{2\linebreak [0]/\linebreak [0]body\linebreak [0]/\linebreak [0]tex\linebreak [0]/\linebreak [0]page.pdf}, \href{\lgwIjcarUrl body/tex/appendix.pdf}{2\linebreak [0]/\linebreak [0]body\linebreak [0]/\linebreak [0]tex\linebreak [0]/\linebreak [0]appendix.pdf}, and \href{\lgwIjcarUrl body/tex/chores.pdf}{2\linebreak [0]/\linebreak [0]body\linebreak [0]/\linebreak [0]tex\linebreak [0]/\linebreak [0]chores.pdf} where appendix.pdf is the present appendix. Many proofs and definitions are deferred to the present appendix to spare the reader of the main paper in the page.pdf file. The chores.pdf file defines how to render each construct in \TeX. A good place to start browsing is \href{\lgwIjcarUrl index.html}{2\linebreak [0]/\linebreak [0]index.html}.

Each Logiweb page has a Logiweb bibliography which lists previously published pages which the present page relies on. The present Logiweb page references the \href{\lgwIjcarBaseUrl index.html}{base} page at

\begin{raggedright}
\begin{sloppypar}
\noindent \url{\lgwIjcarBaseUrl body/tex/page.pdf}.
\end{sloppypar}
\end{raggedright}

\noindent which defines the proof system used to verify the present page (c.f. \href{\lgwIjcarUrl bibliography/tex/page.pdf}{2\linebreak [0]/\linebreak [0]bibliography\linebreak [0]/\linebreak [0]tex\linebreak [0]/\linebreak [0]page.pdf}).

As mentioned in the main paper, the user friendliness of the Logiweb sequent calculus is achieved by using the Turing complete macro expansion facility of Logiweb. To see the proofs present in the main paper after macro expansion, consult \href{\lgwIjcarUrl expansion/tex/page.pdf}{2\linebreak [0]/\linebreak [0]expansion\linebreak [0]/\linebreak [0]tex\linebreak [0]/\linebreak [0]page.pdf}. To see the proofs of the present appendix after macro expansion, consult \href{\lgwIjcarUrl expansion/tex/appendix.pdf}{2\linebreak [0]/\linebreak [0]expansion\linebreak [0]/\linebreak [0]tex\linebreak [0]/\linebreak [0]appendix.pdf}.



\section{Notation}

\subsection{Hiding construct}

"

begin math proclaim var x hide as text "hide" end text end proclaim end math

end " proclaims "

begin math var x hide end math

end " to denote hiding. We introduce it here to have a visible hiding construct instead of the invisible `unicode start of text' operator normally used for hiding, c.f.\ the \href{\lgwIjcarBaseUrl index.html}{base} page. The use of hiding in "

begin math macro define var x as var y end define hide end math

end " later in this appendix is play for the gallery since the "

begin math var x end math

end " is introduced on the \href{\lgwIjcarBaseUrl index.html}{base} page and since macro definitions only have effect when they occur on the home page of the construct being macro defined.



\subsection{Metaquantification}\label{section:Metaquantification}

The following macro definition makes e.g.\ "

begin math for all terms meta a comma meta b comma meta c indeed meta d end math

end " expand into "

begin math all meta a indeed all meta b indeed all meta c indeed meta d end math

end ". Note that "

begin math all var x indeed var y end math

end " is meta quantification as defined on the \href{\lgwIjcarBaseUrl index.html}{base} page which, unfortunately, is rendered exactly like object quantification in the present document. Such notational clashes are unavoidable in mathematics in general but becomes extremely visible in a system like Logiweb where referenced papers are only a click away. To avoid confusion between the two, identically looking quantifiers, we only use the meta quantifier from the base page in the macro definition below and otherwise use "

begin math for all var x indeed var y end math

end " to denote object quantification. The "

begin math protect var x end protect end math

end " operator used in the definition protects against macro expansion. The left hand side of the macro definition is protected against macro expansion as is the `recursive' call of the macro that occurs in the right hand side.

\vspace{1ex}

\noindent "

begin math define macro of protect for all terms var x indeed var y end protect as lambda var t dot lambda var s dot lambda var c dot state expand macro newline open if not var t first term root equal quote var x comma var y end quote then macro newline quote expand var t term quote all var x indeed var y end quote stack tuple quote var x end quote pair var t first comma quote var y end quote pair var t second end tuple end expand else macro newline quote expand var t term quote all var x indeed protect for all terms var y indeed var z end protect end quote stack tuple quote var x end quote pair var t first first comma quote var y end quote pair var t first second comma quote var z end quote pair var t second end tuple end expand state var s cache var c end expand end define end math

end "

\vspace{1ex}

\noindent The definition above is a general macro definition as opposed to more restricted macro definitions like "

begin math macro define any term var i end line var p as for all terms var i indeed var p end define end math

end " which just define a left hand side to expand into a right hand side. The "

begin math macro define var x as var y end define hide end math

end " construct itself is defined by a general macro definition and happens to expand into a general macro definition, so the "

begin math macro define var x as var y end define hide end math

end " construct is just syntactic sugar.

A general macro definition assigns a `macro' aspect to the principal operator of the right hand side. The definition ignores the parameters of the principal operator. Instead, the right hand side of the general macro definition must take three arguments, "

begin math var t end math

end ", "

begin math var s end math

end ", and "

begin math var c end math

end ". When a macro aspect is invoked, it is applied to the term "

begin math var t end math

end " to be expanded, a `macro state' "

begin math var s end math

end ", and a `Logiweb cache' "

begin math var c end math

end ".

The macro state should itself be a function of three parameters "

begin math var t end math

end ", "

begin math var s end math

end ", and "

begin math var c end math

end " and it is the function to be invoked when continuing the macro expansion. A macro like the macro protection macro "

begin math protect var x end protect end math

end " protects its argument "

begin math var x end math

end " against macro expansion by returning it instead of calling "

begin math var s end math

end " on it. The construct above calls the general macro expansion invokation function "

begin math state expand var t state var s cache var c end expand end math

end " which simply applies "

begin math var s end math

end " to "

begin math var t end math

end ", "

begin math var s end math

end ", and "

begin math var c end math

end ". So the definition above does something to "

begin math var t end math

end " and then continues macro expansion.

The Logiweb cache "

begin math var c end math

end " is the cache of the home page of "

begin math var t end math

end ", i.e.\ the page on which "

begin math var t end math

end " occurs. The cache contains, among other, all definitions present on the home page and all pages transitively referenced by the home page. It also contains other things like compiled versions of all value defined constructs. This is badly needed for efficiency reasons because macro expansion is done not by the Logiweb computing engine itself but by a self-interpretter which is run by the Logiweb engine and simulates the Logiweb engine. This self-interpretter, which resides inside the macro state "

begin math var s end math

end ", fetches compiled versions of constructs from the cache "

begin math var c end math

end " for efficiency reasons.

The term "

begin math var t end math

end " has the structure described in Section \ref{section:LogiwebTerms}. "

begin math var t second end math

end " is the second subtree of "

begin math var t end math

end " and "

begin math var t first second end math

end " is the second subtree of the first subtree of "

begin math var t end math

end ". "

begin math var t term root equal var t prime end math

end " is true when "

begin math var t end math

end " and "

begin math var t prime end math

end " have the same principal operator.

The "

begin math quote expand var t term var p stack var a end expand end math

end " construct expands the pattern "

begin math var p end math

end " according to the association list "

begin math var a end math

end ". Some day, when the author has some spare time, a new version of "

begin math quote expand var t term var p stack var a end expand end math

end " will be implemented in which the association list is replaced by a facility like the `comma' in Lisp backquotes.

The construct "

begin math quote expand var t term var p stack var a end expand end math

end " not only expands the pattern "

begin math var p end math

end " according to the association list "

begin math var a end math

end ", it also extracts the `debugging information' of the principal operator of "

begin math var t end math

end " and installs that debugging information in all operators that come from the pattern "

begin math var p end math

end ". The debugging information indicates the exact location of the construct before macro expansion.

The "

begin math quote var t end quote end math

end " construct evaluates to the Logiweb representation of the term "

begin math var t end math

end ".



\subsection{The `Arbitrary' proof constructor}

The `Arbitrary' proof constructor defined on the \href{\lgwIjcarBaseUrl index.html}{base} page does not take advantage of the meta quantification macro above. For that reason we introduce a new construct for introducing arbitrary meta variables:

"

begin math macro define any term var i end line var p as for all terms var i indeed var p end define end math

end "

Actually, the definition above was used as an example of a simple macro in Section \ref{section:Metaquantification}. When the same aspect of the same construct is defined more than once (e.g.\ the macro aspect of "

begin math make visible any term var i end line var p end visible end math

end "), only the first definition has effect. But the Logiweb compiler prints a warning if the same aspect of the same construct have definitions that contradict each other. The repeated definition of "

begin math make visible any term var i end line var p end visible end math

end " above gives no warnings since the two definitions have identical right hand sides.



\subsection{Macro indentation}

The following construct increases the left margin. Should be used in inline math mode only. Should be replaced by automatic indentation inside blocks as soon as possible.

"

begin math macro define macro indent var x as var x end define end math

end "



\subsection{Protected macro expansion}

The following construct is a general macro definition construct which both protects its left hand side against macro expansion and renders its left hand side using the tex name aspect. To see the definitions of the tex and tex name aspects of "

begin math make visible general macro define var x as var y end define end visible hide end math

end " consult the \href{\lgwIjcarUrl body/tex/chores.pdf}{chores} part of the present Logiweb page.

"

begin math macro define general macro define var x as var y end define as define macro of protect var x end protect as var y end define end define end math

end "



\subsection{Object quantification}

The following is a repetion of Section \ref{section:Metaquantification} but concerns object quantification. It allows to write "

begin math for all var x comma var y comma var z indeed var u end math

end " for "

begin math for all var x indeed for all var y indeed for all var z indeed var u end math

end ".

\vspace{1ex}

\noindent "

begin math define macro of protect for all var x indeed var y end protect as lambda var t dot lambda var s dot lambda var c dot state expand macro newline open if not var t first term root equal quote var x comma var y end quote then macro newline quote expand var t term quote for all objects var x indeed var y end quote stack tuple quote var x end quote pair var t first comma quote var y end quote pair var t second end tuple end expand else macro newline quote expand var t term quote for all objects var x indeed protect for all var y indeed var z end protect end quote stack tuple quote var x end quote pair var t first first comma quote var y end quote pair var t first second comma quote var z end quote pair var t second end tuple end expand state var s cache var c end expand end define end math

end "



\subsection{Proof constructs}

The "

begin math make visible block var b line var l end block var p end visible end math

end " construct puts a parenthesis around the block "

begin math var b end math

end " and places a cut operator between "

begin math var b end math

end " and "

begin math var p end math

end ". The construct is complicated by the line number "

begin math var l end math

end " which should be macro defined locally to denote the conclusion of the block "

begin math var b end math

end ". This is non-trivial since the conclusion is the last line prefixed by all premises, side-conditions, and meta-quantifiers introduced in earlier lines.

\begin{list}{}{
\setlength{\leftmargin}{0em}
\setlength{\itemindent}{0em}
\setlength{\itemsep}{1ex}}

\item "

begin math general macro define block var b line var l end block var p as lambda var t dot lambda var s dot lambda var c dot block one var t state var s cache var c end block end define end math

end "

\item "

begin math value define block one var t state var s cache var c end block as var t tagged guard var s tagged guard var c tagged guard macro newline let var b be state expand var t first state var s cache var c end expand in macro newline let var x be block two var b end block in macro newline let var q be quote expand var t term quote protect let var l abbreviate var x in var p end protect end quote stack tuple quote var l end quote pair var t second comma quote var p end quote pair var t third comma quote var x end quote pair var x end tuple end expand in macro newline let var q be state expand var q state var s cache var c end expand in macro newline quote expand var t term quote var b cut var q end quote stack tuple quote var b end quote pair var b comma quote var q end quote pair var q end tuple end expand end define end math

end "

\item "

begin math value define block two var b end block as macro newline open if var b term root equal quote var x infer var y end quote then quote expand var b term quote var x infer var y end quote stack tuple quote var x end quote pair var b first comma quote var y end quote pair block two var b second end block end tuple end expand else macro newline open if var b term root equal quote var x endorse var y end quote then quote expand var b term quote var x endorse var y end quote stack tuple quote var x end quote pair var b first comma quote var y end quote pair block two var b second end block end tuple end expand else macro newline open if var b term root equal quote for all terms var x indeed var y end quote then quote expand var b term quote for all terms var x indeed var y end quote stack tuple quote var x end quote pair var b first comma quote var y end quote pair block two var b second end block end tuple end expand else macro newline open if var b term root equal quote var x cut var y end quote then block two var b second end block else macro newline open if var b term root equal quote var x conclude var y end quote then var b second else absurdity end define end math

end "

\item "

begin math macro define because var a indeed var i end line as parenthesis var a conclude var i end parenthesis end define end math

end "

\end{list}



\subsection{Modus ponens at the object level}

We shall apply modus ponens to two arguments so often that this idiom deserves its own macro:

"

begin math macro define var x object modus ponens var y as rule mp modus ponens var x modus ponens var y end define end math

end "



\section{Side conditions}

\subsection{Logiweb terms}\label{section:LogiwebTerms}

Metavariables, object terms, statements, and sequent terms are all implemented as Logiweb terms which essentially have the following syntax:

\newcommand{\literal}[1]{\mbox{``#1''}}
\[\begin{array}{lll}

pdigit & ::= & \literal{1} \mathrel{|} \literal{2} \mathrel{|} \literal{3} \mathrel{|} \literal{4} \mathrel{|} \literal{5} \mathrel{|} \literal{6} \mathrel{|} \literal{7} \mathrel{|} \literal{8} \mathrel{|} \literal{9} \\

digit & ::= & \literal{0} \mathrel{|} pdigit \\

positive & ::= & pdigit \mathrel{|} positive \ digit \\

cardinal & ::= & \literal{0} \mathrel{|} positive \\

reference & ::= & cardinal \\

identifier & ::= & cardinal \\

symbol & ::= & \literal{(} \ reference \literal{\mbox {\tt \char32 }} \ identifier \ \literal{)} \\

arglist & ::= & \literal{)} \mathrel{|} \literal{\mbox {\tt \char32 }} \ term \ arglist \\

term & ::= & \literal{(} \ symbol \ arglist \\

\end{array}\]

\noindent The only thing omitted from the syntax is a third element of symbols which contains debugging information. For details on debugging information, consult the \href{\lgwIjcarBaseUrl index.html}{base} page.

Each Logiweb page introduces one or more new constructs. As an example, the present page introduces the binary operation "

begin math var x imply var y end math

end ".

Each Logiweb page has a unique reference, and each construct introduced by a page has an identifier which is unique within the page. Hence, reference and identifier together determine a construct uniquely.



\subsection{Deduction}

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math macro define deduction var p conclude var c end deduction as lambda var x dot deduction zero quote var p end quote conclude quote var c end quote end deduction end define end math

end " \newline True if the premise "

begin math var p end math

end " implies the conclusion "

begin math var c end math

end " according to the deduction rule. The construct quotes its arguments and pass them on to "

begin math deduction zero var p conclude var c end deduction end math

end ". The quoting and the "

begin math lambda var x dot "\cdots" end math

end " makes "

begin math deduction var p conclude var c end deduction end math

end " suited as a side condition. The present side condition ignores "

begin math var x end math

end ". But when a side condition is invoked, it is applied to the cache of the home page of the side condition (the page on which the side condition occurs). That way the side condition gets access to all definitions present on the home page and all pages transitively referenced by the home page. As an example, that has allowed to define an `axiom of definition' in another theory on another Logiweb page in which all value definitions automatically become axiom schemes. This possibility has been excluded from the present paper because of the Ijcar page limitation and because the facility is not particularly useful in Peano arithmetic. It is much more useful in theories that build on lambda calculus.

\item "

begin math value define deduction zero var p conclude var c end deduction as var c tagged guard deduction eight var p bound true end deduction macro and deduction one deduction seven var p end deduction conclude var c condition true end deduction end define end math

end " \newline True if the premise "

begin math var p end math

end " implies the conclusion "

begin math var c end math

end " according to the deduction rule. The function checks the premise for meta-closedness, strips meta-quantifiers from "

begin math var p end math

end " and then calls "

begin math deduction one var p conclude var c condition var s end deduction end math

end " with an empty list "

begin math var s end math

end " of side conditions. The "

begin math var x tagged guard var y end math

end " construct evaluates and discards "

begin math var x end math

end " and then returns "

begin math var y end math

end ". It is included to ensure strictness of "

begin math deduction zero var p conclude var c end deduction end math

end " which in turn increases the efficiency. Some day the present author will define a `strict value definition' operator so that users don't have to add "

begin math var x tagged guard var y end math

end " operators manually. The "

begin math var x tagged guard var y end math

end " construct takes zero CPU-time when used in functions that are `fit' for optimization. See the \href{\lgwIjcarBaseUrl index.html}{base} page for details on `fitness' analysis.

\item "

begin math value define deduction one var p conclude var c condition var s end deduction as open if var c term root equal quote var x endorse var y end quote then deduction one var p conclude var c second condition var c first pair var s end deduction else deduction two var p conclude var c condition var s end deduction end define end math

end " \newline Move side conditions from the conclusion "

begin math var c end math

end " to the list "

begin math var s end math

end ". "

begin math var x term root equal var y end math

end " is true if the terms "

begin math var x end math

end " and "

begin math var y end math

end " have the same root (i.e.\ the same principal operator) so "

begin math var c term root equal quote var x endorse var y end quote end math

end " is true if the principal operator of "

begin math var c end math

end " is an endorsement. "

begin math var c first end math

end " and "

begin math var c second end math

end " are the first and second argument, respectively, of the endorsement.

\item "

begin math value define deduction two var p conclude var c condition var s end deduction as var s tagged guard var p term root equal quote var x infer var y end quote and var c term root equal quote var x imply var y end quote select deduction three var p first conclude var c first condition var s bound true end deduction and deduction two var p second conclude var c second condition var s end deduction else deduction four var p conclude var c condition var s bound deduction six var p conclude var c exception true bound true end deduction end deduction end select end define end math

end " \newline This function is true if the premise "

begin math var p end math

end " is equal to the conclusion "

begin math var c end math

end " except that inferences are replaced by implications. "

begin math open if var x then var y else var z end math

end " and "

begin math var x select var y else var z end select end math

end " express the same conditional construct. Choosing between the two is a purely stylistic choice.

\item "

begin math value define deduction three var p conclude var c condition var s bound var b end deduction as open if not var c term root equal quote for all var x indeed var y end quote then deduction four var p conclude var c condition var s bound var b end deduction else macro newline open if var p term root equal quote for all var x indeed var y end quote and var p first term equal var c first then deduction four var p conclude var c condition var s bound var b end deduction else macro newline deduction three var p conclude var c second condition var s bound parenthesis var c first pair var c first end parenthesis pair var b end deduction end define end math

end " \newline "

begin math deduction three var p conclude var c condition var s bound var b end deduction end math

end " moves quantified variables from the premise "

begin math var p end math

end " to the association list "

begin math var b end math

end " of `bindings'. Each quantified variable "

begin math var x end math

end " is added to "

begin math var b end math

end " as the pair "

begin math var x pair var x end math

end " indicating the "

begin math var x end math

end " should be replaced by "

begin math var x end math

end " (which is a way of saying that the variable cannot be instantiated). Moving of bound variables stops when there are no more bound variables to move or when the premise and conclusion happen to quantify the same variable. In both cases we have reached a point where premise and conclusion should be identical except for instantaition of variables. "

begin math var x term equal var y end math

end " is true if the terms "

begin math var x end math

end " and "

begin math var y end math

end " are identical. Logiweb terms contain debugging information which indicates the precise location each operator before macro expansion. "

begin math var x term equal var y end math

end " ignores this debugging information when it tests two terms for identity.

\item "

begin math value define deduction four var p conclude var c condition var s bound var b end deduction as var s tagged guard var b tagged guard macro newline open if var p term root equal quote object x end quote then lookup var p stack var b default true end lookup term equal var c else macro newline open if not var p term root equal var c then false else macro newline open if var p term root equal quote for all var x indeed var y end quote then var p first term equal var c first and deduction four var p second conclude var c second condition var s bound parenthesis var p first pair var p first end parenthesis pair var b end deduction else macro newline open if not var p term root equal quote meta x end quote then deduction four star var p tail conclude var c tail condition var s bound var b end deduction else macro newline var p first term equal var c first and deduction five var p condition var s bound var b end deduction end define end math

end " \newline Test that the premise "

begin math var p end math

end " is identical to the conclusion "

begin math var c end math

end " except for instantiation of object variables as specified by the association list "

begin math var b end math

end ". A term is an object variable if the root of the term is the `object variable operator'. For that reason, one can test whether or not a variable is an object variable by comparing its root to the root of an arbitrary object variable. For each meta variable, check that there are side conditions which ensure that the meta variables denote terms whose free object variables do not get caught in the context. Meta variables are recognized the same way as object variables. The object variable "

begin math object x end math

end " and the meta variable "

begin math meta x end math

end " macro expand into "

begin math object var var x end var end math

end " and "

begin math metavar var x end metavar end math

end ", respectively, adding the object and meta variable operator, respectively, to the term "

begin math var x end math

end ". The term "

begin math var x end math

end " is neither an object nor a meta variable. "

begin math var x end math

end " is a Logiweb programming language variable because no Logiweb definition assigns a value to it.

\item "

begin math value define deduction four star var p conclude var c condition var s bound var b end deduction as var c tagged guard var s tagged guard var b tagged guard open if var p then true else deduction four var p head conclude var c head condition var s bound var b end deduction and deduction four star var p tail conclude var c tail condition var s bound var b end deduction end define end math

end " \newline Elementwise application of "

begin math deduction four var p conclude var c condition var s bound var b end deduction end math

end ". "

begin math var x head end math

end " and "

begin math var x tail end math

end " denote the head and tail, respectively, of the pair "

begin math var x end math

end ". Terms are represented as lists comprising the principal operator followed by arguments just like Lisp S-expressions. The principal operator in turn is a list whose first two elements are cardinals that identify the operator followed by debugging information.

\item "

begin math value define deduction five var p condition var s bound var b end deduction as var p tagged guard var s tagged guard open if var b then true else macro newline tuple quote var x avoid var y end quote head comma tuple quote quote x end quote end quote head comma var b head head end tuple comma tuple quote quote var x end quote end quote head comma var p end tuple end tuple term in var s and deduction five var p condition var s bound var b tail end deduction end define end math

end " \newline For each variable that is bound in the context according to the association list "

begin math var b end math

end ", check that the list "

begin math var s end math

end " of side conditions ensures that the meta variables "

begin math var p end math

end " denotes a term whose free variables do not get caught in the context. "

begin math var x term in var y end math

end " is true if the term "

begin math var x end math

end " belongs to the list "

begin math var y end math

end " of terms.

\item "

begin math value define deduction six var p conclude var c exception var e bound var b end deduction as var p tagged guard var c tagged guard var b tagged guard var e tagged guard macro newline open if var p term root equal quote object x end quote then var p term in var e select var b else parenthesis var p pair var c end parenthesis pair var b end select else macro newline open if not var p term root equal var c then true else macro newline open if var p term root equal quote meta a end quote then var b else macro newline open if var p term root equal quote for all var x indeed var y end quote then deduction six var p second conclude var c second exception var c first pair var e bound var b end deduction else macro newline deduction six star var p tail conclude var c tail exception var e bound var b end deduction end define end math

end "

\item "

begin math value define deduction six star var p conclude var c exception var e bound var b end deduction as var p tagged guard var c tagged guard var b tagged guard var e tagged guard open if var p then var b else deduction six star var p tail conclude var c tail exception var e bound deduction six var p head conclude var c head exception var e bound var b end deduction end deduction end define end math

end " \newline Elementwise application of "

begin math deduction six var p conclude var c exception var e bound var b end deduction end math

end ".

\item "

begin math value define deduction seven var p end deduction as var p term root equal quote for all terms var x indeed var y end quote select deduction seven var p second end deduction else var p end select end define end math

end " \newline Removal of all metaquantifiers.

\item "

begin math value define deduction eight var p bound var b end deduction as macro newline open if var p term root equal quote for all terms var x indeed var y end quote then deduction eight var p second bound var p first pair var b end deduction else macro newline open if var p term root equal quote meta a end quote then var p term in var b else deduction eight var p tail bound var b end deduction end define end math

end " \newline True if all free meta variables of "

begin math var p end math

end " occur in the list "

begin math var b end math

end " of meta variables.

\item "

begin math value define deduction eight var p bound var b end deduction as var b tagged guard open if var p then true else deduction eight var p head bound var b end deduction macro and deduction eight var p tail bound var b end deduction end define end math

end " \newline Elementwise application of "

begin math deduction eight var p bound var b end deduction end math

end ".

\end{list}



\subsection{Avoidance}

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math value define var x is object var as var x term root equal quote object var var x end var end quote end define end math

end "

\item "

begin math macro define var x avoid var y as quote var x end quote avoid zero quote var y end quote end define end math

end "

\item "

begin math value define var x avoid zero var y as lambda var c dot var x is object var and var y is metaclosed and var x avoid one var y end define end math

end "

\item "

begin math value define var x avoid one var y as open if var y is object var then not var x term equal var y else newline open if not var y term root equal quote for all var x indeed var y end quote then parenthesis var x avoid star var y tail end parenthesis else newline open if var x term equal var y first then true else parenthesis var x avoid one var y second end parenthesis end define end math

end "

\item "

begin math value define var x avoid star var y as var x tagged guard tagged if var y then true else parenthesis var x avoid one var y head end parenthesis macro and parenthesis var x avoid star var y tail end parenthesis end if end define end math

end "

\end{list}



\subsection{Substition}

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math macro define sub var a is var b where var x is var t end sub as sub zero quote var a end quote is quote var b end quote where quote var x end quote is quote var t end quote end sub end define end math

end "

\item "

begin math value define sub zero var a is var b where var x is var t end sub as lambda var c dot var x is object var and sub one var a is var b where var x is var t end sub end define end math

end "

\item "

begin math value define sub one var a is var b where var x is var t end sub as var a tagged guard var x tagged guard var t tagged guard newline open if var b term root equal quote for all var u indeed var v end quote macro and var b first term equal var x then var a term equal var b else newline open if var b is object var and var b term equal var x then var a term equal var t else newline var a term root equal var b macro and sub star var a tail is var b tail where var x is var t end sub end define end math

end "

\item "

begin math value define sub star var a is var b where var x is var t end sub as var b tagged guard var x tagged guard var t tagged guard tagged if var a then true else sub one var a head is var b head where var x is var t end sub macro and sub star var a tail is var b tail where var x is var t end sub end if end define end math

end "

\end{list}



\section{Proofs}

\subsection{Proofs of FOL axioms using the inference of deduction}

We now prove axiom schemes A1 and A2 from \cite{mendelson}. Furthermore, we prove two, particular instances of A4 and A5 in a way that generalizes to arbitrary instances of those axiom schemes.

Furthermore, we prove a "

begin math repetition end math

end " lemma which says "

begin math for all terms meta a indeed meta a infer meta a end math

end " by a `hand made proof', i.e.\ by giving a proof metatactic explicitly which generates the sequent proof.

A page is verified by a top level verifier. The top level verifier of the present page is defined on the \href{\lgwIjcarBaseUrl index.html}{base} page. That verifier invokes, among other, a proof verifier. The proof verifier invokes each proof (where each proof is supposed to be a proof metatactic). When it does so, it applies the proof metatactic to a Logiweb cache "

begin math var c end math

end " and a pair "

begin math var n pair var l end math

end ". The cache "

begin math var c end math

end " is the Logiweb cache of the home page of the proof, i.e.\ a structure which contains all definitions present on the home page plus all transitively referenced Logiweb pages. "

begin math var n end math

end " is the identifier of the lemma (a cardinal which identifies the lemma uniquely within the home page) plus the contents of the lemma. The proof metatactic given below for proving "

begin math repetition end math

end " ignores both arguments and just constructs a sequent term that proves "

begin math for all terms meta a indeed meta a infer meta a end math

end ". All other proofs in the present paper macro expand into proofs that are proved by a metatactic which scans the proof for object tactics and invokes those object tactics. The only object tactic used is named $\gg$ and does unification.

\begin{list}{}{
\setlength{\leftmargin}{0em}
\setlength{\itemindent}{0em}}

\item "

begin math in theory system s lemma repetition says for all terms meta a indeed meta a infer meta a end lemma end math

end "

\item "

begin math in theory system s lemma lemma a one says for all terms meta a comma meta b indeed meta a imply meta b imply meta a end lemma end math

end "

\item "

begin math in theory system s lemma lemma a two says for all terms meta a comma meta b comma meta c indeed parenthesis meta a imply meta b imply meta c end parenthesis imply parenthesis meta a imply meta b end parenthesis imply meta a imply meta c end lemma end math

end "

\item "

begin math in theory system s lemma lemma a four says for all object x comma object y indeed object x plus object y equal object y plus object x imply two plus three equal three plus two end lemma end math

end "

\item "

begin math in theory system s lemma lemma a five says for all object x indeed parenthesis two plus three equal five imply two plus three plus object x equal five plus object x end parenthesis imply two plus three equal five imply for all object x indeed two plus three plus object x equal five plus object x end lemma end math

end "

\end{list}

\begin{list}{}{
\setlength{\leftmargin}{0em}
\setlength{\itemindent}{0em}
\setlength{\itemsep}{1ex}}

\item "

begin math proof of repetition reads lambda var c dot lambda var x dot quote system s infer for all terms meta a indeed meta a init end quote end proof end math

end "

\item "

begin math system s proof of lemma a one reads any term meta a comma meta b end line block any term macro indent meta a comma meta b end line line ell a premise macro indent meta a end line line ell b premise macro indent meta b end line because repetition modus ponens ell a indeed macro indent meta a end line line ell c end block because deduction modus ponens ell c indeed meta a imply meta b imply meta a qed end math

end "

\item "

begin math system s proof of lemma a two reads any term meta a comma meta b comma meta c end line block any term macro indent meta a comma meta b comma meta c end line line ell a premise macro indent meta a imply meta b imply meta c end line line ell b premise macro indent meta a imply meta b end line line ell c premise macro indent meta a end line line ell d because ell b object modus ponens ell c indeed macro indent meta b end line line ell f because ell a object modus ponens ell c indeed macro indent meta b imply meta c end line because ell f object modus ponens ell d indeed macro indent meta c end line line ell e end block because deduction modus ponens ell e indeed parenthesis meta a imply meta b imply meta c end parenthesis imply parenthesis meta a imply meta b end parenthesis imply meta a imply meta c qed end math

end "

\item "

begin math system s proof of lemma a four reads block line ell a premise macro indent object x plus object y equal object y plus object x end line because repetition modus ponens ell a indeed macro indent object x plus object y equal object y plus object x end line line ell b end block because deduction modus ponens ell b indeed for all object x indeed for all object y indeed object x plus object y equal object y plus object x imply two plus three equal three plus two qed end math

end "

\item "

begin math system s proof of lemma a five reads block line ell a premise macro indent two plus three equal five imply two plus three plus object x equal five plus object x end line line ell b premise macro indent two plus three equal five end line line ell c because ell a object modus ponens ell b indeed macro indent two plus three plus object x equal five plus object x end line because rule gen modus ponens ell c indeed macro indent for all object x indeed two plus three plus object x equal five plus object x end line line ell d end block because deduction modus ponens ell d indeed for all object x indeed parenthesis two plus three equal five imply two plus three plus object x equal five plus object x end parenthesis imply two plus three equal five imply for all object x indeed two plus three plus object x equal five plus object x qed end math

end "

\end{list}



\subsection{A proof of "

begin math var x plus var y equal var y plus var x end math

end "}

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math in theory system s lemma prop three two a says for all terms meta a indeed meta a equal meta a end lemma end math

end "

\item "

begin math in theory system s lemma prop three two b says for all terms meta a comma meta b indeed meta a equal meta b infer meta b equal meta a end lemma end math

end "

\item "

begin math in theory system s lemma prop three two c says for all terms meta a comma meta b comma meta c indeed meta a equal meta b infer meta b equal meta c infer meta a equal meta c end lemma end math

end "

\item "

begin math in theory system s lemma prop three two d says for all terms meta a comma meta b comma meta c indeed meta a equal meta c infer meta b equal meta c infer meta a equal meta b end lemma end math

end "

\item "

begin math in theory system s lemma prop three two e says for all terms meta a comma meta b comma meta c indeed meta a equal meta b infer meta a plus meta c equal meta b plus meta c end lemma end math

end "

\item "

begin math in theory system s lemma prop three two f says for all terms meta a indeed meta a equal zero plus meta a end lemma end math

end "

\item "

begin math in theory system s lemma prop three two g says for all terms meta a comma meta b indeed meta a suc plus meta b equal parenthesis meta a plus meta b end parenthesis suc end lemma end math

end "

\item "

begin math in theory system s lemma prop three two h says for all terms meta a comma meta b indeed meta a plus meta b equal meta b plus meta a end lemma end math

end "

\end{list}



\begin{list}{}{
\setlength{\leftmargin}{0em}
\setlength{\itemindent}{0em}
\setlength{\itemsep}{1ex}}

\item "

begin math system s proof of prop three two a reads any term meta a end line line ell a because axiom s five indeed meta a plus zero equal meta a end line because axiom s one modus ponens ell a modus ponens ell a indeed meta a equal meta a qed end math

end "



\item "

begin math system s proof of prop three two b reads any term meta a comma meta b end line line ell a premise meta a equal meta b end line line ell b because prop three two a indeed meta a equal meta a end line because axiom s one modus ponens ell a modus ponens ell b indeed meta b equal meta a qed end math

end "



\item "

begin math system s proof of prop three two c reads any term meta a comma meta b comma meta c end line line ell a premise meta a equal meta b end line line ell b premise meta b equal meta c end line line ell c because prop three two b modus ponens ell a indeed meta b equal meta a end line because axiom s one modus ponens ell c modus ponens ell b indeed meta a equal meta c qed end math

end "



\item "

begin math system s proof of prop three two d reads any term meta a comma meta b comma meta c end line line ell a premise meta a equal meta c end line line ell b premise meta b equal meta c end line line ell c because prop three two b modus ponens ell b indeed meta c equal meta b end line because prop three two c modus ponens ell a modus ponens ell c indeed meta a equal meta b qed end math

end "



\item "

begin math in theory system s lemma prop three two e one says for all terms meta a comma meta b indeed meta a equal meta b imply meta a plus zero equal meta b plus zero end lemma end math

end "



\item "

begin math system s proof of prop three two e one reads any term meta a comma meta b end line block any term macro indent meta a comma meta b end line line ell a premise macro indent meta a equal meta b end line line ell b because axiom s five indeed macro indent meta a plus zero equal meta a end line line ell c because prop three two c modus ponens ell b modus ponens ell a indeed macro indent meta a plus zero equal meta b end line line ell d because axiom s five indeed macro indent meta b plus zero equal meta b end line because prop three two d modus ponens ell c modus ponens ell d indeed macro indent meta a plus zero equal meta b plus zero end line line ell e end block because deduction modus ponens ell e indeed meta a equal meta b imply meta a plus zero equal meta b plus zero qed end math

end "



\item "

begin math in theory system s lemma prop three two e two says for all terms meta a comma meta b comma meta c indeed parenthesis meta a equal meta b imply meta a plus meta c equal meta b plus meta c end parenthesis imply parenthesis meta a equal meta b imply meta a plus meta c suc equal meta b plus meta c suc end parenthesis end lemma end math

end "



\item "

begin math system s proof of prop three two e two reads any term meta a comma meta b comma meta c end line block any term macro indent meta a comma meta b comma meta c end line line ell a premise macro indent meta a equal meta b imply meta a plus meta c equal meta b plus meta c end line line ell b premise macro indent meta a equal meta b end line line ell c because ell a object modus ponens ell b indeed macro indent meta a plus meta c equal meta b plus meta c end line line ell d because axiom s two modus ponens ell c indeed macro indent parenthesis meta a plus meta c end parenthesis suc equal parenthesis meta b plus meta c end parenthesis suc end line line ell e because axiom s six indeed macro indent meta a plus meta c suc equal parenthesis meta a plus meta c end parenthesis suc end line line ell f because prop three two c modus ponens ell e modus ponens ell d indeed macro indent meta a plus meta c suc equal parenthesis meta b plus meta c end parenthesis suc end line line ell g because axiom s six indeed macro indent meta b plus meta c suc equal parenthesis meta b plus meta c end parenthesis suc end line because prop three two d modus ponens ell f modus ponens ell g indeed macro indent meta a plus meta c suc equal meta b plus meta c suc end line line ell h end block because deduction modus ponens ell h indeed parenthesis meta a equal meta b imply meta a plus meta c equal meta b plus meta c end parenthesis imply meta a equal meta b imply meta a plus meta c suc equal meta b plus meta c suc qed end math

end "



\item "

begin math system s proof of prop three two e reads any term meta a comma meta b comma meta c end line line ell d premise meta a equal meta b end line block line ell a because prop three two e one indeed macro indent object x equal object y imply object x plus zero equal object y plus zero end line line ell b because prop three two e two indeed macro indent parenthesis object x equal object y imply object x plus object z equal object y plus object z end parenthesis imply parenthesis object x equal object y imply object x plus object z suc equal object y plus object z suc end parenthesis end line because axiom s nine at object z modus ponens ell a modus ponens ell b indeed macro indent object x equal object y imply object x plus object z equal object y plus object z end line line ell c end block line ell e because deduction modus ponens ell c indeed meta a equal meta b imply meta a plus meta c equal meta b plus meta c end line because ell e object modus ponens ell d indeed meta a plus meta c equal meta b plus meta c qed end math

end "



\item "

begin math in theory system s lemma prop three two f one says zero equal zero plus zero end lemma end math

end "



\item "

begin math system s proof of prop three two f one reads line ell a because axiom s five indeed zero plus zero equal zero end line because prop three two b modus ponens ell a indeed zero equal zero plus zero qed end math

end "



\item "

begin math in theory system s lemma prop three two f two says for all terms meta a indeed meta a equal zero plus meta a imply meta a suc equal zero plus meta a suc end lemma end math

end "



\item "

begin math system s proof of prop three two f two reads any term meta a end line block any term macro indent meta a end line line ell a premise macro indent meta a equal zero plus meta a end line line ell b because axiom s two modus ponens ell a indeed macro indent meta a suc equal parenthesis zero plus meta a end parenthesis suc end line line ell c because axiom s six indeed macro indent zero plus meta a suc equal parenthesis zero plus meta a end parenthesis suc end line because prop three two d modus ponens ell b modus ponens ell c indeed macro indent meta a suc equal zero plus meta a suc end line line ell d end block because deduction modus ponens ell d indeed meta a equal zero plus meta a imply meta a suc equal zero plus meta a suc qed end math

end "



\item "

begin math system s proof of prop three two f reads any term meta a end line block line ell a because prop three two f one indeed macro indent zero equal zero plus zero end line line ell b because prop three two f two indeed macro indent object x equal zero plus object x imply object x suc equal zero plus object x suc end line because axiom s nine at object x modus ponens ell a modus ponens ell b indeed macro indent object x equal zero plus object x end line line ell c end block because deduction modus ponens ell c indeed meta a equal zero plus meta a qed end math

end "



\item "

begin math in theory system s lemma prop three two g one says for all terms meta a indeed meta a suc plus zero equal parenthesis meta a plus zero end parenthesis suc end lemma end math

end "



\item "

begin math system s proof of prop three two g one reads any term meta a end line line ell a because axiom s five indeed meta a suc plus zero equal meta a suc end line line ell b because axiom s five indeed meta a plus zero equal meta a end line line ell c because axiom s two modus ponens ell b indeed parenthesis meta a plus zero end parenthesis suc equal meta a suc end line because prop three two d modus ponens ell a modus ponens ell c indeed meta a suc plus zero equal parenthesis meta a plus zero end parenthesis suc qed end math

end "



\item "

begin math in theory system s lemma prop three two g two says for all terms meta a comma meta b indeed meta a suc plus meta b equal parenthesis meta a plus meta b end parenthesis suc imply meta a suc plus meta b suc equal parenthesis meta a plus meta b suc end parenthesis suc end lemma end math

end "



\item "

begin math system s proof of prop three two g two reads any term meta a comma meta b end line block any term macro indent meta a comma meta b end line line ell a premise macro indent meta a suc plus meta b equal parenthesis meta a plus meta b end parenthesis suc end line line ell b because axiom s two modus ponens ell a indeed macro indent parenthesis meta a suc plus meta b end parenthesis suc equal parenthesis meta a plus meta b end parenthesis suc suc end line line ell c because axiom s six indeed macro indent meta a suc plus meta b suc equal parenthesis meta a suc plus meta b end parenthesis suc end line line ell d because prop three two c modus ponens ell c modus ponens ell b indeed macro indent meta a suc plus meta b suc equal parenthesis meta a plus meta b end parenthesis suc suc end line line ell e because axiom s six indeed macro indent meta a plus meta b suc equal parenthesis meta a plus meta b end parenthesis suc end line line ell f because axiom s two modus ponens ell e indeed macro indent parenthesis meta a plus meta b suc end parenthesis suc equal parenthesis meta a plus meta b end parenthesis suc suc end line because prop three two d modus ponens ell d modus ponens ell f indeed macro indent meta a suc plus meta b suc equal parenthesis meta a plus meta b suc end parenthesis suc end line line ell g end block because deduction modus ponens ell g indeed meta a suc plus meta b equal parenthesis meta a plus meta b end parenthesis suc imply meta a suc plus meta b suc equal parenthesis meta a plus meta b suc end parenthesis suc qed end math

end "



\item "

begin math system s proof of prop three two g reads any term meta a comma meta b end line block line ell a because prop three two g one indeed macro indent object x suc plus zero equal parenthesis object x plus zero end parenthesis suc end line line ell b because prop three two g two indeed macro indent object x suc plus object y equal parenthesis object x plus object y end parenthesis suc imply object x suc plus object y suc equal parenthesis object x plus object y suc end parenthesis suc end line because axiom s nine at object y modus ponens ell a modus ponens ell b indeed macro indent object x suc plus object y equal parenthesis object x plus object y end parenthesis suc end line line ell e end block because deduction modus ponens ell e indeed meta a suc plus meta b equal parenthesis meta a plus meta b end parenthesis suc qed end math

end "



\item "

begin math in theory system s lemma prop three two h one says for all terms meta a indeed meta a plus zero equal zero plus meta a end lemma end math

end "



\item "

begin math system s proof of prop three two h one reads any term meta a end line line ell a because axiom s five indeed meta a plus zero equal meta a end line line ell b because prop three two f indeed meta a equal zero plus meta a end line because prop three two c modus ponens ell a modus ponens ell b indeed meta a plus zero equal zero plus meta a qed end math

end "



\item "

begin math in theory system s lemma prop three two h two says for all terms meta a comma meta b indeed meta a plus meta b equal meta b plus meta a imply meta a plus meta b suc equal meta b suc plus meta a end lemma end math

end "



\item "

begin math system s proof of prop three two h two reads any term meta a comma meta b end line block any term macro indent meta a comma meta b end line line ell a premise macro indent meta a plus meta b equal meta b plus meta a end line line ell b because axiom s two modus ponens ell a indeed macro indent parenthesis meta a plus meta b end parenthesis suc equal parenthesis meta b plus meta a end parenthesis suc end line line ell c because axiom s six indeed macro indent meta a plus meta b suc equal parenthesis meta a plus meta b end parenthesis suc end line line ell d because prop three two c modus ponens ell c modus ponens ell b indeed macro indent meta a plus meta b suc equal parenthesis meta b plus meta a end parenthesis suc end line line ell e because prop three two g indeed macro indent meta b suc plus meta a equal parenthesis meta b plus meta a end parenthesis suc end line because prop three two d modus ponens ell d modus ponens ell e indeed macro indent meta a plus meta b suc equal meta b suc plus meta a end line line ell f end block because deduction modus ponens ell f indeed meta a plus meta b equal meta b plus meta a imply meta a plus meta b suc equal meta b suc plus meta a qed end math

end "



\item "

begin math system s proof of prop three two h reads any term meta a comma meta b end line block line ell a because prop three two h one indeed macro indent object x plus zero equal zero plus object x end line line ell b because prop three two h two indeed macro indent object x plus object y equal object y plus object x imply object x plus object y suc equal object y suc plus object x end line because axiom s nine at object y modus ponens ell a modus ponens ell b indeed macro indent object x plus object y equal object y plus object x end line line ell c end block because deduction modus ponens ell c indeed meta a plus meta b equal meta b plus meta a qed end math

end "

\end{list}



%------------------------------------------------------------------------------
\bibliographystyle{alpha}
\bibliography{./page}
%------------------------------------------------------------------------------
\everymath{}
\everydisplay{}

\end{document}
End of file
latex appendix
bibtex appendix
latex appendix
latex appendix
dvipdfm appendix
File chores.tex
\documentclass [fleqn]{article}

\everymath{\rm}
\usepackage{latexsym}
\setlength {\overfullrule }{0mm}
\input{lgwinclude}

\usepackage{url}
\usepackage[dvipdfm=true]{hyperref}
\hypersetup{pdfpagemode=none}
\hypersetup{pdfstartpage=1}
\hypersetup{pdfstartview=FitBH}
\hypersetup{pdfpagescrop={120 130 490 730}}
\hypersetup{pdftitle=Logiweb sequent calculus - Chores}
\hypersetup{colorlinks=true}

\begin {document}



\title {Logiweb sequent calculus, Chores}
\author {Klaus Grue}
\date {\today}
\maketitle
\tableofcontents

\section{Test cases}

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math test parenthesis object x avoid object y equal object z imply for all object x indeed object x equal object y end parenthesis apply ijcar end test end math

end "

\item "

begin math false test parenthesis object x avoid object x equal object z imply for all object x indeed object x equal object y end parenthesis apply ijcar end test end math

end "

\item "

begin math false test parenthesis object x avoid object y equal object x imply for all object x indeed object x equal object y end parenthesis apply ijcar end test end math

end "

\item "

begin math false test parenthesis object x avoid object y equal object z imply for all object y indeed object x equal object y end parenthesis apply ijcar end test end math

end "

\item "

begin math test sub object a is object a where object b is object c end sub apply ijcar end test end math

end "

\item "

begin math false test sub object b is object a where object b is object c end sub apply ijcar end test end math

end "

\item "

begin math false test sub object c is object a where object b is object c end sub apply ijcar end test end math

end "

\item "

begin math false test sub object a is object b where object b is object c end sub apply ijcar end test end math

end "

\item "

begin math false test sub object b is object b where object b is object c end sub apply ijcar end test end math

end "

\item "

begin math test sub object c is object b where object b is object c end sub apply ijcar end test end math

end "

\item "

begin math test sub for all object a indeed object a equal object b is for all object a indeed object a equal object b where object a is object c end sub apply ijcar end test end math

end "

\item "

begin math test sub for all object a indeed object a equal object c is for all object a indeed object a equal object b where object b is object c end sub apply ijcar end test end math

end "

\item "

begin math test sub for all object a indeed object a equal zero plus object a imply object c times object d equal zero plus object c times object d is for all object a indeed object a equal zero plus object a imply object b equal zero plus object b where object b is object c times object d end sub apply ijcar end test end math

end "

\item "

begin math test sub for all object a indeed object a equal zero plus object a imply object b equal zero plus object b is for all object a indeed object a equal zero plus object a imply object b equal zero plus object b where object a is object c end sub apply ijcar end test end math

end "

\item "

begin math test deduction zero conclude zero end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction zero conclude one end deduction apply ijcar end test end math

end "

\item "

begin math test deduction eight quote for all terms meta a indeed meta a end quote bound true end deduction end test end math

end "

\item "

begin math test deduction seven quote for all terms meta a indeed meta a end quote end deduction term equal quote meta a end quote end test end math

end "

\item "

begin math test deduction for all terms meta a indeed meta a conclude meta a end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction meta a conclude meta b end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction for all terms meta a indeed meta a conclude meta b end deduction apply ijcar end test end math

end "

\item "

begin math test deduction for all terms meta a comma meta b indeed meta a infer meta b conclude meta a imply meta b end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction for all terms meta a comma meta b indeed meta a infer meta b conclude meta a imply meta a end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction for all terms meta a comma meta b indeed meta a infer meta b conclude meta b imply meta b end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction for all terms meta a comma meta b indeed meta a infer meta b conclude zero end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction zero conclude meta a imply meta a end deduction apply ijcar end test end math

end "

\item "

begin math test deduction for all terms meta a comma meta b comma meta c indeed meta a infer meta b infer meta c conclude meta a imply meta b imply meta c end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction for all terms meta a comma meta b indeed meta a infer meta b infer meta a conclude meta a imply meta b imply meta c end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction for all terms meta a comma meta b comma meta c indeed parenthesis meta a infer meta b end parenthesis infer meta c conclude parenthesis meta a imply meta b end parenthesis imply meta c end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction zero conclude object x end deduction apply ijcar end test end math

end "

\item "

begin math test deduction object x conclude zero end deduction apply ijcar end test end math

end "

\item "

begin math test deduction object x conclude object x end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction for all object x indeed object x conclude object x end deduction apply ijcar end test end math

end "

\item "

begin math test deduction object x conclude for all object y indeed object z end deduction apply ijcar end test end math

end "

\item "

begin math test deduction for all object x indeed object x conclude for all object x indeed object x end deduction apply ijcar end test end math

end "

\item "

begin math test deduction zero infer zero conclude zero imply zero end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x infer zero conclude zero imply zero end deduction apply ijcar end test end math

end "

\item "

begin math test deduction zero infer object x conclude zero imply zero end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x infer object x conclude zero imply zero end deduction apply ijcar end test end math

end "

\item "

begin math test deduction zero infer zero conclude for all object x indeed zero imply zero end deduction apply ijcar end test end math

end "

\item "

begin math test deduction object x infer zero conclude for all object x indeed object x imply zero end deduction apply ijcar end test end math

end "

\item "

begin math test deduction zero infer object x conclude for all object x indeed zero imply object x end deduction apply ijcar end test end math

end "

\item "

begin math test deduction object x infer object x conclude for all object x indeed object x imply object x end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction zero infer zero conclude zero imply for all object x indeed zero end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x infer zero conclude zero imply for all object x indeed zero end deduction apply ijcar end test end math

end "

\item "

begin math test deduction zero infer object x conclude zero imply for all object y indeed object z end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x infer object x conclude zero imply for all object x indeed object x end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction zero infer zero conclude for all object x indeed zero imply for all object x indeed zero end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x infer zero conclude for all object x indeed object x imply for all object x indeed zero end deduction apply ijcar end test end math

end "

\item "

begin math test deduction zero infer object x conclude for all object x indeed zero imply two end deduction apply ijcar end test end math

end "

\item "

begin math test deduction object x infer object x conclude for all object x indeed object x imply three end deduction apply ijcar end test end math

end "

\item "

begin math test deduction object x plus object y equal object y plus object x conclude two plus three equal three plus two end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x plus object y equal object y plus object x conclude two plus three equal two plus three end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x plus object y equal object y plus object x conclude two plus three equal two plus two end deduction apply ijcar end test end math

end "

\item "

begin math false test deduction object x plus object y equal object y plus object x conclude two plus three equal three plus three end deduction apply ijcar end test end math

end "

\end{list}



\section{Pyk definitions}

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math pyk define general macro define var x as var y end define as "general macro define * as * end define" end define end math

end "

\item "

begin math pyk define make root visible var x end visible as "make root visible * end visible" end define end math

end "

\item "

begin math pyk define ijcar as "ijcar" end define end math

end "

\item "

begin math pyk define var x hide as "* hide" end define end math

end "

\item "

begin math pyk define var x suc as "* suc" end define end math

end "

\item "

begin math pyk define var x equal var y as "* equal *" end define end math

end "

\item "

begin math pyk define var x unequal var y as "* unequal *" end define end math

end "

\item "

begin math pyk define var x imply var y as "* imply *" end define end math

end "

\item "

begin math pyk define var x if and only if var y as "* if and only if *" end define end math

end "

\item "

begin math pyk define var x alternative var y as "* alternative *" end define end math

end "

\item "

begin math pyk define exist var x indeed var y as "exist * indeed *" end define end math

end "

\item "

begin math pyk define for all var x indeed var y as "for all * indeed *" end define end math

end "

\item "

begin math pyk define for all objects var x indeed var y as "for all objects * indeed *" end define end math

end "

\item "

begin math pyk define for all terms var x indeed var y as "for all terms * indeed *" end define end math

end "

\item "

begin math pyk define any term var i end line var p as "any term * end line *" end define end math

end "

\item "

begin math pyk define var x safe row var y as "* safe row *" end define end math

end "

\item "

begin math pyk define ijcar example axiom as "ijcar example axiom" end define end math

end "

\item "

begin math pyk define ijcar example rule as "ijcar example rule" end define end math

end "

\item "

begin math pyk define ijcar example contradiction as "ijcar example contradiction" end define end math

end "

\item "

begin math pyk define ijcar example theory as "ijcar example theory" end define end math

end "

\item "

begin math pyk define ijcar example lemma as "ijcar example lemma" end define end math

end "

\item "

begin math pyk define set var x end set as "set * end set" end define end math

end "

\item "

begin math pyk define system s as "system s" end define end math

end "

\item "

begin math pyk define double negation as "double negation" end define end math

end "

\item "

begin math pyk define axiom s one as "axiom s one" end define end math

end "

\item "

begin math pyk define axiom s two as "axiom s two" end define end math

end "

\item "

begin math pyk define axiom s three as "axiom s three" end define end math

end "

\item "

begin math pyk define axiom s four as "axiom s four" end define end math

end "

\item "

begin math pyk define axiom s five as "axiom s five" end define end math

end "

\item "

begin math pyk define axiom s six as "axiom s six" end define end math

end "

\item "

begin math pyk define axiom s seven as "axiom s seven" end define end math

end "

\item "

begin math pyk define axiom s eight as "axiom s eight" end define end math

end "

\item "

begin math pyk define axiom s nine as "axiom s nine" end define end math

end "

\item "

begin math pyk define rule mp as "rule mp" end define end math

end "

\item "

begin math pyk define rule gen as "rule gen" end define end math

end "

\item "

begin math pyk define deduction as "deduction" end define end math

end "

\item "

begin math pyk define repetition as "repetition" end define end math

end "

\item "

begin math pyk define lemma a one as "lemma a one" end define end math

end "

\item "

begin math pyk define lemma a two as "lemma a two" end define end math

end "

\item "

begin math pyk define lemma a four as "lemma a four" end define end math

end "

\item "

begin math pyk define lemma a five as "lemma a five" end define end math

end "

\item "

begin math pyk define var x is object var as "* is object var" end define end math

end "

\item "

begin math pyk define var x avoid var y as "* avoid *" end define end math

end "

\item "

begin math pyk define var x avoid zero var y as "* avoid zero *" end define end math

end "

\item "

begin math pyk define var x avoid one var y as "* avoid one *" end define end math

end "

\item "

begin math pyk define var x avoid star var y as "* avoid star *" end define end math

end "

\item "

begin math pyk define sub var x is var y where var z is var u end sub as "sub * is * where * is * end sub" end define end math

end "

\item "

begin math pyk define sub zero var x is var y where var z is var u end sub as "sub zero * is * where * is * end sub" end define end math

end "

\item "

begin math pyk define sub one var x is var y where var z is var u end sub as "sub one * is * where * is * end sub" end define end math

end "

\item "

begin math pyk define sub star var x is var y where var z is var u end sub as "sub star * is * where * is * end sub" end define end math

end "

\item "

begin math pyk define deduction var x conclude var y end deduction as "deduction * conclude * end deduction" end define end math

end "

\item "

begin math pyk define deduction zero var x conclude var y end deduction as "deduction zero * conclude * end deduction" end define end math

end "

\item "

begin math pyk define deduction one var x conclude var y condition var z end deduction as "deduction one * conclude * condition * end deduction" end define end math

end "

\item "

begin math pyk define deduction two var x conclude var y condition var z end deduction as "deduction two * conclude * condition * end deduction" end define end math

end "

\item "

begin math pyk define deduction three var x conclude var y condition var z bound var u end deduction as "deduction three * conclude * condition * bound * end deduction" end define end math

end "

\item "

begin math pyk define deduction four var x conclude var y condition var z bound var u end deduction as "deduction four * conclude * condition * bound * end deduction" end define end math

end "

\item "

begin math pyk define deduction four star var x conclude var y condition var z bound var u end deduction as "deduction four star * conclude * condition * bound * end deduction" end define end math

end "

\item "

begin math pyk define deduction five var x condition var y bound var z end deduction as "deduction five * condition * bound * end deduction" end define end math

end "

\item "

begin math pyk define deduction six var p conclude var c exception var e bound var b end deduction as "deduction six * conclude * exception * bound * end deduction" end define end math

end "

\item "

begin math pyk define deduction six star var p conclude var c exception var e bound var b end deduction as "deduction six star * conclude * exception * bound * end deduction" end define end math

end "

\item "

begin math pyk define deduction seven var p end deduction as "deduction seven * end deduction" end define end math

end "

\item "

begin math pyk define deduction eight var p bound var b end deduction as "deduction eight * bound * end deduction" end define end math

end "

\item "

begin math pyk define deduction eight var p bound var b end deduction as "deduction eight * bound * end deduction" end define end math

end "

\item "

begin math pyk define block var b line var l end block var p as "block * line * end block *" end define end math

end "

\item "

begin math pyk define because var l indeed var i end line as "because * indeed * end line" end define end math

end "

\item "

begin math pyk define var x object modus ponens var y as "* object modus ponens *" end define end math

end "

\item "

begin math pyk define prop three two a as "prop three two a" end define end math

end "

\item "

begin math pyk define prop three two b as "prop three two b" end define end math

end "

\item "

begin math pyk define prop three two c as "prop three two c" end define end math

end "

\item "

begin math pyk define prop three two d as "prop three two d" end define end math

end "

\item "

begin math pyk define prop three two e one as "prop three two e one" end define end math

end "

\item "

begin math pyk define prop three two e two as "prop three two e two" end define end math

end "

\item "

begin math pyk define prop three two e as "prop three two e" end define end math

end "

\item "

begin math pyk define prop three two f one as "prop three two f one" end define end math

end "

\item "

begin math pyk define prop three two f two as "prop three two f two" end define end math

end "

\item "

begin math pyk define prop three two f as "prop three two f" end define end math

end "

\item "

begin math pyk define prop three two g one as "prop three two g one" end define end math

end "

\item "

begin math pyk define prop three two g two as "prop three two g two" end define end math

end "

\item "

begin math pyk define prop three two g as "prop three two g" end define end math

end "

\item "

begin math pyk define prop three two h one as "prop three two h one" end define end math

end "

\item "

begin math pyk define prop three two h two as "prop three two h two" end define end math

end "

\item "

begin math pyk define prop three two h as "prop three two h" end define end math

end "

\item "

begin math pyk define macro indent var x as "macro indent *" end define end math

end "

\item "

begin math pyk define block one var t state var s cache var c end block as "block one * state * cache * end block" end define end math

end "

\item "

begin math pyk define block two var b end block as "block two * end block" end define end math

end "

\item "

begin math pyk define evaluates to as "evaluates to" end define end math

end "

\end{list}



\section{\TeX\ definitions}

\begin{list}{}{
\setlength{\leftmargin}{5em}
\setlength{\itemindent}{-5em}}

\item "

begin math tex define general macro define var x as var y end define as "
[#1/tex name/tex.
\stackrel {\circ}{=}#2.
]" end define end math

end "

\item "

begin math tex define make root visible var x end visible as "#1/tex name/tex." end define end math

end "

\item "

begin math tex name define make root visible var x end visible as "
RootVisible(#1.
)" end define end math

end "

\item "

begin math tex define var x hide as "#1.
{}^{hide}" end define end math

end "

\item "

begin math tex define var x suc as "#1.
{}'" end define end math

end "

\item "

begin math tex define var x equal var y as "#1.
= #2." end define end math

end "

\item "

begin math tex define var x unequal var y as "#1.
\neq #2." end define end math

end "

\item "

begin math tex define var x imply var y as "#1.
\Rightarrow #2." end define end math

end "

\item "

begin math tex define var x if and only if var y as "#1.
\Leftrightarrow #2." end define end math

end "

\item "

begin math tex define var x alternative var y as "#1.
\mathrel{|} #2." end define end math

end "

\item "

begin math tex define exist var x indeed var y as "
\exists #1.
\colon #2." end define end math

end "

\item "

begin math tex define for all var x indeed var y as "
\forall #1.
\colon #2." end define end math

end "

\item "

begin math tex define for all objects var x indeed var y as "
\forall_{obj} #1.
\colon #2." end define end math

end "

\item "

begin math tex define for all terms var x indeed var y as "
\Pi #1.
\colon #2." end define end math

end "

\item "

begin math tex define any term var i end line var p as "
\newline \makebox [0.1\textwidth ][l]{$
\if \relax \csname lgwprooflinep\endcsname L_? \else
\global \advance \lgwproofline by 1
L\ifnum \lgwproofline <10 0\fi \number \lgwproofline
\fi
$:}\makebox [0.4\textwidth ][l]{$Arbitrary{}\gg{}$}\quad
\parbox [t]{0.4\textwidth }{$#1.
$\hfill \makebox [0mm][l]{\quad ;}}#2." end define end math

end "

\item "

begin math tex name define any term var i end line var p as "
Arbitrary \gg #1.
;#2." end define end math

end "

\item "

begin math tex define var x safe row var y as "#1.
\\{}#2." end define end math

end "

\item "

begin math tex name define var x safe row var y as "#1.
\backslash \backslash #2." end define end math

end "

\item "

begin math tex define ijcar example axiom as "
A" end define end math

end "

\item "

begin math tex define ijcar example rule as "
R" end define end math

end "

\item "

begin math tex define ijcar example contradiction as "
C" end define end math

end "

\item "

begin math tex define ijcar example theory as "
T" end define end math

end "

\item "

begin math tex define ijcar example lemma as "
L" end define end math

end "

\item "

begin math tex define set var x end set as "
\{#1.
\}" end define end math

end "

\item "

begin math tex define system s as "
S" end define end math

end "

\item "

begin math tex define double negation as "
Neg" end define end math

end "

\item "

begin math tex define axiom s one as "
S1" end define end math

end "

\item "

begin math tex define axiom s two as "
S2" end define end math

end "

\item "

begin math tex define axiom s three as "
S3" end define end math

end "

\item "

begin math tex define axiom s four as "
S4" end define end math

end "

\item "

begin math tex define axiom s five as "
S5" end define end math

end "

\item "

begin math tex define axiom s six as "
S6" end define end math

end "

\item "

begin math tex define axiom s seven as "
S7" end define end math

end "

\item "

begin math tex define axiom s eight as "
S8" end define end math

end "

\item "

begin math tex define axiom s nine as "
S9" end define end math

end "

\item "

begin math tex define rule mp as "
MP" end define end math

end "

\item "

begin math tex define rule gen as "
Gen" end define end math

end "

\item "

begin math tex define deduction as "
Ded" end define end math

end "

\item "

begin math tex define repetition as "
Repetition" end define end math

end "

\item "

begin math tex define lemma a one as "
A1'" end define end math

end "

\item "

begin math tex define lemma a two as "
A2'" end define end math

end "

\item "

begin math tex define lemma a four as "
A4'" end define end math

end "

\item "

begin math tex define lemma a five as "
A5'" end define end math

end "

\item "

begin math tex define var x is object var as "#1.
{}^{var}" end define end math

end "

\item "

begin math tex define var x avoid var y as "#1.
\#.#2." end define end math

end "

\item "

begin math tex define var x avoid zero var y as "#1.
\#.^0#2." end define end math

end "

\item "

begin math tex define var x avoid one var y as "#1.
\#.^1#2." end define end math

end "

\item "

begin math tex define var x avoid star var y as "#1.
\#.^*#2." end define end math

end "

\item "

begin math tex define sub var x is var y where var z is var u end sub as "
\langle #1.
{\equiv} #2.
| #3.
{:=} #4.
\rangle " end define end math

end "

\item "

begin math tex define sub zero var x is var y where var z is var u end sub as "
\langle #1.
{\equiv}^0 #2.
| #3.
{:=} #4.
\rangle " end define end math

end "

\item "

begin math tex define sub one var x is var y where var z is var u end sub as "
\langle #1.
{\equiv}^1 #2.
| #3.
{:=} #4.
\rangle " end define end math

end "

\item "

begin math tex define sub star var x is var y where var z is var u end sub as "
\langle #1.
{\equiv}^* #2.
| #3.
{:=} #4.
\rangle " end define end math

end "

\item "

begin math tex define deduction var x conclude var y end deduction as "
Ded(#1.
,#2.
)" end define end math

end "

\item "

begin math tex define deduction zero var x conclude var y end deduction as "
Ded_0(#1.
,#2.
)" end define end math

end "

\item "

begin math tex define deduction one var x conclude var y condition var z end deduction as "
Ded_1(#1.
,#2.
,#3.
)" end define end math

end "

\item "

begin math tex define deduction two var x conclude var y condition var z end deduction as "
Ded_2(#1.
,#2.
,#3.
)" end define end math

end "

\item "

begin math tex define deduction three var x conclude var y condition var z bound var u end deduction as "
Ded_3(#1.
,#2.
,#3.
,#4.
)" end define end math

end "

\item "

begin math tex define deduction four var x conclude var y condition var z bound var u end deduction as "
Ded_4(#1.
,#2.
,#3.
,#4.
)" end define end math

end "

\item "

begin math tex define deduction four star var x conclude var y condition var z bound var u end deduction as "
Ded_4^*(#1.
,#2.
,#3.
,#4.
)" end define end math

end "

\item "

begin math tex define deduction five var x condition var y bound var z end deduction as "
Ded_5(#1.
,#2.
,#3.
)" end define end math

end "

\item "

begin math tex define deduction six var p conclude var c exception var e bound var b end deduction as "
Ded_6(#1.
,#2.
,#3.
,#4.
)" end define end math

end "

\item "

begin math tex define deduction six star var p conclude var c exception var e bound var b end deduction as "
Ded_6^*(#1.
,#2.
,#3.
,#4.
)" end define end math

end "

\item "

begin math tex define deduction seven var p end deduction as "
Ded_7(#1.
)" end define end math

end "

\item "

begin math tex define deduction eight var p bound var b end deduction as "
Ded_8(#1.
,#2.
)" end define end math

end "

\item "

begin math tex define deduction eight var p bound var b end deduction as "
Ded_8^*(#1.
,#2.
)" end define end math

end "

\item "

begin math tex define block var b line var l end block var p as "
\newline \makebox [0.1\textwidth]{}%
\parbox [b]{0.4\textwidth }{\raggedright
\setlength {\parindent }{-0.1\textwidth }%
\makebox [0.1\textwidth ][l]{$
\if \relax \csname lgwprooflinep\endcsname L_? \else
\global \advance \lgwproofline by 1
L\ifnum \lgwproofline <10 0\fi \number \lgwproofline
\fi
$:}$Block {}\gg {}$}\quad
\parbox [t]{0.4\textwidth }{$Begin
$\hfill \makebox [0mm][l]{\quad ;}}#1.
\newline \makebox [0.1\textwidth]{}%
\parbox [b]{0.4\textwidth }{\raggedright
\setlength {\parindent }{-0.1\textwidth }%
\makebox [0.1\textwidth ][l]{$#2.
$:}$Block {}\gg {}$}\quad
\parbox [t]{0.4\textwidth }{$End
$\hfill \makebox [0mm][l]{\quad ;}}#3." end define end math

end "

\item "

begin math tex name define block var b line var l end block var p as "
Begin \, #1.
; #2.
: End ; #3." end define end math

end "

\item "

begin math tex define because var a indeed var i end line as "
\newline \makebox [0.1\textwidth]{}%
\parbox [b]{0.4\textwidth }{\raggedright
\setlength {\parindent }{-0.1\textwidth }%
\makebox [0.1\textwidth ][l]{$
\if \relax \csname lgwprooflinep\endcsname L_? \else
\global \advance \lgwproofline by 1
L\ifnum \lgwproofline <10 0\fi \number \lgwproofline
\fi
$:}$#1.
{}\gg {}$}\quad
\parbox [t]{0.4\textwidth }{$#2.
$\hfill \makebox [0mm][l]{\quad ;}}" end define end math

end "

"

begin math tex name define because var a indeed var i end line as "
Last\ block\ line \, #1.
\gg #2.
\,;" end define end math

end "

\item "

begin math tex define var x object modus ponens var y as "#1.
\unrhd #2." end define end math

end "

\item "

begin math tex define prop three two a as "
Prop\ 3.2a" end define end math

end "

\item "

begin math tex define prop three two b as "
Prop\ 3.2b" end define end math

end "

\item "

begin math tex define prop three two c as "
Prop\ 3.2c" end define end math

end "

\item "

begin math tex define prop three two d as "
Prop\ 3.2d" end define end math

end "

\item "

begin math tex define prop three two e one as "
Prop\ 3.2e_1" end define end math

end "

\item "

begin math tex define prop three two e two as "
Prop\ 3.2e_2" end define end math

end "

\item "

begin math tex define prop three two e as "
Prop\ 3.2e" end define end math

end "

\item "

begin math tex define prop three two f one as "
Prop\ 3.2f_1" end define end math

end "

\item "

begin math tex define prop three two f two as "
Prop\ 3.2f_2" end define end math

end "

\item "

begin math tex define prop three two f as "
Prop\ 3.2f" end define end math

end "

\item "

begin math tex define prop three two g one as "
Prop\ 3.2g_1" end define end math

end "

\item "

begin math tex define prop three two g two as "
Prop\ 3.2g_2" end define end math

end "

\item "

begin math tex define prop three two g as "
Prop\ 3.2g" end define end math

end "

\item "

begin math tex define prop three two h one as "
Prop\ 3.2h_1" end define end math

end "

\item "

begin math tex define prop three two h two as "
Prop\ 3.2h_2" end define end math

end "

\item "

begin math tex define prop three two h as "
Prop\ 3.2h" end define end math

end "

\item "

begin math tex define macro indent var x as "
$%
\leftskip=1em%
$#1." end define end math

end "

\item "

begin math tex name define macro indent var x as "
MacroIndent(#1.
)" end define end math

end "

\item "

begin math tex define block one var t state var s cache var c end block as "
Block_1(#1.
,#2.
,#3.
)" end define end math

end "

\item "

begin math tex define block two var b end block as "
Block_2(#1.
)" end define end math

end "

\item "

begin math tex define evaluates to as "
\rightarrow " end define end math

end "

\end{list}



\subsection{Variables}

"

begin math pyk define object var var x end var as "object var * end var" end define end math

end "

"

begin math tex define object var var x end var as "\overline{#1.}" end define end math

end "



"

begin math macro define object a as object var var a end var end define end math

end "

"

begin math macro define object b as object var var b end var end define end math

end "

"

begin math macro define object c as object var var c end var end define end math

end "

"

begin math macro define object d as object var var d end var end define end math

end "

"

begin math macro define object e as object var var e end var end define end math

end "

"

begin math macro define object f as object var var f end var end define end math

end "

"

begin math macro define object g as object var var g end var end define end math

end "

"

begin math macro define object h as object var var h end var end define end math

end "

"

begin math macro define object i as object var var i end var end define end math

end "

"

begin math macro define object j as object var var j end var end define end math

end "

"

begin math macro define object k as object var var k end var end define end math

end "

"

begin math macro define object l as object var var l end var end define end math

end "

"

begin math macro define object m as object var var m end var end define end math

end "

"

begin math macro define object n as object var var n end var end define end math

end "

"

begin math macro define object o as object var var o end var end define end math

end "

"

begin math macro define object p as object var var p end var end define end math

end "

"

begin math macro define object q as object var var q end var end define end math

end "

"

begin math macro define object r as object var var r end var end define end math

end "

"

begin math macro define object s as object var var s end var end define end math

end "

"

begin math macro define object t as object var var t end var end define end math

end "

"

begin math macro define object u as object var var u end var end define end math

end "

"

begin math macro define object v as object var var v end var end define end math

end "

"

begin math macro define object w as object var var w end var end define end math

end "

"

begin math macro define object x as object var var x end var end define end math

end "

"

begin math macro define object y as object var var y end var end define end math

end "

"

begin math macro define object z as object var var z end var end define end math

end "



"

begin math pyk define object a as "object a" end define end math

end "

"

begin math pyk define object b as "object b" end define end math

end "

"

begin math pyk define object c as "object c" end define end math

end "

"

begin math pyk define object d as "object d" end define end math

end "

"

begin math pyk define object e as "object e" end define end math

end "

"

begin math pyk define object f as "object f" end define end math

end "

"

begin math pyk define object g as "object g" end define end math

end "

"

begin math pyk define object h as "object h" end define end math

end "

"

begin math pyk define object i as "object i" end define end math

end "

"

begin math pyk define object j as "object j" end define end math

end "

"

begin math pyk define object k as "object k" end define end math

end "

"

begin math pyk define object l as "object l" end define end math

end "

"

begin math pyk define object m as "object m" end define end math

end "

"

begin math pyk define object n as "object n" end define end math

end "

"

begin math pyk define object o as "object o" end define end math

end "

"

begin math pyk define object p as "object p" end define end math

end "

"

begin math pyk define object q as "object q" end define end math

end "

"

begin math pyk define object r as "object r" end define end math

end "

"

begin math pyk define object s as "object s" end define end math

end "

"

begin math pyk define object t as "object t" end define end math

end "

"

begin math pyk define object u as "object u" end define end math

end "

"

begin math pyk define object v as "object v" end define end math

end "

"

begin math pyk define object w as "object w" end define end math

end "

"

begin math pyk define object x as "object x" end define end math

end "

"

begin math pyk define object y as "object y" end define end math

end "

"

begin math pyk define object z as "object z" end define end math

end "



"

begin math tex define object a as "
\mathit{a}" end define end math

end "

"

begin math tex define object b as "
\mathit{b}" end define end math

end "

"

begin math tex define object c as "
\mathit{c}" end define end math

end "

"

begin math tex define object d as "
\mathit{d}" end define end math

end "

"

begin math tex define object e as "
\mathit{e}" end define end math

end "

"

begin math tex define object f as "
\mathit{f}" end define end math

end "

"

begin math tex define object g as "
\mathit{g}" end define end math

end "

"

begin math tex define object h as "
\mathit{h}" end define end math

end "

"

begin math tex define object i as "
\mathit{i}" end define end math

end "

"

begin math tex define object j as "
\mathit{j}" end define end math

end "

"

begin math tex define object k as "
\mathit{k}" end define end math

end "

"

begin math tex define object l as "
\mathit{l}" end define end math

end "

"

begin math tex define object m as "
\mathit{m}" end define end math

end "

"

begin math tex define object n as "
\mathit{n}" end define end math

end "

"

begin math tex define object o as "
\mathit{o}" end define end math

end "

"

begin math tex define object p as "
\mathit{p}" end define end math

end "

"

begin math tex define object q as "
\mathit{q}" end define end math

end "

"

begin math tex define object r as "
\mathit{r}" end define end math

end "

"

begin math tex define object s as "
\mathit{s}" end define end math

end "

"

begin math tex define object t as "
\mathit{t}" end define end math

end "

"

begin math tex define object u as "
\mathit{u}" end define end math

end "

"

begin math tex define object v as "
\mathit{v}" end define end math

end "

"

begin math tex define object w as "
\mathit{w}" end define end math

end "

"

begin math tex define object x as "
\mathit{x}" end define end math

end "

"

begin math tex define object y as "
\mathit{y}" end define end math

end "

"

begin math tex define object z as "
\mathit{z}" end define end math

end "



\section{Priority table}

"

begin flush left math priority table preassociative priority ijcar equal priority ijcar base equal priority bracket x end bracket equal priority big bracket x end bracket equal priority math x end math equal priority flush left x end left equal priority var x equal priority var y equal priority var z equal priority proclaim x as x end proclaim equal priority define x of x as x end define equal priority pyk equal priority tex equal priority tex name equal priority priority equal priority x equal priority true equal priority if x then x else x end if equal priority introduce x of x as x end introduce equal priority value equal priority claim equal priority bottom equal priority function f of x end function equal priority identity x end identity equal priority false equal priority untagged zero equal priority untagged one equal priority untagged two equal priority untagged three equal priority untagged four equal priority untagged five equal priority untagged six equal priority untagged seven equal priority untagged eight equal priority untagged nine equal priority zero equal priority one equal priority two equal priority three equal priority four equal priority five equal priority six equal priority seven equal priority eight equal priority nine equal priority var a equal priority var b equal priority var c equal priority var d equal priority var e equal priority var f equal priority var g equal priority var h equal priority var i equal priority var j equal priority var k equal priority var l equal priority var m equal priority var n equal priority var o equal priority var p equal priority var q equal priority var r equal priority var s equal priority var t equal priority var u equal priority var v equal priority var w equal priority tagged parenthesis x end tagged equal priority tagged if x then x else x end if equal priority array x is x end array equal priority left equal priority center equal priority right equal priority empty equal priority substitute x set x to x end substitute equal priority map tag x end tag equal priority raw map untag x end untag equal priority map untag x end untag equal priority normalizing untag x end untag equal priority apply x to x end apply equal priority apply one x to x end apply equal priority identifier x end identifier equal priority identifier one x plus id x end identifier equal priority array plus x and x end plus equal priority array remove x array x level x end remove equal priority array put x value x array x level x end put equal priority array add x value x index x value x level x end add equal priority bit x of x end bit equal priority bit one x of x end bit equal priority example rack equal priority vector hook equal priority bibliography hook equal priority dictionary hook equal priority body hook equal priority codex hook equal priority expansion hook equal priority code hook equal priority cache hook equal priority diagnose hook equal priority pyk aspect equal priority tex aspect equal priority texname aspect equal priority value aspect equal priority message aspect equal priority macro aspect equal priority definition aspect equal priority unpack aspect equal priority claim aspect equal priority priority aspect equal priority lambda identifier equal priority apply identifier equal priority true identifier equal priority if identifier equal priority quote identifier equal priority proclaim identifier equal priority define identifier equal priority introduce identifier equal priority hide identifier equal priority pre identifier equal priority post identifier equal priority eval x stack x cache x end eval equal priority eval two x ref x id x stack x cache x end eval equal priority eval three x function x stack x cache x end eval equal priority eval four x arguments x stack x cache x end eval equal priority lookup x stack x default x end lookup equal priority abstract x term x stack x cache x end abstract equal priority quote x end quote equal priority expand x state x cache x end expand equal priority expand two x definition x state x cache x end expand equal priority expand list x state x cache x end expand equal priority macro equal priority macro state equal priority zip x with x end zip equal priority assoc one x address x index x end assoc equal priority protect x end protect equal priority self equal priority macro define x as x end define equal priority value define x as x end define equal priority intro define x as x end define equal priority pyk define x as x end define equal priority tex define x as x end define equal priority tex name define x as x end define equal priority priority table x end table equal priority macro define one equal priority macro define two x end define equal priority macro define three x end define equal priority macro define four x state x cache x definition x end define equal priority state expand x state x cache x end expand equal priority quote expand x term x stack x end expand equal priority quote expand two x term x stack x end expand equal priority quote expand three x term x stack x value x end expand equal priority quote expand star x term x stack x end expand equal priority parenthesis x end parenthesis equal priority big parenthesis x end parenthesis equal priority display x end display equal priority statement x end statement equal priority spying test x end test equal priority false spying test x end test equal priority aspect x subcodex x end aspect equal priority aspect x term x cache x end aspect equal priority tuple x end tuple equal priority tuple one x end tuple equal priority tuple two x end tuple equal priority let two x apply x end let equal priority let one x apply x end let equal priority claim define x as x end define equal priority checker equal priority check x cache x end check equal priority check two x cache x def x end check equal priority check three x cache x def x end check equal priority check list x cache x end check equal priority check list two x cache x value x end check equal priority test x end test equal priority false test x end test equal priority raw test x end test equal priority message equal priority message define x as x end define equal priority the statement aspect equal priority statement equal priority statement define x as x end define equal priority example axiom equal priority example scheme equal priority example rule equal priority absurdity equal priority contraexample equal priority example theory primed equal priority example lemma equal priority metavar x end metavar equal priority meta a equal priority meta b equal priority meta c equal priority meta d equal priority meta e equal priority meta f equal priority meta g equal priority meta h equal priority meta i equal priority meta j equal priority meta k equal priority meta l equal priority meta m equal priority meta n equal priority meta o equal priority meta p equal priority meta q equal priority meta r equal priority meta s equal priority meta t equal priority meta u equal priority meta v equal priority meta w equal priority meta x equal priority meta y equal priority meta z equal priority sub x set x to x end sub equal priority sub star x set x to x end sub equal priority the empty set equal priority example remainder equal priority make visible x end visible equal priority intro x index x pyk x tex x end intro equal priority intro x pyk x tex x end intro equal priority error x term x end error equal priority error two x term x end error equal priority proof x term x cache x end proof equal priority proof two x term x end proof equal priority sequent eval x term x end eval equal priority seqeval init x term x end eval equal priority seqeval modus x term x end eval equal priority seqeval modus one x term x sequent x end eval equal priority seqeval verify x term x end eval equal priority seqeval verify one x term x sequent x end eval equal priority sequent eval plus x term x end eval equal priority seqeval plus one x term x sequent x end eval equal priority seqeval minus x term x end eval equal priority seqeval minus one x term x sequent x end eval equal priority seqeval deref x term x end eval equal priority seqeval deref one x term x sequent x end eval equal priority seqeval deref two x term x sequent x def x end eval equal priority seqeval at x term x end eval equal priority seqeval at one x term x sequent x end eval equal priority seqeval infer x term x end eval equal priority seqeval infer one x term x premise x sequent x end eval equal priority seqeval endorse x term x end eval equal priority seqeval endorse one x term x side x sequent x end eval equal priority seqeval est x term x end eval equal priority seqeval est one x term x name x sequent x end eval equal priority seqeval est two x term x name x sequent x def x end eval equal priority seqeval all x term x end eval equal priority seqeval all one x term x variable x sequent x end eval equal priority seqeval cut x term x end eval equal priority seqeval cut one x term x forerunner x end eval equal priority seqeval cut two x term x forerunner x sequent x end eval equal priority computably true x end true equal priority claims x cache x ref x end claims equal priority claims two x cache x ref x end claims equal priority the proof aspect equal priority proof equal priority lemma x says x end lemma equal priority proof of x reads x end proof equal priority in theory x lemma x says x end lemma equal priority in theory x antilemma x says x end antilemma equal priority in theory x rule x says x end rule equal priority in theory x antirule x says x end antirule equal priority verifier equal priority verify one x end verify equal priority verify two x proofs x end verify equal priority verify three x ref x sequents x diagnose x end verify equal priority verify four x premises x end verify equal priority verify five x ref x array x sequents x end verify equal priority verify six x ref x list x sequents x end verify equal priority verify seven x ref x id x sequents x end verify equal priority cut x and x end cut equal priority head x end head equal priority tail x end tail equal priority rule one x theory x end rule equal priority rule x subcodex x end rule equal priority rule tactic equal priority plus x and x end plus equal priority theory x end theory equal priority theory two x cache x end theory equal priority theory three x name x end theory equal priority theory four x name x sum x end theory equal priority example axiom lemma primed equal priority example scheme lemma primed equal priority example rule lemma primed equal priority contraexample lemma primed equal priority example axiom lemma equal priority example scheme lemma equal priority example rule lemma equal priority contraexample lemma equal priority example theory equal priority ragged right equal priority ragged right expansion equal priority parameter term x stack x seed x end parameter equal priority parameter term star x stack x seed x end parameter equal priority instantiate x with x end instantiate equal priority instantiate star x with x end instantiate equal priority occur x in x substitution x end occur equal priority occur star x in x substitution x end occur equal priority unify x with x substitution x end unify equal priority unify star x with x substitution x end unify equal priority unify two x with x substitution x end unify equal priority ell a equal priority ell b equal priority ell c equal priority ell d equal priority ell e equal priority ell f equal priority ell g equal priority ell h equal priority ell i equal priority ell j equal priority ell k equal priority ell l equal priority ell m equal priority ell n equal priority ell o equal priority ell p equal priority ell q equal priority ell r equal priority ell s equal priority ell t equal priority ell u equal priority ell v equal priority ell w equal priority ell x equal priority ell y equal priority ell z equal priority ell big a equal priority ell big b equal priority ell big c equal priority ell big d equal priority ell big e equal priority ell big f equal priority ell big g equal priority ell big h equal priority ell big i equal priority ell big j equal priority ell big k equal priority ell big l equal priority ell big m equal priority ell big n equal priority ell big o equal priority ell big p equal priority ell big q equal priority ell big r equal priority ell big s equal priority ell big t equal priority ell big u equal priority ell big v equal priority ell big w equal priority ell big x equal priority ell big y equal priority ell big z equal priority ell dummy equal priority sequent reflexivity equal priority tactic reflexivity equal priority sequent commutativity equal priority tactic commutativity equal priority the tactic aspect equal priority tactic equal priority tactic define x as x end define equal priority proof expand x state x cache x end expand equal priority proof expand list x state x cache x end expand equal priority proof state equal priority conclude one x cache x end conclude equal priority conclude two x proves x cache x end conclude equal priority conclude three x proves x lemma x substitution x end conclude equal priority conclude four x lemma x end conclude equal priority general macro define x as x end define equal priority make root visible x end visible equal priority ijcar example axiom equal priority ijcar example rule equal priority ijcar example contradiction equal priority ijcar example theory equal priority ijcar example lemma equal priority set x end set equal priority object var x end var equal priority object a equal priority object b equal priority object c equal priority object d equal priority object e equal priority object f equal priority object g equal priority object h equal priority object i equal priority object j equal priority object k equal priority object l equal priority object m equal priority object n equal priority object o equal priority object p equal priority object q equal priority object r equal priority object s equal priority object t equal priority object u equal priority object v equal priority object w equal priority object x equal priority object y equal priority object z equal priority sub x is x where x is x end sub equal priority sub zero x is x where x is x end sub equal priority sub one x is x where x is x end sub equal priority sub star x is x where x is x end sub equal priority deduction x conclude x end deduction equal priority deduction zero x conclude x end deduction equal priority deduction one x conclude x condition x end deduction equal priority deduction two x conclude x condition x end deduction equal priority deduction three x conclude x condition x bound x end deduction equal priority deduction four x conclude x condition x bound x end deduction equal priority deduction four star x conclude x condition x bound x end deduction equal priority deduction five x condition x bound x end deduction equal priority deduction six x conclude x exception x bound x end deduction equal priority deduction six star x conclude x exception x bound x end deduction equal priority deduction seven x end deduction equal priority deduction eight x bound x end deduction equal priority deduction eight x bound x end deduction equal priority system s equal priority double negation equal priority rule mp equal priority rule gen equal priority deduction equal priority axiom s one equal priority axiom s two equal priority axiom s three equal priority axiom s four equal priority axiom s five equal priority axiom s six equal priority axiom s seven equal priority axiom s eight equal priority axiom s nine equal priority repetition equal priority lemma a one equal priority lemma a two equal priority lemma a four equal priority lemma a five equal priority prop three two a equal priority prop three two b equal priority prop three two c equal priority prop three two d equal priority prop three two e one equal priority prop three two e two equal priority prop three two e equal priority prop three two f one equal priority prop three two f two equal priority prop three two f equal priority prop three two g one equal priority prop three two g two equal priority prop three two g equal priority prop three two h one equal priority prop three two h two equal priority prop three two h equal priority block one x state x cache x end block equal priority block two x end block end priority greater than preassociative priority x sub x end sub equal priority x intro x index x pyk x tex x end intro equal priority x intro x pyk x tex x end intro equal priority x intro x index x pyk x tex x name x end intro equal priority x intro x pyk x tex x name x end intro equal priority x prime equal priority x assoc x end assoc equal priority x set x to x end set equal priority x set multi x to x end set equal priority x bit nil equal priority x bit one equal priority binary equal priority x color x end color equal priority x color star x end color equal priority x raw head equal priority x raw tail equal priority x cardinal untag equal priority x head equal priority x tail equal priority x is singular equal priority x is cardinal equal priority x is data equal priority x is atomic equal priority x cardinal retract equal priority x tagged retract equal priority x boolean retract equal priority x ref equal priority x id equal priority x debug equal priority x root equal priority x zeroth equal priority x first equal priority x second equal priority x third equal priority x fourth equal priority x fifth equal priority x sixth equal priority x seventh equal priority x eighth equal priority x ninth equal priority x is error equal priority x is metavar equal priority x is metaclosed equal priority x is metaclosed star equal priority x hide end priority greater than preassociative priority unicode start of text x end unicode text equal priority unicode end of text equal priority text x end text equal priority text x plus x equal priority text x plus indent x equal priority
unicode newline x equal priority unicode space x equal priority unicode exclamation mark x equal priority unicode quotation mark x equal priority unicode number sign x equal priority unicode dollar sign x equal priority unicode percent x equal priority unicode ampersand x equal priority unicode apostrophe x equal priority unicode left parenthesis x equal priority unicode right parenthesis x equal priority unicode asterisk x equal priority unicode plus sign x equal priority unicode comma x equal priority unicode hyphen x equal priority unicode period x equal priority unicode slash x equal priority unicode zero x equal priority unicode one x equal priority unicode two x equal priority unicode three x equal priority unicode four x equal priority unicode five x equal priority unicode six x equal priority unicode seven x equal priority unicode eight x equal priority unicode nine x equal priority unicode colon x equal priority unicode semicolon x equal priority unicode less than x equal priority unicode equal sign x equal priority unicode greater than x equal priority unicode question mark x equal priority unicode commercial at x equal priority unicode capital a x equal priority unicode capital b x equal priority unicode capital c x equal priority unicode capital d x equal priority unicode capital e x equal priority unicode capital f x equal priority unicode capital g x equal priority unicode capital h x equal priority unicode capital i x equal priority unicode capital j x equal priority unicode capital k x equal priority unicode capital l x equal priority unicode capital m x equal priority unicode capital n x equal priority unicode capital o x equal priority unicode capital p x equal priority unicode capital q x equal priority unicode capital r x equal priority unicode capital s x equal priority unicode capital t x equal priority unicode capital u x equal priority unicode capital v x equal priority unicode capital w x equal priority unicode capital x x equal priority unicode capital y x equal priority unicode capital z x equal priority unicode left bracket x equal priority unicode backslash x equal priority unicode right bracket x equal priority unicode circumflex x equal priority unicode underscore x equal priority unicode grave accent x equal priority unicode small a x equal priority unicode small b x equal priority unicode small c x equal priority unicode small d x equal priority unicode small e x equal priority unicode small f x equal priority unicode small g x equal priority unicode small h x equal priority unicode small i x equal priority unicode small j x equal priority unicode small k x equal priority unicode small l x equal priority unicode small m x equal priority unicode small n x equal priority unicode small o x equal priority unicode small p x equal priority unicode small q x equal priority unicode small r x equal priority unicode small s x equal priority unicode small t x equal priority unicode small u x equal priority unicode small v x equal priority unicode small w x equal priority unicode small x x equal priority unicode small y x equal priority unicode small z x equal priority unicode left brace x equal priority unicode vertical line x equal priority unicode right brace x equal priority unicode tilde x equal priority preassociative x greater than x equal priority postassociative x greater than x equal priority priority x equal x equal priority priority x end priority equal priority newline x equal priority macro newline x equal priority macro indent x end priority greater than preassociative priority x apply x equal priority x tagged apply x end priority greater than preassociative priority x suc end priority greater than preassociative priority x times x equal priority x times zero x end priority greater than preassociative priority x plus x equal priority x plus zero x equal priority x plus one x equal priority x minus x equal priority x minus zero x equal priority x minus one x end priority greater than preassociative priority x term plus x end plus equal priority x term union x equal priority x term minus x end minus end priority greater than postassociative priority x raw pair x equal priority x eager pair x equal priority x tagged pair x equal priority x untagged double x equal priority x pair x equal priority x double x end priority greater than postassociative priority x comma x end priority greater than preassociative priority x boolean equal x equal priority x data equal x equal priority x cardinal equal x equal priority x peano equal x equal priority x tagged equal x equal priority x math equal x equal priority x reduce to x equal priority x term equal x equal priority x term list equal x equal priority x term root equal x equal priority x term in x equal priority x term subset x equal priority x term set equal x equal priority x sequent equal x equal priority x free in x equal priority x free in star x equal priority x free for x in x equal priority x free for star x in x equal priority x claim in x equal priority x less x equal priority x less zero x equal priority x less one x equal priority x equal x equal priority x unequal x equal priority x is object var equal priority x avoid zero x equal priority x avoid one x equal priority x avoid star x end priority greater than preassociative priority not x end priority greater than preassociative priority x and x equal priority x macro and x equal priority x simple and x equal priority x claim and x end priority greater than preassociative priority x or x equal priority x parallel x equal priority x macro or x end priority greater than preassociative priority exist x indeed x equal priority for all x indeed x equal priority for all objects x indeed x end priority greater than postassociative priority x macro imply x equal priority x imply x equal priority x if and only if x end priority greater than postassociative priority x guard x equal priority x spy x equal priority x tagged guard x end priority greater than preassociative priority x select x else x end select end priority greater than preassociative priority lambda x dot x equal priority tagged lambda x dot x equal priority tagging x equal priority open if x then x else x equal priority let x be x in x equal priority let x abbreviate x in x end priority greater than preassociative priority x avoid x end priority greater than preassociative priority x init equal priority x modus equal priority x verify equal priority x curry plus equal priority x curry minus equal priority x dereference end priority greater than preassociative priority x at x equal priority x modus ponens x equal priority x modus probans x equal priority x conclude x equal priority x object modus ponens x end priority greater than postassociative priority x infer x equal priority x endorse x equal priority x id est x end priority greater than preassociative priority all x indeed x equal priority for all terms x indeed x end priority greater than postassociative priority x rule plus x end priority greater than postassociative priority x cut x end priority greater than preassociative priority x proves x end priority greater than preassociative priority x proof of x reads x equal priority line x because x indeed x end line x equal priority because x indeed x qed equal priority line x premise x end line x equal priority line x side condition x end line x equal priority arbitrary x end line x equal priority locally define x as x end line x equal priority block x line x end block x equal priority because x indeed x end line equal priority any term x end line x end priority greater than postassociative priority x alternative x end priority greater than postassociative priority x

then x equal priority x

begin x

end x end priority greater than preassociative priority x tab x equal priority evaluates to end priority greater than preassociative priority x row

x equal priority x safe row x end priority greater than unicode end of text end table end math end left

end "

\end{document}
End of file
latex chores
latex chores
dvipdfm chores"

The pyk compiler, version 0.grue.20060417 by Klaus Grue,
GRD-2006-03-06.UTC:13:37:57.803308 = MJD-53800.TAI:13:38:30.803308 = LGT-4648369110803308e-6