<?xml version="1.0" encoding="ISO-8859-1"?>
<QEDEQ
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://www.qedeq.org/0_03_05/xml/qedeq.xsd">
  <HEADER email="mime@qedeq.org">
    <SPECIFICATION name="qedeq_set_theory_v1" ruleVersion="1.00.00">
      <LOCATIONS>
        <LOCATION value="http://qedeq.org/0_03_05/doc/math"/>
      </LOCATIONS>
    </SPECIFICATION>
    <TITLE>
      <LATEX language="en">
         Axiomatic Set Theory
      </LATEX>
      <LATEX language="de">
         Axiomatische Mengenlehre
      </LATEX>
    </TITLE>
    <ABSTRACT>
      <LATEX language="en">
        <![CDATA[
          This document contains the mathematical foundation of set theory. Goal is the presentation of elementary results which are needed within other mathematical disciplines. After the basics the {\emph boolean algebra of classes} is in focus. Next are some thoughts about \emph{relations} and \emph{functions}. An important achivement is the definition of the \emph{natural~numbers} and their fulfillment of the \emph{Peano axioms}. Also the word \emph{recursion} is discussed.
          
          \par
          Although the presentation is axiomatic the results shall match the mathematical usage. For that reason the set theoretic axiom system of \emph{A.~P.~Morse} and \emph{J.~L.~Kelley} (MK\index{MK})was chosen.

          \par
          This document is not finished and is updated from time to time.
        ]]>
      </LATEX>
      <LATEX language="de">
        <![CDATA[
         Dieses Dokument beschreibt die mathematischen Grundlagen der Mengenlehre. Ziel ist dabei die Bereitstellung von elementaren Ergebnissen der Mengenlehre, die in anderen mathematischen Disziplinen benötigt werden. Nach den Anfangsgründen wird die {\emph Boolsche Algebra der Klassen} betrachtet. Es schliessen sich Betrachtungen über {\emph Relationen} und {\emph Funktionen} an. Ein wichtiges Ergebnis sind die Definition der {\emph natürlichen Zahlen} und die Erfüllung der {\emph Peano-Axiome} durch diese. Auch auf den Begriff der {\emph Rekursion} wird eingegangen.

         \par
         Die Darstellung erfolgt in axiomatischer Weise soll aber im Ergebnis der mathematischen Praxis entsprechen. Aus diesem Grunde wird auch das Axiomensystem der Mengenlehre von \emph{A.~P.~Morse} und  \emph{J.~L.~Kelley} (MK\index{MK}) verwendet.

         \par
         Dieses Dokument ist noch nicht fertiggestellt und wird von Zeit zu Zeit aktualisiert.
        ]]>
      </LATEX>
    </ABSTRACT>
    <AUTHORS>
      <AUTHOR email="michael@meyling.com">
        <NAME>
          <LATEX language="de">
            Michael Meyling
          </LATEX>
        </NAME>
      </AUTHOR>
    </AUTHORS>
    <IMPORTS>
      <IMPORT label="qedeq_logic_v1">
        <SPECIFICATION name="qedeq_logic_v1" ruleVersion="1.00.00">
          <LOCATIONS>
            <LOCATION value="http://qedeq.org/0_03_05/doc/math"/>
          </LOCATIONS>
        </SPECIFICATION>
      </IMPORT>
    </IMPORTS>
  </HEADER>


  <CHAPTER noNumber="true">
    <TITLE>
      <LATEX language="en">
        Preface\label{ch:preface}
      </LATEX>
      <LATEX language="de">
        Vorwort\label{ch:preface}
      </LATEX>
    </TITLE>
    <INTRODUCTION>
      <LATEX language="en">
        <![CDATA[
          Mathematics is a science with a structure that achieved enormous dimensions in the course of time. This huge stronghold has only a small set theoretic foundation and its firmness rests upon simple predicate calculus mortar. In principle the assembly could be comprehended by any mathematician. From every newest turret of mathematical cognition each path of logical dependency could be followed all the way down to its set theoretic roots.
          
          \par
          This document wants to provide some help to accomplish this task. What we aim at is to get an understandable
          presentation of the set theoretic roots. But despite all comprehensibility it is possible to drill very deep into details. Even into the level of a formal proof. For that purpose this document exists in different detail levels. The original source of this document is written in a formal language. So it is possible to prove the propositions automatically with a computer program.
          
          \par
          Lets start by the roots\ldots

          \par
          This document is not finished and is updated from time to time. Especially at the locations marked with {\glqq+++\grqq} additions or changes will be made.

          \par
          I am deeply grateful to my wife \emph{Gesine~Dräger} and our son \emph{Lennart} for their support and patience.

          \par
          \vspace*{1cm} Hamburg, october 2006 \\
          \hspace*{\fill} Michael Meyling
        ]]>
      </LATEX>
      <LATEX language="de">
        <![CDATA[
          Mathematik ist eine Wissenschaft mit einer Struktur, die im Laufe der Zeit riesige Dimensionen erreicht hat. Diese unglaublich hohe Burg besitzt nur ein ganz schmales Fundament und ihre Festigkeit gründet sich auf einfachen prädikatenlogischen Mörtel. Im Prinzip kann der Aufbau von jeder Mathematikerin verstanden werden. Von dem neuesten Gipfel mathematischer Erkenntnis kann jeder Pfad logisch folgerichtig bis in die mengentheoretischen Wurzeln nachvollzogen werden.
          
          \par
          Bei diesem Unternehmen will dieses Dokument Hilfestellung geben. Ziel ist eine Präsentation der mengentheoretischen Wurzeln in verständlicher Weise. Bei aller Verständlichkeit soll es jedoch jederzeit möglich sein, tief in die Details einzusteigen. Ja sogar bis auf die Ebene eines formal korrekten Beweises hinab. Dazu gibt es dieses Dokument in verschiedenen Detailierungen. Für alle aber gilt, dass die Formeln in Axiomen, Definitionen und Propositionen in formal korrekter Form vorliegen.

          \par
          Wir wollen bei den Wurzeln anfangen\ldots

          \par
          Dieses Dokument ist noch im Entstehen und wird von Zeit zu Zeit aktualisiert. Insbesondere werden an den durch {\glqq+++\grqq} gekennzeichneten Stellen noch Ergänzungen oder Änderungen vorgenommen.
          
          \par
          Besondere Dank geht an meine Frau \emph{Gesine~Dräger} und unseren Sohn \emph{Lennart} für ihre Unterstützung und ihr Verständnis für ihnen fehlende Zeit.

          \par
          \vspace*{1cm} Hamburg, August 2006 \\
          \hspace*{\fill} Michael Meyling
        ]]>
      </LATEX>
          
    </INTRODUCTION>
  </CHAPTER>


  <CHAPTER noNumber="true">
    <TITLE>
      <LATEX language="en">
        Introduction\label{ch:introduction}
      </LATEX>
      <LATEX language="de">
        Einleitung\label{ch:introduction}
      </LATEX>
    </TITLE>
    <INTRODUCTION>
      <LATEX language="en">
        <![CDATA[
          After mathematical logic has provided us with the methods of reasoning we start with a very basic theory. Set theory deals with objects and their collections. This theory is interesting for two reasons. First, nearly all mathematical fields use it. Second, every mathematical statement or proof could be cast into formulas within set theory. Number theory, algebra, analysis an all other theories could be constructed within.

          \par          
          This document contains the mathematical foundation of set theory. Goal is the presentation of elementary results which are needed in other mathematical disciplines. After the basics the {\emph boolean algebra of classes} is in focus. Next are some thoughts about \emph{relations} and \emph{functions}. An important achievement is the definition of the \emph{natural~ numbers} and their fulfillment of the \emph{Peano axioms}. Also the concept of \emph{recursion} is discussed.
          
          \par
          Although the presentation is axiomatic the results shall match the mathematical usage. Therefore the set theoretic axiom system of \emph{A.~P.~Morse} and \emph{J.~L.~Kelley} (MK\index{MK}) was chosen.
        ]]>
      </LATEX>
      <LATEX language="de">
        <![CDATA[
        
          Nachdem durch die Logik die Art der mathematischen Argumentation vorgegeben wird, wird in der Mengenlehre ganz allgemein über Objekte und ihre Zusammenfassungen gesprochen. Besonders interessant ist die Mengenlehre dadurch, dass sie zum einen von eigentlich allen mathematischen Disziplinen verwendet wird. Zum anderen lässt sich jede mathematische Disziplin innerhalb der Mengenlehre definieren. Zahlentheorie, Algebra, Analysis und alle weiteren Gebiete lassen sich darauf aufbauen.
        
          \par
          Dieses Dokument beschreibt die mathematischen Grundlagen der Mengenlehre. Ziel ist dabei die Bereitstellung von elementaren Ergebnissen der Mengenlehre, die in anderen mathematischen Disziplinen benötigt werden. Nach den Grundlagen wird die Boolsche Algebra der Klassen betrachtet. Es schliessen sich Betrachtungen über Relationen und Funktionen an. Ein weiteres wichtiges Ergebnis sind die Definition der natürlichen Zahlen und die Erfüllung der Peano-Axiome durch diese, auch auf den Begriff der Rekursion wird eingegangen.
         
          \par
          Die Darstellung erfolgt in axiomatischer Weise soll aber im Ergebnis der mathematischen Praxis entsprechen. Daher wird auch das Axiomensystem der Mengenlehre von \emph{A.~P.~Morse} und  \emph{J.~L.~Kelley} (MK\index{MK}) verwendet.
         
        ]]>
      </LATEX>
    </INTRODUCTION>
  </CHAPTER>

  <CHAPTER>
    <TITLE>
      <LATEX language="en">
        Basics
      </LATEX>
      <LATEX language="de">
        Anfangsgründe
      </LATEX>
    </TITLE>
    <INTRODUCTION>
      <LATEX language="en">
        <![CDATA[
          In this chapter we start with the very basic axioms and definitions of set theory. We shall make no attempt to introduce a formal language\footnote{Despite of this, in the original text of this document the formulas of axioms, definitions and propositions are written in a formal language. The original text is a XML file with a syntax defined by the XSD \url{http://www.qedeq.org/current/xml/qedeq.xsd}.} but shall be content with the common logical operators. To be more precise: precondition is a first-order predicate calculus with identity.
          
          \par\index{Cantor}\index{set!definition}
          \emph{G.~Cantor}, who is considered the founder of set theory, gave in a publication in 1895 a description of the term \emph{set}.
          
          \begin{quote}
           By a ``set'' we are to understand any collection into a whole $M$ of definite and separate objects $m$ of our intuition or our thought. These objects are called the ``elements'' of $M$.
          \end{quote}
          
          \par
          This collection can be specified by giving a \emph{condition for membership}. Around 1900 various paradoxes in this naive set theory were discovered. These paradoxes base on giving tricky conditions for membership.
          
          \par
          There exist different ways out of those contradictions. In this text we don't restrict the condition for membership but we call the result a \emph{class}. Additional axioms allow us to call certain classes sets again. All sets are classes, but not all classes are sets. Sets are classes which are themselves members of classes, whilst a class which is not a set is a class which is not a member of any class.
          
        ]]>
      </LATEX>
      <LATEX language="de">
        <![CDATA[
          In diesem Kapitel beginnen wir mit den ganz elementaren Axiomen und Definitionen der Mengenlehre. Wir versuchen nicht eine formale Sprache einzuführen\footnote{Dessen ungeachtet sind die Formeln der Axiome, Definitionen und Propositionen in dem Ursprungstext dieses Dokuments in einer formalen Sprache notiert. Der Ursprungstext ist eine XML-Datei, deren Syntax mittels der XSD \url{http://www.qedeq.org/current/xml/qedeq.xsd} definiert wird.} und setzen das Wissen um den Gebrauch von logischen Symbolen voraus. Noch genauer formuliert: wir arbeiten mit einer Prädikatenlogik erster Stufe mit Gleichheit.

          \par\index{Cantor}\index{Menge!Definition}
          \emph{G.~Cantor}, der als Begründer der Mengenlehre gilt, hat in einer Veröffentlichung im Jahre 1895 eine Beschreibung des Begriffs \emph{Menge} gegeben.
          
          \begin{quote}
           Unter einer {\glqq Menge\grqq} verstehen wir jede Zusammenfassung $M$ von bestimmten wohlunterscheidbaren Objekten $m$ unserer Anschauung oder unseres Denkens (welche die {\glqq Elemente\grqq} von $M$ genannt werden) zu einem Ganzen.
          \end{quote}
          
          \par
          Diese Zusammenfassung kann über die Angabe einer Eigenschaft dieser Elemente erfolgen. Um 1900 wurden verschiedene Widersprüche dieser naiven Mengenlehre entdeckt. Diese Widersprüche lassen sich auf trickreich gewählte Eigenschaften zurückführen.
          
          \par
          Es gibt verschiedene Möglichkeiten diese Widersprüche zu verhindern. In diesem Text schränken wir zwar die Angabe von Eigenschaften in keiner Weise ein, aber wir nennen das Ergebnis der Zusammenfassung zunächst einmal \emph{Klasse}. Zusätzliche Axiome regeln dann, wann eine bestimmte Klasse auch eine Menge ist. Alle Mengen sind Klassen, aber nicht alle Klassen sind Mengen. Eine Menge ist eine Klasse, die selbst Element einer anderen Klasse ist. Eine Klasse, die keine Menge ist, ist nicht Element irgend einer anderen Klasse.
        ]]>
      </LATEX>
    </INTRODUCTION>
    <SECTION>
      <TITLE>
        <LATEX language="en">Classes and Sets</LATEX>
        <LATEX language="de">Klassen und Mengen</LATEX>
      </TITLE>
      <INTRODUCTION>
        <LATEX language="en">
          <![CDATA[
            Although we want to speak about \emph{sets}\index{set} at the very beginning we have \emph{classes}\index{classes}. No formal definition of a class will be given. Informally, a class is a collection of objects, the involved objects are called the \emph{elements}\index{element} or \emph{members}\index{member} of the class. 
            Sets will be construed as a special kind of class.
            
            \par
            The following definitions and axioms are due to a strengthened version of \emph{von~Neumann-Bernays-Gödel's} set theory (\emph{NBG}\index{NBG}). This version is called \emph{MK}\index{MK} which is short for \emph{Morse-Kelley}. 
          ]]>
        </LATEX>
        <LATEX language="de">
          <![CDATA[
            Obgleich wir im Wesentlichen über \emph{Mengen}\index{Menge} sprechen wollen, haben wir am Anfang nur \emph{Klassen}\index{Klasse}. Dieser Begriff wird nicht formal definiert. Anschaulich gesprochen, ist eine Klasse eine Zusammenfassung von Objekten. Die beteiligten Objekte heissen auch \emph{Elemente}\index{Element} der Klasse.
            Mengen werden dann als eine besondere Art von Klassen charakterisiert.
            
            \par
            Die folgenden Definitionen und Axiome folgen dem Aufbau einer vereinfachten Version der Mengenlehre nach \emph{von~Neumann-Bernays-Gödel} (\emph{NBG}\index{NBG}). Die genaue Bezeichnung lautet \emph{MK}\index{MK} nach \emph{Morse-Kelley}.
          ]]>
        </LATEX>
      </INTRODUCTION>
      <SUBSECTIONS>
        <NODE id="definition:in">
          <NAME>
            <LATEX language="en">is a member of</LATEX>
            <LATEX language="de">ist enthalten in</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Membership Operator</LATEX>
            <LATEX language="de">Elementbeziehung</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                The theory of sets introduced here has initial objects, called \emph{classes}. Furthermore the only predefined symbol is for a binary relation called \emph{membership}.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Die hier vorgestellte Mengenlehre hat als Ausgangsobjekte \emph{Klassen}.
                Weiterhin wird nur ein einziges Symbol für eine binäre Relation vorausgesetzt: der \emph{Enthaltenseinoperator}.
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_PREDICATE arguments="2" name="in">
            <LATEXPATTERN>#1 \in #2</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
              <VAR id="y"/>
            </VARLIST>
          </DEFINITION_PREDICATE>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[
                We also say $x$ \emph{is element of} $y$, $x$ \emph{belongs to} $y$, $x$ \emph{is a member of} $y$, $x$ \emph{is in} $y$.
                Beside identity this is the only predicate we start with. All other will be defined.\footnote{One could also define the identity predicate within the set theory, but then another axiom is needed and the theory presentation is not so smooth for technical reasons (derivation of the equality axioms).} Also no function constants are initially given.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Wir sagen auch $x$ \emph{ist Element von} $y$, $x$ \emph{gehört zu} $y$, $x$ \emph{liegt in} $y$, $x$ \emph{ist in} $y$.
                Neben der Identität ist dies das einzige Prädikat welches wir zu Beginn haben. Alle anderen werden definiert.\footnote{Das Gleichheitsprädikat könnte auch innerhalb der Mengenlehre definiert werden, aber dann wird auch ein weiters Axiom benötigt und es ergeben sich technischen Schwierigkeiten bei der Herleitung der Gleichheitsaxiome.} Zu Anfang haben wir auch noch keine Funktionskonstanten.
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>
        <NODE id="definition:notIn">
          <NAME>
            <LATEX language="en">is not a member of</LATEX>
            <LATEX language="de">ist nicht enthalten in</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Non Membership Operator</LATEX>
            <LATEX language="de">Negation der Elementbeziehung</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                Although we simply can negate the membership predicate we also want to define a shorthand notation for it.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Obgleich wir die Elementbeziehung einfach negieren können, möchten wir dafür eine Abkürzung definieren.
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_PREDICATE arguments="2" name="notIn">
            <LATEXPATTERN>#1 \notin #2</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
              <VAR id="y"/>
            </VARLIST>
            <FORMULA>
              <NOT>
                <PREDCON ref="in">
                  <VAR id="x"/>
                  <VAR id="y"/>
                </PREDCON>
              </NOT>
            </FORMULA>
          </DEFINITION_PREDICATE>
        </NODE>
        <NODE id="axiom:extensionality">
          <NAME>
            <LATEX language="en">axiom of extensionality</LATEX>
            <LATEX language="de">Extensionalitätsaxiom</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Extensionality\index{axiom!of extensionality}</LATEX>
            <LATEX language="de">Extensionalität\index{Extensionalitätsaxiom}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                 Our first axiom states that, for any classes $x$ and $y$, if the membership of $x$ and $y$ are the same, then $x$ and $y$ are the same.\footnote{If identity were not part of our underlying logic, then we should need to take this as a definition of identity.}
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Unser erstes Axiom besagt, dass beliebige Klassen $x$ und $y$ genau dann gleich sind, wenn sie dieselben Elemente enthalten.\footnote{Falls wir das Gleichheitsprädikat nicht als logisches Symbol voraussetzen würden, dann würden wir es hiermit definieren.}
              ]]>
            </LATEX>
          </PRECEDING>
          <AXIOM>
            <FORMULA>
              <IMPL>
                <FORALL>
                  <VAR id="z"/>
                  <EQUI>
                    <PREDCON ref="in">
                      <VAR id="z"/>
                      <VAR id="x"/>
                    </PREDCON>
                    <PREDCON ref="in">
                      <VAR id="z"/>
                      <VAR id="y"/>
                    </PREDCON>
                  </EQUI>
                </FORALL>
                <PREDCON ref="equal">
                  <VAR id="x"/>
                  <VAR id="y"/>
                </PREDCON>
              </IMPL>
            </FORMULA>
          </AXIOM>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[
                The classes $x$ and $y$ may be defined in entirely different ways, for example:
                \par
                \begin{tabularx}{\linewidth}{rcX}
                  $x$ & = & class of all nonnegative integers, \\
                  $y$ & = & class of all integers, that can be written as sum of four squares,
                \end{tabularx}
                \par
                but if they have the same members, they are the same class.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Die Klassen $x$ and $y$ können verschieden definiert sein, beispielsweise:
                \par
                \begin{tabularx}{\linewidth}{rcX}
                  $x$ & = & Klasse aller nichtnegativen ganzen Zahlen, \\
                  $y$ & = & Klasse aller ganzen Zahlen, die als Summe von vier Quadraten geschreiben werden können,
                \end{tabularx}
                \par
                aber wenn sie dieselben Elemente besitzen, sind sie gleich.
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>
        <NODE id="definition:isSet">
          <NAME>
            <LATEX language="en">is set</LATEX>
            <LATEX language="de">ist Menge</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Set\index{set!definition}</LATEX>
            <LATEX language="de">Menge\index{Menge!Definition}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              Now we specify \emph{sets}.
            </LATEX>
            <LATEX language="de">
              Jetzt legen wir fest, was eine \emph{Menge} ist.
            </LATEX>
          </PRECEDING>
          <DEFINITION_PREDICATE arguments="1" name="isSet">
            <LATEXPATTERN>\mathfrak{M}(#1)</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
            </VARLIST>
            <FORMULA>
              <EXISTS>
                <VAR id="y"/>
                <PREDCON ref="in">
                  <VAR id="x"/>
                  <VAR id="y"/>
                </PREDCON>
              </EXISTS>
            </FORMULA>
          </DEFINITION_PREDICATE>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[
                So sets are nothing else than special classes. A class is a set iff it is a member of any class.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Mengen sind also nichts anderes, als Klassen mit einer besonderen Eigenschaft. Eine Klasse ist genau dann eine Menge, wenn sie Element irgendeiner Klasse ist.
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>
        <NODE id="theorem:extensionalitySetRestricted" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                As a consequence of the axiom of extensionality we have the following.\footnote{The quantification over $z$ is restricted to sets.}
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Als erste Folgerung aus dem Extensionalitätsaxiom erhalten wir das Folgende.\footnote{Es wird ein eingeschränkter Allquantor benutzt, $z$ läuft nur über Mengen.}
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <FORALL>
                  <VAR id="z"/>
                  <PREDCON ref="isSet">
                    <VAR id="z"/>
                  </PREDCON>
                  <EQUI>
                    <PREDCON ref="in">
                      <VAR id="z"/>
                      <VAR id="x"/>
                    </PREDCON>
                    <PREDCON ref="in">
                      <VAR id="z"/>
                      <VAR id="y"/>
                    </PREDCON>
                  </EQUI>
                </FORALL>
                <PREDCON ref="equal">
                  <VAR id="x"/>
                  <VAR id="y"/>
                </PREDCON>
              </IMPL>
            </FORMULA>
            <PROOF kind="informal" level="1">
              <LATEX language="en">
                <![CDATA[
                  Assume $\forall \ \mathfrak{M}(z) \ ( z \in x \ \leftrightarrow \ z \in y)$. Let $z$ be an arbitrary class. If $z \in x$ then $z$ is a set by definition~\ref{definition:isSet}, and hence by the assumption, $z \in y$. similarly $z \in y \ \rightarrow \ z \in x$. Since $z$ is arbitrary, it follows that $\forall z \ (z \in x \ \leftrightarrow \ z \in y)$. Thus by    the axiom of extensionality~\ref{axiom:extensionality}, $x = y$. 
                ]]>
              </LATEX>
              <LATEX language="de">
                <![CDATA[
                  Angenommen es gelte $\forall \ \mathfrak{M}(z) \ ( z \in x \ \leftrightarrow \ z \in y)$. Sei $z$ eine beliebige Klasse. Falls $z \in x$ dann gilt $z$ ist eine Menge nach Definition~\ref{definition:isSet}, und daraus folgt mit der Annahme $z \in y$. Analog folgt $z \in y \ \rightarrow \ z \in x$. Da $z$ beliebig, haben wir $\forall z \ (z \in x \ \leftrightarrow \ z \in y)$. Und mit dem  Extensionalitätsaxiom~\ref{axiom:extensionality} erhalten wir daraus $x = y$. 
                ]]>
              </LATEX>
            </PROOF>
          </THEOREM>
        </NODE>

        <NODE id="theorem:extensonalityEquivalence" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                We can also reverse the implication in the axiom of extensionality.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Weiterhin können wir in dem Extensionalitätsaxiom die Implikation umkehren.
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="equal">
                  <VAR id="x"/>
                  <VAR id="y"/>
                </PREDCON>
                <FORALL>
                  <VAR id="z"/>
                  <EQUI>
                    <PREDCON ref="in">
                      <VAR id="z"/>
                      <VAR id="x"/>
                    </PREDCON>
                    <PREDCON ref="in">
                      <VAR id="z"/>
                      <VAR id="y"/>
                    </PREDCON>
                  </EQUI>
                </FORALL>
              </EQUI>
            </FORMULA>
            <PROOF kind="informal" level="1">
              <LATEX language="en">
                 This a simple consequence of the second identity axiom.
              </LATEX>
              <LATEX language="de">
                 Dies ist eine einfache Anwendung des zweiten identitätslogischen Axioms.
              </LATEX>
            </PROOF>
          </THEOREM>
        </NODE>

        <NODE id="axiom:comprehension">
          <NAME>
            <LATEX language="en">axiom of comprehension</LATEX>
            <LATEX language="de">Komprehensionsaxiom</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Comprehension</LATEX>
            <LATEX language="de">Komprehension</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                Our next set theoretic axiom makes it simple to create new classes. A class could be characterized by a predicate calculus formula.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Unser nächstes Axiom der Mengenlehre ermöglicht uns in simpler Art und Weise neue Klassen zu bilden. Eine Klasse wird ganz einfach durch die Angabe einer prädikatenlogischen Formel charakterisiert. 
              ]]>
            </LATEX>
          </PRECEDING>
          <AXIOM>
            <FORMULA>
              <EXISTS>
                <VAR id="x"/>
                <FORALL>
                  <VAR id="y"/>
                  <EQUI>
                    <PREDCON ref="in">
                      <VAR id="y"/>
                      <VAR id="x"/>
                    </PREDCON>
                    <AND>
                      <PREDCON ref="isSet">
                        <VAR id="y"/>
                      </PREDCON>
                      <PREDVAR id="\phi">
                        <VAR id="y"/>
                      </PREDVAR>
                    </AND>
                  </EQUI>
                </FORALL>
              </EXISTS>
            </FORMULA>
          </AXIOM>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[
                \index{NBG}By a small modification of the above axiom we could get a \emph{NBG} axiom system of set theory due to \emph{John von Neumann}, \emph{Isaak Bernays} and \emph{Kurt Gödel}.\index{predicative}\index{Formula, predicative}
                For that purpose we call a formula \emph{predicative}, if all of its bound subject variables are restricted to sets.
                Therefore predicative formulas formalize `set properties'.\footnote{A little bit more formal: within a predicative formula all quantifier variables run over sets: $\forall \ \mathfrak{M}(x) \ \exists \ \mathfrak{M}(y) \ldots$}
                So if we postulate $\phi$ to be predicative we achieve a NBG system together with the following axioms.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                \index{NBG}Durch eine kleine Änderung dieses Axioms würden wir im Folgenden ein \emph{NBG}-Axiomensystem der Mengenlehre erhalten, welches auf \emph{John von Neumann}, \emph{Isaak Bernays} und \emph{Kurt Gödel} zurückgeht.\index{prädikativ}\index{Formel, prädikative}
                Dazu definieren wir: eine Formel, in der alle gebundenen Subjektvariablen auf Mengen restringiert sind wird \emph{prädikative Formel} genannt. Prädikative Formeln formalisieren also diejenigen Eigenschaften, die man als {\glqq Eigenschaften von Mengen\grqq} bezeichnen kann.\footnote{Noch etwas formaler: in einer prädikativen Formel laufen alle Quantorenvariablen nur über Mengen: $\forall \ \mathfrak{M}(x) \ \exists \ \mathfrak{M}(y) \ldots$}
                Fordern wir nun also zusätzlich, dass $\phi$ prädikativ sein muss, dann erhalten wir im zusammen mit den folgenden Axiomen ein NBG-System.
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>

        <NODE id="theorem:comprehension" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                By the comprehension axiom and the axiom of extensionality a relationship between a formula $\phi(y)$ and the class defined by this formula is described. The comprehension axiom proposes the existence of at least one class, where the proposition $\mathfrak{M}(y) \land \phi(y)$ holds for all of its elements. The axiom of extensionality and the identity axioms make sure, that there is maximal one class of this kind: two classes with the same elements are equal in the sense of replacement in all appropriate propositions. In other words: there is one and only one such class.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Durch das Komprehensionsaxiom und die Extensionalität wird nun der Zusammenhang zwischen einer Aussage $\phi(y)$ und der durch sie definierten Klasse festgelegt. Dabei behauptet das Komprehensionsaxiom die Existenz mindestens einer Klasse, deren Elemente die Aussage $\mathfrak{M}(y) \land \phi(y)$ erfüllen. Das Extensionalitätsaxiom und die Gleichheitsaxiome sichern ab, dass es höchstens eine solche Klasse gibt: irgend zwei Klassen, welche dieselben Elemente besitzen, sind gleich im Sinne der Ersetzbarkeit in allen einschlägigen Aussagen. Mit anderen Worten: es gibt nur genau eine solche Klasse.
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EXISTSU>
                <VAR id="x"/>
                <FORALL>
                  <VAR id="y"/>
                  <EQUI>
                    <PREDCON ref="in">
                      <VAR id="x"/>
                      <VAR id="y"/>
                    </PREDCON>
                    <AND>
                      <PREDCON ref="isSet">
                        <VAR id="y"/>
                      </PREDCON>
                      <PREDVAR id="\phi">
                        <VAR id="y"/>
                      </PREDVAR>
                    </AND>
                  </EQUI>
                </FORALL>
              </EXISTSU>
            </FORMULA>
            <PROOF kind="informal" level="1">
              <LATEX language="en">
                <![CDATA[
                  We must show:
                  $$
                  \begin{array}{rl}
                  \exists x                      & \forall y \ (y \in x \leftrightarrow  \ \mathfrak{M}(y) \land \phi(y)) \\
                  \land \ \forall u \ \forall v  & (\forall y \ (y \in u \leftrightarrow \mathfrak{M}(y) \land \phi(y)) \ \land  \ \forall y \ ( y \in v \leftrightarrow \ \mathfrak{M}(y) \land \phi(y))) \\
                         & \qquad \rightarrow u = v)
                  \end{array}
                  $$
                  Let $u$ and $v$ be arbitrary. Furthermore let us assume:

                  \par
                  $\forall y \ (y \in u \leftrightarrow \ \mathfrak{M}(y) \land \phi(y)) \land \ \forall y \ ( y \in v \leftrightarrow \mathfrak{M}(y)
                  \land \phi(y)))$

                  \par
                  Now with \hyperref{http://www.qedeq.org/current/doc/math/qedeq_logic_v1.pdf}{}{allandpp}{allandpp}: $\forall y \ ((y \in u \leftrightarrow \mathfrak{M}(y) \land \phi(y)) \land (y \in v \leftrightarrow \mathfrak{M}(y) \land \phi(y)))$

                  \par
                  With \hyperref{http://www.qedeq.org/current/doc/math/qedeq_logic_v1.pdf}{}{andequi}{andequi} we derive: $\forall y \ ((y \in u \leftrightarrow y \in v ))$. And with Proposition~\ref{theorem:extensonalityEquivalence} follows $u = v$. So we have shown:

                  \par
                  $\forall u \ \forall v \ (\forall y \ (y \in u \leftrightarrow \mathfrak{M}(y) \land \phi(y)) \land \ \forall y \ (y \in v \leftrightarrow \mathfrak{M}(y) \land \phi(y))) \rightarrow u = v)$

                  \par
                  Together with axiom~\ref{axiom:comprehension} we get the proposition.
                ]]>
              </LATEX>
              <LATEX language="de">
                <![CDATA[
                  Zu zeigen ist:
                  $$
                  \begin{array}{rl}
                  \exists x                      & \forall y \ (y \in x \leftrightarrow  \ \mathfrak{M}(y) \land \phi(y)) \\
                  \land \ \forall u \ \forall v  & (\forall y \ (y \in u \leftrightarrow \mathfrak{M}(y) \land \phi(y)) \ \land  \ \forall y \ ( y \in v \leftrightarrow \ \mathfrak{M}(y) \land \phi(y))) \\
                         & \qquad \rightarrow u = v)
                  \end{array}
                  $$
                  Seien $u$ und $v$ beliebig. Es gelte weiterhin:

                  \par
                  $\forall y \ (y \in u \leftrightarrow \ \mathfrak{M}(y) \land \phi(y)) \land \ \forall y \ ( y \in v \leftrightarrow \mathfrak{M}(y)
                  \land \phi(y)))$

                  \par
                  Dann folgt mit \hyperref{http://www.qedeq.org/current/doc/math/qedeq_logic_v1_de.pdf}{}{allandpp}{Formel 3.37}: $\forall y \ ((y \in u \leftrightarrow \mathfrak{M}(y) \land \phi(y)) \land (y \in v \leftrightarrow \mathfrak{M}(y) \land \phi(y)))$

                  \par
                  Daraus erhalten wir mit \hyperref{http://www.qedeq.org/current/doc/math/qedeq_logic_v1_de.pdf}{}{andequi}{Formel 3.31}: $\forall y \ ((y \in u \leftrightarrow y \in v ))$. Und mit Proposition~\ref{theorem:extensonalityEquivalence} folgt nun $u = v$. Also haben wir gezeigt:

                  \par
                  $\forall u \ \forall v \ (\forall y \ (y \in u \leftrightarrow \mathfrak{M}(y) \land \phi(y)) \land \ \forall y \ (y \in v \leftrightarrow \mathfrak{M}(y) \land \phi(y))) \rightarrow u = v)$

                  \par
                  Zusammen mit Axiom~\ref{axiom:comprehension} folgt nun die Behauptung.
                ]]>
              </LATEX>
            </PROOF>
          </THEOREM>
        </NODE>

        <NODE id="rule:classDefinition">
          <NAME>
            <LATEX language="en">class definition</LATEX>
            <LATEX language="de">Klassenschreibweise</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Class definition</LATEX>
            <LATEX language="de">Klassenschreibweise</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                Starting with \ref{theorem:comprehension} we can extend the syntax and provide a new abbreviation.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Ausgehend von \ref{theorem:comprehension} können wir die Sprachsyntax erweitern und eine neue abkürzende Schreibweise einführen.
              ]]>
            </LATEX>
          </PRECEDING>
          <RULE name="SET_DEFINION_BY_FORMULA">
            <LINK id="theorem:comprehension"/>
            <DESCRIPTION>
              <LATEX language="en">
                <![CDATA[
                  For every formula $\alpha(x)$ we define the term expression $\{ x \ | \ \alpha(x)\}$ by
                  $$
                    \exists y \ (y = \{x \ | \ \alpha(x) \} \ \land \ \forall x \ x \in y \ \leftrightarrow \mathfrak{M}(x) \ \land \alpha(x))
                  $$
                  
                  \par
                  The free variables from $\{ x \ | \ \alpha(x)\}$ are the free variables from $\alpha(x)$ without $\{ x \}$. The bound variables correspond to the bound variables of $\alpha(x)$. All deduction rules are accordingly extended.
                  
                ]]>
              </LATEX>
              <LATEX language="de">
                <![CDATA[
                  Für jede Formel $\alpha(x)$ definieren wir den Termausdruck $\{ x \ | \ \alpha(x)\}$ durch 
                  $$
                    \exists y \ (y = \{x \ | \ \alpha(x) \} \ \land \ \forall x \ x \in y \ \leftrightarrow \mathfrak{M}(x) \ \land \alpha(x))
                  $$
                  
                  \par
                  Die freien Variablen von $\{ x \ | \ \alpha(x)\}$ sind die freien Variablen von $\alpha(x)$ vermindert um $\{ x \}$. Die gebunden Variablen entsprechen den gebunden Variablen von $\alpha(x)$. Alle Ableitungsregln werden entsprechend erweitert.
                
%old                
%                  Der Ausdruck $\{ x | \alpha(x)\}$ bezeichnet ebenfalls einen Term. Sei $\beta(y)$ eine Formel und $beta(\{x | \alpha(x)\}$ die Formel, die bei Ersetzung von y durch den angegebenen Term entstehende Formel. Diese Formel kann ersetzt werden durch $\beta(y) \ \land \ \forall x \ x \in y \leftrightarrow \mathfrak{M}(x) \ \land \ \alpha(y)$. 
%                  \par
%                  In dem Term $\{ x | \alpha(x)\}$ gilt $x$ als gebunden und der Term besitzt zusätzlich die gebunden Variablen von $\alpha$ als gebundene Variablen. Die freien Variablen von $\alpha$ sind auch die freien Variablen des neuen Termausdrucks.
                ]]>
              </LATEX>
            </DESCRIPTION>
          </RULE>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[
                In particular the substitution rules must be adapted.\footnote{Because now a term can have bound subject variables. Luckily we formulated the substitution rules with this extension already in our mind, so we have nothing to do.} This is a \emph{conservative} extension of our (not so) formal language. This means that no new mathematical content can be derived. It is just convenient to have an elegant new notation.\footnote{
                A conservative extension defined by the following.
                Let $\mathfrak{L}$ be a language and $\mathfrak{L'}$ an extension of $\mathfrak{L}$. Because $\mathfrak{L'} \supset \mathfrak{L}$ it follows $\mbox{Formula}_\mathfrak{L'} \supset \mbox{Formula}_\mathfrak{L}$. If now for every set of formulas $\Gamma \subseteq \mbox{Formula}_\mathfrak{L}$ and each formula $\alpha \in \mbox{Formula}_\mathfrak{L}$ this proposition holds: $\Gamma \vdash_\mathfrak{L'} \alpha \ \Rightarrow \ \Gamma \vdash_\mathfrak{L} \alpha$, then $\mathfrak{L'}$ is called a \emph{conservative} extension of $\mathfrak{L}$.} 
                
                
                In the following this new notation is used.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                 Insbesondere müssen die Substitutionsregeln angepasst werden.\footnote{Weil nun ein Term auch gebundene Subjektvariablen besitzen kann. Glücklicherweise haben wir das jedoch schon bei der Formulierung unserer Substitutionsregeln berücksichtigt, so dass wir nicht s tun müssen.} Es handelt sich hierbei um eine \emph{konservative} Erweiterung\footnote{Unter einer konservativen Erweiterung  verstehen wir das Folgende: Sei $\mathfrak{L}$ eine Sprache und $\mathfrak{L'}$ eine Erweiterung von $\mathfrak{L}$. Da $\mathfrak{L'} \supset \mathfrak{L}$ gilt auch $\mbox{Formel}_\mathfrak{L'} \supset \mbox{Formel}_\mathfrak{L}$. Falls nun für jede Formelmenge $\Gamma \subseteq \mbox{Formel}_\mathfrak{L}$ und jede Formel $\alpha \in \mbox{Formel}_\mathfrak{L}$ gilt: $\Gamma \vdash_\mathfrak{L'} \alpha \ \Rightarrow \ \Gamma \vdash_\mathfrak{L} \alpha$, dann heißt $\mathfrak{L'}$ eine \emph{konservative} Erweiterung von $\mathfrak{L}$.}.

%old                
%                { x | alpha (x)} = { x | alpha (x)}
%                y = y n All x x in y <-> M(x) n alpha(x)
                
                Im Folgenden wird auf diese Schreibweise zurückgegriffen.
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>


        <NODE id="theorem:setNotation" level="1">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                This new notation can be easily transformed in the old syntax. Using the new term type with the initial predicates can be expressed as follows.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Die neue Schreibweise kann auch in einfacher Weise in die alte Syntax transformiert werden.
                Die Gültigkeit der Ausgangsprädikate drückt sich für diese neue Termart wie folgt aus.
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>
                <EQUI>
                  <PREDCON ref="in">
                    <VAR id="y"/>
                    <CLASS>
                      <VAR id="x"/>
                      <PREDVAR id="\phi">
                        <VAR id="x"/>
                      </PREDVAR>
                    </CLASS>
                  </PREDCON>
                  <AND>
                    <PREDCON ref="isSet">
                      <VAR id="y"/>
                    </PREDCON>
                    <PREDVAR id="\phi">
                      <VAR id="y"/>
                    </PREDVAR>
                  </AND>
                </EQUI>
                <EQUI>
                  <PREDCON ref="equal">
                    <VAR id="y"/>
                    <CLASS>
                      <VAR id="x"/>
                      <PREDVAR id="\phi">
                        <VAR id="x"/>
                      </PREDVAR>
                    </CLASS>
                  </PREDCON>
                  <FORALL>
                    <VAR id="z"/>
                    <EQUI>
                      <PREDCON ref="in">
                        <VAR id="z"/>
                        <VAR id="y"/>
                      </PREDCON>
                      <PREDCON ref="in">
                        <VAR id="z"/>
                        <CLASS>
                          <VAR id="x"/>
                          <PREDVAR id="\phi">
                            <VAR id="x"/>
                          </PREDVAR>
                        </CLASS>
                      </PREDCON>
                    </EQUI>
                  </FORALL>
                </EQUI>
                <EQUI>
                  <PREDCON ref="equal">
                    <CLASS>
                      <VAR id="x"/>
                      <PREDVAR id="\phi">
                        <VAR id="x"/>
                      </PREDVAR>
                    </CLASS>
                    <CLASS>
                      <VAR id="x"/>
                      <PREDVAR id="\psi">
                        <VAR id="x"/>
                      </PREDVAR>
                    </CLASS>
                  </PREDCON>
                  <FORALL>
                    <VAR id="z"/>
                    <EQUI>
                      <PREDCON ref="in">
                        <VAR id="z"/>
                        <CLASS>
                          <VAR id="x"/>
                          <PREDVAR id="\phi">
                            <VAR id="x"/>
                          </PREDVAR>
                        </CLASS>
                      </PREDCON>
                      <PREDCON ref="in">
                        <VAR id="z"/>
                        <CLASS>
                          <VAR id="x"/>
                          <PREDVAR id="\psi">
                            <VAR id="x"/>
                          </PREDVAR>
                        </CLASS>
                      </PREDCON>
                    </EQUI>
                  </FORALL>
                </EQUI>
                <EQUI>
                  <PREDCON ref="in">
                    <CLASS>
                      <VAR id="x"/>
                      <PREDVAR id="\phi">
                        <VAR id="x"/>
                      </PREDVAR>
                    </CLASS>
                    <CLASS>
                      <VAR id="x"/>
                      <PREDVAR id="\psi">
                        <VAR id="x"/>
                      </PREDVAR>
                    </CLASS>
                  </PREDCON>
                  <FORALL>
                    <VAR id="u"/>
                    <FORALL>
                      <VAR id="v"/>
                      <IMPL>
                        <AND>
                          <PREDCON ref="equal">
                            <VAR id="u"/>
                            <CLASS>
                              <VAR id="x"/>
                              <PREDVAR id="\phi">
                                <VAR id="x"/>
                              </PREDVAR>
                            </CLASS>
                          </PREDCON>
                          <PREDCON ref="equal">
                            <VAR id="v"/>
                            <CLASS>
                              <VAR id="x"/>
                              <PREDVAR id="\psi">
                                <VAR id="x"/>
                              </PREDVAR>
                            </CLASS>
                          </PREDCON>
                        </AND>
                        <PREDCON ref="in">
                          <VAR id="u"/>
                          <VAR id="v"/>
                        </PREDCON>
                      </IMPL>
                    </FORALL>
                  </FORALL>
                </EQUI>
                <EQUI>
                  <PREDCON ref="in">
                    <CLASS>
                      <VAR id="x"/>
                      <PREDVAR id="\phi">
                        <VAR id="x"/>
                      </PREDVAR>
                    </CLASS>
                    <VAR id="y"/>
                  </PREDCON>
                  <FORALL>
                    <VAR id="u"/>
                    <IMPL>
                      <PREDCON ref="equal">
                        <VAR id="u"/>
                        <CLASS>
                          <VAR id="x"/>
                          <PREDVAR id="\phi">
                            <VAR id="x"/>
                          </PREDVAR>
                        </CLASS>
                      </PREDCON>
                      <PREDCON ref="in">
                        <VAR id="u"/>
                        <VAR id="y"/>
                      </PREDCON>
                    </IMPL>
                  </FORALL>
                </EQUI>
              </AND>
            </FORMULA>
            <DESCRIPTION>
              <LATEX language="en">
                <![CDATA[
                  +++ if the formula would be rendered correctly it should look like this: \\
                  \begin{align}
                  y \in \{ x~|~\phi(x) \} & \leftrightarrow  \mathfrak{M}(y) \land \phi(y) \tag{a} \\
                  y = \{ x~|~ \phi(x) \} & \leftrightarrow  \forall z \ (z \in y \leftrightarrow z \in \{ x~|~\phi(x) \}) \tag{b} \\
                  \{ x~|~\phi(x) \} = \{ x~|~\psi(x) \} & \leftrightarrow \forall z \ (z \in \{ x~|~\phi(x) \} \tag{c} \\
                  \begin{split}
                    & \qquad \leftrightarrow z \in \{x~|~\psi(x) \}) \nonumber \\
                  \{ x~|~\phi(x) \} \in \{ x~|~\psi(x) \} & \leftrightarrow  \forall u \ \forall
                  v \ ((u  = \{ x~|~\phi(x) \} \\
                    & \qquad \land \ v = \{ x~|~\psi(x) \}) \rightarrow u \in v) 
                  \end{split} \tag{d} \\
                  \{ x~|~\phi(x) \} \in y & \leftrightarrow  \forall u \ (u  = \{ x~|~\phi(x) \}  \rightarrow u \in y) \tag{e} 
                  \end{align}
                ]]>
              </LATEX>
              <LATEX language="de">
                <![CDATA[
                  +++ wenn diese Formel richtig gesetzt würde, sollte sie so aussehen:
                  \begin{align}
                  y \in \{ x~|~\phi(x) \} & \leftrightarrow  \mathfrak{M}(y) \land \phi(y) \tag{a} \\
                  y = \{ x~|~ \phi(x) \} & \leftrightarrow  \forall z \ (z \in y \leftrightarrow z \in \{ x~|~\phi(x) \}) \tag{b} \\
                  \{ x~|~\phi(x) \} = \{ x~|~\psi(x) \} & \leftrightarrow \forall z \ (z \in \{ x~|~\phi(x) \} \tag{c} \\
                  \begin{split}
                    & \qquad \leftrightarrow z \in \{x~|~\psi(x) \}) \nonumber \\
                  \{ x~|~\phi(x) \} \in \{ x~|~\psi(x) \} & \leftrightarrow  \forall u \ \forall
                  v \ ((u  = \{ x~|~\phi(x) \} \\
                    & \qquad \land \ v = \{ x~|~\psi(x) \}) \rightarrow u \in v) 
                  \end{split} \tag{d} \\
                  \{ x~|~\phi(x) \} \in y & \leftrightarrow  \forall u \ (u  = \{ x~|~\phi(x) \}  \rightarrow u \in y) \tag{e} 
                  \end{align}
                ]]>
              </LATEX>
            </DESCRIPTION>
            <PROOF kind="informal" level="1">
              <LATEX language="en">
                <![CDATA[
                  +++ missing.
                ]]>
              </LATEX>
              <LATEX language="de">
                <![CDATA[
                  +++ fehlt noch.
                ]]>
              </LATEX>
            </PROOF>
          </THEOREM>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[
                Therefore the new syntax can be eliminated by successive applying the above theorems.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Durch sukzessives Anwenden des obigen Satzes kann also die neue Syntax in die alte überführt werden.
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>
        
        <NODE id="theorem:setDefinitionUnique" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                Because the new notation fixes a term completely the following must be true.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Da durch die neue Schreibweise ein Term eindeutig festgelegt wird, muss natürlich auch das Folgende gelten.
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EXISTSU>
                <VAR id="x" />
                <PREDCON ref="equal">
                  <VAR id="x" />
                  <CLASS>
                    <VAR id="y" />
                    <PREDVAR id="\phi">
                      <VAR id="y"/>
                    </PREDVAR>
                  </CLASS>
                </PREDCON>
              </EXISTSU>
            </FORMULA>
          </THEOREM>
        </NODE>
        
        <NODE id="theorem:propositionEqualImplClassEqual" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                
                The equivalence of properties enables us to conclude the identy of the associated classes.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                
                Aus der Äquivalenz von Aussageformen kann auf die Gleichheit der daraus gebildeten Klassen geschlossen werden.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <FORALL>
                  <VAR id="x" />
                  <EQUI>
                    <PREDVAR id="\phi">
                      <VAR id="x" />
                    </PREDVAR>
                    <PREDVAR id="\psi">
                      <VAR id="x" />
                    </PREDVAR>
                  </EQUI>
                </FORALL>
                <PREDCON ref="equal">
                  <CLASS>
                    <VAR id="y" />
                    <PREDVAR id="\phi">
                      <VAR id="y" />
                    </PREDVAR>
                  </CLASS>
                  <CLASS>
                    <VAR id="y" />
                    <PREDVAR id="\psi">
                      <VAR id="y" />
                    </PREDVAR>
                  </CLASS>
                </PREDCON>
              </IMPL>
            </FORMULA>
          </THEOREM>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[

                We remark that the reverse implication is false.

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die Umkehrung gilt jedoch nicht.

              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>

        <NODE id="theorem:classDescriptionPossible" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Every class can be described by a property: being a member of the class.

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Jede Klasse lässt sich durch eine Aussage beschreiben, indem auf ihre Elemente Bezug genommen wird.

              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <PREDCON ref="equal">
                 <VAR id="x" />
                 <CLASS>
                   <VAR id="y" />
                   <PREDCON ref="in">
                     <VAR id="y" />
                     <VAR id="x" />
                   </PREDCON>
                 </CLASS>
              </PREDCON>
            </FORMULA>
          </THEOREM>
        </NODE>
        
      </SUBSECTIONS>
    </SECTION>
    <SECTION>
      <TITLE>
        <LATEX language="en">
           Special Classes
        </LATEX>
        <LATEX language="de">
           Spezielle Klassen
        </LATEX>
      </TITLE>
      <INTRODUCTION>
        <LATEX language="en">
          <![CDATA[

            In this section we define our first classes.
            
          ]]>
        </LATEX>
        <LATEX language="de">
          <![CDATA[

            In diesem Abschnitt definieren wir die ersten Klassen.
            
          ]]>
        </LATEX>
      </INTRODUCTION>
      
      <SUBSECTIONS>
        <NODE id="definition:RussellClass" level="formal">
          <NAME>
            <LATEX language="en">Russell class</LATEX>
            <LATEX language="de">Russellsche Klasse</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Russell Class\index{Russell!class of}\index{class!Russell}</LATEX>
            <LATEX language="de">Russell-Klasse\index{Russell!-sche Klasse}\index{Klasse!Russellsche}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Russells class can now be simply defined.

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die Russellsche Klasse kann nun einfach definiert werden.

              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="0" name="RussellClass">
            <LATEXPATTERN>\mathfrak{Ru}</LATEXPATTERN>
            <TERM>
              <CLASS>
                <VAR id="x" />
                <PREDCON ref="notIn">
                  <VAR id="x" />
                  <VAR id="x" />
                 </PREDCON>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
        </NODE>

        <NODE id="theorem:RussellClassIsClass" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                The Russell class is a \emph{proper}\index{proper}\index{class!proper} class. This means it is no set.

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die Russellsche Klasse ist eine \emph{echte}\index{echt}\index{Klasse!echte} Klasse, d.~h. sie ist keine Menge.

              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <NOT>
                <PREDCON ref="isSet">
                  <FUNCON ref="RussellClass" />
                </PREDCON>
              </NOT>
            </FORMULA>
          </THEOREM>
        </NODE>


        <NODE id="definition:universalClass" level="formal">
          <NAME>
            <LATEX language="en">universal class</LATEX>
            <LATEX language="de">Allklasse</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Universal Class\index{class!universal}\index{universal class}</LATEX>
            <LATEX language="de">Allklasse\index{Klasse!All-}\index{Allklasse}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                The \emph{universal class} should contain everything.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die \emph{Allklasse} soll alles mögliche umfassen.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="0" name="universalClass">
            <LATEXPATTERN>\mathfrak{V}</LATEXPATTERN>
            <TERM>
              <CLASS>
                <VAR id="x" />
                <PREDCON ref="equal">
                  <VAR id="x" />
                  <VAR id="x" />
                 </PREDCON>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
        </NODE>

        <NODE id="theorem:universalClassContainsAllSets" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                At least the universal class contains all sets.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Zumindest umfasst die Allklasse alle Mengen.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <PREDCON ref="equal">
                <FUNCON ref="universalClass" />
                <CLASS>
                  <VAR id="x" />
                  <PREDCON ref="isSet">
                    <VAR id="x" />
                  </PREDCON>
                </CLASS>
              </PREDCON>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:isInUniversalClass" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Being in the universal class is therefore the same as being a set.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Mitgliedschaft in der Allklasse ist daher gleichbedeutet mit der 
                Eigenschaft eine Menge zu sein.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="in">
                  <VAR id="x" />
                  <FUNCON ref="universalClass" />
                </PREDCON>
                <PREDCON ref="isSet">
                  <VAR id="x" />
                </PREDCON>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="definition:emptySet" level="formal">
          <NAME>
            <LATEX language="en">empty class</LATEX>
            <LATEX language="de">Leere Klasse</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Empty Class\index{empty class}\index{empty set}\index{class!empty}\index{set!empty}</LATEX>
            <LATEX language="de">Leere Klasse\index{leere Klasse}\index{leere Menge}\index{Klasse!leere}\index{Menge!leere}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Analogous we define the \emph{empty class}. Later on we will learn that the empty class
                is a set. To achieve this result we lack some other set axioms. Nevertheless we might already call this class \emph{empty set} sometime.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Entsprechend definieren wir die \emph{leere Klasse}. Später werden wir feststellen, dass die leere Klasse
                eine Menge ist. Dazu benötigen wir jedoch weitere Mengenaxiome. Wir bezeichnen diese Klasse jedoch
                schon jetzt mit den Worten \emph{leere Menge}.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="0" name="emptySet">
            <LATEXPATTERN>\emptyset</LATEXPATTERN>
            <TERM>
              <CLASS>
                <VAR id="x" />
                  <PREDCON ref="notEqual">
                    <VAR id="x" />
                    <VAR id="x" />
                 </PREDCON>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
        </NODE>

        <NODE id="theorem:noClassIsMemberOfEmptySet" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                No class is element of the empty class.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Keine Klasse ist Element der leeren Klasse.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <FORALL>
                <VAR id="z" />
                <PREDCON ref="notIn">
                  <VAR id="z" />
                  <FUNCON ref="emptySet" />
                </PREDCON>
              </FORALL>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:noClassIsMemberIsEmptySet" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
              
                A class with no elements is the empty class.
  
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Eine Klasse, welche keine Elemente besitzt, ist die leere Klasse.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <FORALL>
                  <VAR id="z" />
                  <PREDCON ref="notIn">
                    <VAR id="z" />
                    <VAR id="x" />
                  </PREDCON>
                </FORALL>
                <PREDCON ref="equal">
                  <VAR id="x" />
                  <FUNCON ref="emptySet" />
                </PREDCON>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

      </SUBSECTIONS>

    </SECTION>
  </CHAPTER>
  
  <CHAPTER>
    <TITLE>
      <LATEX language="en">
         Boolean Algebra of Classes\index{Boolean algebra!of classes}
      </LATEX>
      <LATEX language="de">
         Boolesche Algebra der Klassen\index{Boolesche Algebra!der Klassen}
      </LATEX>
    </TITLE>
    <INTRODUCTION>
      <LATEX language="en">
        <![CDATA[

          Now the elementary class operations and their properties are described.
          
          A \emph{boolean algebra} is an algebraic structure that abstracts from the
          logical operators \emph{and}, \emph{or}, \emph{not} and their set theoretic
          connectives \emph{intersection}, \emph{union}, \emph{complement}.
          
          \par
          The name is due to \emph{G. Boole} who defined this structure to be able to
          use algebraic methods within propositional calculus.

        ]]>
      </LATEX>
      <LATEX language="de">
        <![CDATA[

          Die elementaren Operationen von Klassen und ihre Eigenschaften werden nun beschrieben.

          Eine Boolesche Algebra, oft auch Boolescher Verband genannt, ist eine spezielle algebraische
          Struktur, die die Eigenschaften der logischen Operatoren \emph{und}, \emph{oder}, \emph{nicht}
          sowie die Eigenschaften der mengentheoretischen Verknüpfungen \emph{Durchschnitt},
          \emph{Vereinigung} und \emph{Komplement} abstrahiert.

          \par
          Sie ist benannt nach \emph{G. Boole}, der sie in der Mitte des 19. Jahrhunderts definierte, um
          algebraische Methoden in der Aussagenlogik anwenden zu können.

        ]]>
      </LATEX>
    </INTRODUCTION>
    <SECTION>
      <TITLE>
        <LATEX language="en">
           Boolean Class Operators
        </LATEX>
        <LATEX language="de">
           Boolesche Klassenoperatoren
        </LATEX>
      </TITLE>
      <INTRODUCTION>
        <LATEX language="en">
          <![CDATA[

            With rule~\ref{rule:classDefinition} we can define new class operators with the
            help of logical connectives.

          ]]>
        </LATEX>
        <LATEX language="de">
          <![CDATA[

            Die Schreibweise bzw. Regel~\ref{rule:classDefinition} ermöglicht die Definition von Klassenperatoren mithilfe
            der logischen Verknüpfungen.

          ]]>
        </LATEX>
      </INTRODUCTION>
      <SUBSECTIONS>
        <NODE id="definition:union" level="formal">
          <NAME>
            <LATEX language="en">union</LATEX>
            <LATEX language="de">vereinigt mit</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Union Operator\index{union}\index{class!union}</LATEX>
            <LATEX language="de">Vereinigung\index{Vereinigung}\index{Klasse!Vereinigung}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                The union of two classes contains exactly all elements of both classes.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die Vereinigung zweier Klassen besteht aus den Elementen beider Klassen.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="2" name="union">
            <LATEXPATTERN>(#1 \cup #2)</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
              <VAR id="y"/>
            </VARLIST>
            <TERM>
              <CLASS>
                <VAR id="z" />
                <OR>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="x" />
                  </PREDCON>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="y" />
                  </PREDCON>
                </OR>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
        </NODE>

      
        <NODE id="definition:intersection" level="formal">
          <NAME>
            <LATEX language="en">intersection</LATEX>
            <LATEX language="de">geschnitten mit</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Intersection Operator\index{intersection}\index{class!intersection}</LATEX>
            <LATEX language="de">Durchschnitt\index{Durchschnitt}\index{Klasse!Durchschnitt}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Analogous the intersection of two classes is defined as the class which 
                contains exactly those elements that are member of both classes.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Entsprechend wird der Durchschnitt zweier Klassen definiert, als Klasse die aus den Elementen besteht, die in beiden Klassen vorhanden sind.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="2" name="intersection">
            <LATEXPATTERN>(#1 \cap #2)</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
              <VAR id="y"/>
            </VARLIST>
            <TERM>
              <CLASS>
                <VAR id="z" />
                <AND>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="x" />
                  </PREDCON>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="y" />
                  </PREDCON>
                </AND>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
        </NODE>

        <NODE id="definition:complement" level="formal">
          <NAME>
            <LATEX language="en">complement</LATEX>
            <LATEX language="de">Komplement von</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Complement Operator\index{complement}\index{class!complement}</LATEX>
            <LATEX language="de">Komplement\index{Komplement}\index{Klasse!Komplement}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Also the complement of a class can be simply defined.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Auch das Komplement einer Klasse kann einfach definiert werden.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="1" name="complement">
            <LATEXPATTERN>\overline{#1}</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
            </VARLIST>
            <TERM>
              <CLASS>
                <VAR id="z" />
                <PREDCON ref="notIn">
                  <VAR id="z" />
                  <VAR id="x" />
                </PREDCON>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
        </NODE>

        <NODE id="theorem:unionMember" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                If a set is an element of the union of two classes can be checked directly.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Ob eine Menge ein Element der Vereinigung zweier Klassen ist, kann natürlich auch direkt angegeben werden.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="in">
                  <VAR id="z" />
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                </PREDCON>
                <OR>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="x" />
                  </PREDCON>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="y" />
                  </PREDCON>
                </OR>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:intersectionMember" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Membership of an intersection can be written down directly too.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Entsprechendes gilt für den Durchschnitt zweier Klassen.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="in">
                  <VAR id="z" />
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                </PREDCON>
                <AND>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="x" />
                  </PREDCON>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <VAR id="y" />
                  </PREDCON>
                </AND>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:complementMember" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                For the membership of the complement we have a similar result but here we must check
                the property \emph{is a set} explicitly.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Analoges gilt für das Komplement, dort muss jedoch die Mengeneigenschaft explizit abgeprüft werden.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="in">
                  <VAR id="z" />
                  <FUNCON ref="complement">
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>
                <AND>
                  <PREDCON ref="isSet">
                    <VAR id="z" />
                  </PREDCON>
                  <PREDCON ref="notIn">
                    <VAR id="z" />
                    <VAR id="x" />
                  </PREDCON>
                </AND>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>


        <NODE id="theorem:unionIntersectionComplement" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                By the previous propositions we learned how to transform the logical 
                operators $\lor$, $\land$ and $\neg$ into the class operators $\cup$, $\cap$ and $\bar{~}$. So we are now able to transform the logical laws into set theoretic
                propositions.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die vorherigen Sätze zeigen die Übertragbarkeit der Eigenschaften der logischen Verknüpfungen $\lor$, $\land$ und $\neg$ auf die Klassenverknüpfungen $\cup$, $\cap$ und $\bar{~}$. Deshalb lassen sich die entsprechenden logischen Gesetzmässigkeiten direkt auf die Klassenverknüpfungen übertragen.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>

                <PREDCON ref="equal">
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                  <FUNCON ref="union">
                    <VAR id="y" />
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                  <FUNCON ref="intersection">
                    <VAR id="y" />
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="union">
                    <FUNCON ref="union">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <VAR id="z" />
                  </FUNCON>
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <FUNCON ref="union">
                      <VAR id="y" />
                      <VAR id="z" />
                    </FUNCON>
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="intersection">
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <VAR id="z" />
                  </FUNCON>
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <FUNCON ref="intersection">
                      <VAR id="y" />
                      <VAR id="z" />
                    </FUNCON>
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <VAR id="x" />
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <VAR id="x" />
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="complement">
                    <FUNCON ref="complement">
                      <VAR id="x" />
                    </FUNCON>
                  </FUNCON>
                  <VAR id="x" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="complement">
                    <FUNCON ref="union">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                  </FUNCON>
                  <FUNCON ref="intersection">
                    <FUNCON ref="complement">
                      <VAR id="x" />
                    </FUNCON>
                    <FUNCON ref="complement">
                      <VAR id="y" />
                    </FUNCON>
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="complement">
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                  </FUNCON>
                  <FUNCON ref="union">
                    <FUNCON ref="complement">
                      <VAR id="x" />
                    </FUNCON>
                    <FUNCON ref="complement">
                      <VAR id="y" />
                    </FUNCON>
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <FUNCON ref="intersection">
                      <VAR id="y" />
                      <VAR id="z" />
                    </FUNCON>
                  </FUNCON>
                  <FUNCON ref="intersection">
                    <FUNCON ref="union">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <FUNCON ref="union">
                      <VAR id="x" />
                      <VAR id="z" />
                    </FUNCON>
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <FUNCON ref="union">
                      <VAR id="y" />
                      <VAR id="z" />
                    </FUNCON>
                  </FUNCON>
                  <FUNCON ref="union">
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="z" />
                    </FUNCON>
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="complement">
                    <FUNCON ref="emptySet" />
                  </FUNCON>
                  <FUNCON ref="universalClass" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="complement">
                    <FUNCON ref="universalClass" />
                  </FUNCON>
                  <FUNCON ref="emptySet" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <FUNCON ref="universalClass" />
                  </FUNCON>
                  <VAR id="x" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <FUNCON ref="emptySet" />
                  </FUNCON>
                  <FUNCON ref="emptySet" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <FUNCON ref="universalClass" />
                  </FUNCON>
                  <FUNCON ref="universalClass" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <FUNCON ref="emptySet" />
                  </FUNCON>
                  <VAR id="x" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <FUNCON ref="complement">
                      <VAR id="x" />
                    </FUNCON>
                  </FUNCON>
                  <FUNCON ref="universalClass" />
                </PREDCON>

                <PREDCON ref="equal">
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <FUNCON ref="complement">
                      <VAR id="x" />
                    </FUNCON>
                  </FUNCON>
                  <FUNCON ref="emptySet" />
                </PREDCON>

              </AND>
            </FORMULA>
          </THEOREM>
        </NODE>

      </SUBSECTIONS>

    </SECTION>

    <SECTION>
      <TITLE>
        <LATEX language="en">
           Boolean Algebra\index{Boolean algebra}
        </LATEX>
        <LATEX language="de">
           Boolsche Algebra\index{Boolesche Algebra}
        </LATEX>
      </TITLE>
      <INTRODUCTION>
        <LATEX language="en">
          <![CDATA[

            The classes build together with the operators $\cap$, $\cup$, $\bar{~}$ and the
            constants $\emptyset$ a Boolean algebra\index{Boolean algebra},
            
            \par
            +++
            References to commutative law, associative law, distributive law, idempotence, etc.
            
          ]]>
        </LATEX>
        <LATEX language="de">
          <![CDATA[

            Die Klassen bilden mit den Operatoren $\cap$, $\cup$, $\bar{~}$ und den Konstanten $\emptyset$,
            $\mathfrak{V}$ eine Boolesche Algebra\index{Boolesche Algebra}.
            \par
            +++ 
            Referenzen zu Kommutativität, Assoziativität, Distributivität, Idempotenz, etc.

          ]]>
        </LATEX>
      </INTRODUCTION>
    </SECTION>

    <SECTION>
      <TITLE>
        <LATEX language="en">
           Order\index{order}
        </LATEX>
        <LATEX language="de">
           Ordnung\index{Ordnung}
        </LATEX>
      </TITLE>
      <INTRODUCTION>
        <LATEX language="en">
          <![CDATA[
          
            For a boolean algebra a \emph{partial order}\index{order!partial} relation can be defined. Therefore we can do 
            the same for the boolean class algebra.
          
          ]]>
        </LATEX>
        <LATEX language="de">
          <![CDATA[
          
            Für eine boolsche Algebra kann eine kanonische \emph{Teilordnung}\index{Teilordnung} definiert werden. Daher
            können wir auch für die Klassenalgebra eine Teilordnung festlegen.
          
          ]]>
        </LATEX>
      </INTRODUCTION>

      <SUBSECTIONS>
        <NODE id="definition:subclass" level="formal">
          <NAME>
            <LATEX language="en">subclass</LATEX>
            <LATEX language="de">Teilklasse von</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Subclass Predicate\index{subclass}\index{inclusion}</LATEX>
            <LATEX language="de">Teilklasse\index{Teilklasse}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                We define the \emph{subclass relation} (\emph{inclusion}) by an intersection.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Wir definieren die \emph{Teilklassenrelation} durch eine Schnittklassenbildung.
                
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_PREDICATE arguments="2" name="subclass">
            <LATEXPATTERN>#1 \ \subseteq \ #2</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
              <VAR id="y"/>
            </VARLIST>
            <FORMULA>
              <PREDCON ref="equal">
                <FUNCON ref="intersection">
                  <VAR id="x" />
                  <VAR id="y" />
                </FUNCON>
                  <VAR id="x" />
              </PREDCON>
            </FORMULA>
          </DEFINITION_PREDICATE>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[

                If $x$ and $y$ are sets we also say: $x$ is \emph{subset}\index{subset} of $y$.
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
              
                Sind $x$ und $y$ Mengen sagen wir auch: $x$ ist \emph{Teilmenge}\index{Teilmenge} von $y$.
                
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>
        
        <NODE id="theorem:subsetIfMemberschipImpl" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Now we get the common subclass definition as a proposition. 

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die übliche Definition der Teilklassenrelation erhalten wir nun als Satz.

              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="subclass">
                  <VAR id="x" />
                  <VAR id="y" />
                </PREDCON>                
                <FORALL>
                  <VAR id="z" />
                  <IMPL>
                    <PREDCON ref="in">
                      <VAR id="z" />
                      <VAR id="x" />
                    </PREDCON>
                    <PREDCON ref="in">
                      <VAR id="z" />
                      <VAR id="y" />
                    </PREDCON>
                  </IMPL>
                </FORALL>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:subsetIsPartialOrdered" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                This relation is reflexive, transitive and antisymmetric. As intended it is a partial order\index{order!partial} relation with $\emptyset$ as minimum and $\mathfrak{V}$ as maximum element.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Diese Relation ist reflexiv, transitiv und antisymmetrisch, definiert also eine Teilordnung\index{Teilordnung} mit $\emptyset$ als kleinstem und $\mathfrak{V}$ als größtem Element.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>
              
                <PREDCON ref="subclass">
                  <VAR id="x" />
                  <VAR id="x" />
                </PREDCON>

                <IMPL>
                  <AND>
                    <PREDCON ref="subclass">
                      <VAR id="x" />
                      <VAR id="y" />
                    </PREDCON>
                    <PREDCON ref="subclass">
                      <VAR id="y" />
                      <VAR id="z" />
                    </PREDCON>
                  </AND>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <VAR id="z" />
                  </PREDCON>
                </IMPL>

                <EQUI>
                  <AND>
                    <PREDCON ref="subclass">
                      <VAR id="x" />
                      <VAR id="y" />
                    </PREDCON>
                    <PREDCON ref="subclass">
                      <VAR id="y" />
                      <VAR id="x" />
                    </PREDCON>
                  </AND>
                  <PREDCON ref="equal">
                    <VAR id="x" />
                    <VAR id="y" />
                  </PREDCON>
                </EQUI>

                <PREDCON ref="subclass">
                  <FUNCON ref="emptySet" />
                  <VAR id="x" />
                </PREDCON>

                <PREDCON ref="subclass">
                  <VAR id="x" />
                  <FUNCON ref="universalClass" />
                </PREDCON>

                <IMPL>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <FUNCON ref="emptySet" />
                  </PREDCON>
                  <PREDCON ref="equal">
                    <VAR id="x" />
                    <FUNCON ref="emptySet" />
                  </PREDCON>
                </IMPL>

                <IMPL>
                  <PREDCON ref="subclass">
                    <FUNCON ref="universalClass" />
                    <VAR id="x" />
                  </PREDCON>
                  <PREDCON ref="equal">
                    <VAR id="x" />
                    <FUNCON ref="universalClass" />
                  </PREDCON>
                </IMPL>     
              </AND>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:intersectionIsSubset" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                An intersection is always a subclass of its original classes.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Eine Schnittklasse ist immer Teilmenge ihrer Ausgangsklassen.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>
                <PREDCON ref="subclass">
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                  <VAR id="x" />
                </PREDCON>

                <PREDCON ref="subclass">
                  <FUNCON ref="intersection">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                  <VAR id="y" />
                </PREDCON>
              </AND>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:unionIsSuperset" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                A union has its original classes as subclasses.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Eine Vereinigungsklasse hat ihre Ausgangsklassen als Teilklassen.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>
                <PREDCON ref="subclass">
                  <VAR id="x" />
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                </PREDCON>

                <PREDCON ref="subclass">
                  <VAR id="y" />
                  <FUNCON ref="union">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                </PREDCON>
              </AND>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:subsetAndAddition" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                With two classes the union of both is also subclass. And if a class is subclass of two other classes it is also subclass of their intersection. For both implications the reverse is also true.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Für zwei Teilklassen ist auch die Vereinigungsklasse Teilklasse. Und falls eine Klasse Teilklasse von zwei Klassen ist, dann ist sie auch Teilklasse der Schnittklasse. Beide Beziehungen sind auch umkehrbar.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>
                <EQUI>
                  <AND>
                    <PREDCON ref="subclass">
                      <VAR id="x" />
                      <VAR id="z" />
                    </PREDCON>
                    <PREDCON ref="subclass">
                      <VAR id="y" />
                      <VAR id="z" />
                    </PREDCON>
                  </AND>
                  <PREDCON ref="subclass">
                    <FUNCON ref="union">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <VAR id="z" />
                  </PREDCON>
                </EQUI>

                <EQUI>
                  <AND>
                    <PREDCON ref="subclass">
                      <VAR id="z" />
                      <VAR id="x" />
                    </PREDCON>
                    <PREDCON ref="subclass">
                      <VAR id="z" />
                      <VAR id="y" />
                    </PREDCON>
                  </AND>
                  <PREDCON ref="subclass">
                    <VAR id="z" />
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                  </PREDCON>
                </EQUI>              
              </AND>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:subsetAddition" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                
                Intersection and union of a class does not change an existing subclass relation.

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Bei Schnitt oder Vereinigung bleibt eine Teilklassenbeziehung erhalten.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>
                <IMPL>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <VAR id="y" />
                  </PREDCON>
                  <PREDCON ref="subclass">
                    <FUNCON ref="union">
                      <VAR id="x" />
                      <VAR id="z" />
                    </FUNCON>
                    <FUNCON ref="union">
                      <VAR id="y" />
                      <VAR id="z" />
                    </FUNCON>
                  </PREDCON>
                </IMPL>
                
                <IMPL>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <VAR id="y" />
                  </PREDCON>
                  <PREDCON ref="subclass">
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="z" />
                    </FUNCON>
                    <FUNCON ref="intersection">
                      <VAR id="y" />
                      <VAR id="z" />
                    </FUNCON>
                  </PREDCON>
                </IMPL>
              </AND>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:subsetComplement" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Complement building inverts the subclass relation.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Bei der Bildung des Komplements kehrt sich die Teilklassenbeziehung um.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="subclass">
                  <VAR id="x" />
                  <VAR id="y" />
                </PREDCON>
                <PREDCON ref="subclass">
                  <FUNCON ref="complement">
                    <VAR id="y" />
                  </FUNCON>
                  <FUNCON ref="complement">
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:subsetComplementEquations" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                For the complement and subclass relation the following equivalences hold.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Für das Komplement und die Teilklassenbeziehung gelten die folgenden Äquivalenzen.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <AND>
              
                <EQUI>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <VAR id="y" />
                  </PREDCON>
                  <PREDCON ref="equal">
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <FUNCON ref="complement">
                        <VAR id="y" />
                      </FUNCON>
                    </FUNCON>
                    <FUNCON ref="emptySet" />
                  </PREDCON>
                </EQUI>

                <EQUI>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <VAR id="y" />
                  </PREDCON>
                  <PREDCON ref="equal">
                    <FUNCON ref="union">
                      <FUNCON ref="complement">
                        <VAR id="x" />
                      </FUNCON>
                      <VAR id="y" />
                    </FUNCON>
                    <FUNCON ref="universalClass" />
                  </PREDCON>
                </EQUI>

                <EQUI>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <FUNCON ref="complement">
                      <VAR id="y" />
                    </FUNCON>
                  </PREDCON>
                  <PREDCON ref="equal">
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <FUNCON ref="emptySet" />
                  </PREDCON>
                </EQUI>

                <EQUI>
                  <PREDCON ref="subclass">
                    <FUNCON ref="intersection">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <VAR id="z" />
                  </PREDCON>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <FUNCON ref="union">
                      <FUNCON ref="complement">
                        <VAR id="y" />
                      </FUNCON>
                      <VAR id="z" />
                    </FUNCON>
                  </PREDCON>
                </EQUI>              
              
              </AND>
            </FORMULA>
          </THEOREM>
        </NODE>
        
      </SUBSECTIONS>
 
    </SECTION>

    <SECTION>
      <TITLE>
        <LATEX language="en">
           Singletons and Class Pairs
        </LATEX>
        <LATEX language="de">
           Einerklassen und Klassenpaare
        </LATEX>
      </TITLE>
      <INTRODUCTION>
        <LATEX language="en">
          <![CDATA[
            
            A class can be defined by explicitly listing its members. 

          ]]>
        </LATEX>
        <LATEX language="de">
          <![CDATA[
            
            Eine Klasse kann auch durch explizite Auflistung ihrer Elemente definiert werden.

          ]]>
        </LATEX>
      </INTRODUCTION>
      <SUBSECTIONS>
      
        <NODE id="definition:singleton">
          <NAME>
            <LATEX language="en">singleton</LATEX>
            <LATEX language="de">Einerklasse</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Singleton\index{singleton}</LATEX>
            <LATEX language="de">Einerklasse\index{Einerklasse}\index{Klasse!Einer-}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                Especially by saying that one element is inside the class we can define the so called \emph{singleton}.
                With rule \ref{theorem:comprehension} again we can extend the syntax and provide a new abbreviation.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Insbesondere kann durch Angabe eines Elements die sogenannte \emph{Einerklasse} 
              festgelegt werden.
                Wiederum mit Regel \ref{rule:classDefinition} können wir die Sprachsyntax erweitern und eine neue abkürzende Schreibweise einführen.
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="1" name="classList">
            <LATEXPATTERN>\{ #1 \}</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
            </VARLIST>
            <TERM>
              <CLASS>
                <VAR id="y"/>
                <IMPL>
                  <PREDCON ref="isSet">
                    <VAR id="x"/>
                  </PREDCON>
                  <PREDCON ref="equal">
                    <VAR id="y"/>
                    <VAR id="x"/>
                  </PREDCON>
                </IMPL>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[
                If $x$ is a proper class the term $\{x\}$ is also defined. In this case all sets
                $y$ fulfill the condition 
                $\mathfrak{M}(y) \land (\mathfrak{M}(x) \rightarrow y = x)$ and the singleton is
                identical with the universal class. This leads to a smother handling of the
                singleton.\footnote{Other authors as K.~Gödel for example define 
                $\{x\} = \{y~|~y = x\}$.} 
                
                
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
              
                Da der Ausdruck $\{x\}$ für jegliches $x$ definiert ist, kann er auch für den Fall, 
                dass $x$ eine echte Klasse ist, gebildet werden. In diesem Fall erfüllen alle Mengen 
                $y$ die Bedingung 
                $\mathfrak{M}(y) \land (\mathfrak{M}(x) \rightarrow y = x)$ und die Einerklasse ist 
                mit der Allklasse identisch. Das führt zu einem technisch einfacheren Umgang mit der
                Einerklasse.\footnote{Andere Autoren wie z.~B. auch K.~Gödel, definieren $\{x\}$ durch
                $\{y~|~y = x\}$.}
                
              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>
      
        <NODE id="theorem:setSingletonHasSetAsOnlyElement" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                For sets the singleton has only the set itself as a member.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Für Mengen enthält die Einerklasse wie gewünscht nur die Menge selbst.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <PREDCON ref="isSet">
                  <VAR id="x" />
                </PREDCON>
                <FORALL>
                  <VAR id="z" />
                  <EQUI>
                    <PREDCON ref="in">
                      <VAR id="z" />
                      <FUNCON ref="classList">
                        <VAR id="x" />
                      </FUNCON>
                    </PREDCON>
                    <PREDCON ref="equal">
                      <VAR id="z" />
                      <VAR id="x" />
                    </PREDCON>
                  </EQUI>
                </FORALL>
              </IMPL>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:properSingletonIsUniversalClass" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                If we have a proper class the singleton is the universal class.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Für echte Mengen ist die Einerklasse mit der Allklasse identisch.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <NOT>
                  <PREDCON ref="isSet">
                    <VAR id="x" />
                  </PREDCON>
                </NOT>
                <PREDCON ref="equal">
                  <FUNCON ref="classList">
                    <VAR id="x" />
                  </FUNCON>
                  <FUNCON ref="universalClass" />
                </PREDCON>
              </IMPL>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:setSingletonEqualHasItselfAsElement" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Beeing a set singleton is equivalent to be member of its singleton. 
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Einerklasse einer Menge zu sein ist äquivalent dazu Element seiner
                Einerklasse zu sein.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="isSet">
                  <VAR id="x" />
                </PREDCON>
                <PREDCON ref="in">
                  <VAR id="x" />
                  <FUNCON ref="classList">
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="definition:pair">
          <NAME>
            <LATEX language="en">pair</LATEX>
            <LATEX language="de">Paar</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Pair\index{pair}</LATEX>
            <LATEX language="de">Paar\index{Paar}\index{Klasse!Paar-}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[
                Now we can simply define the \emph{pair} class as union of two singletons.
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
                Nun kann einfach durch Vereinigung zweier Einerklassen das \emph{Paar}
                zweier Klassen definiert werden.
              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="2" name="classList">
            <LATEXPATTERN>\{ #1, #2 \}</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
              <VAR id="y"/>
            </VARLIST>
            <TERM>
              <FUNCON ref="union">
                <FUNCON ref="classList">
                  <VAR id="x"/>
                </FUNCON>
                <FUNCON ref="classList">
                  <VAR id="y"/>
                </FUNCON>
              </FUNCON>
            </TERM>
          </DEFINITION_FUNCTION>
        </NODE>
      
        <NODE id="theorem:classPairIsEqual" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                A class pair can be described directly without referencing singletons.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Ein Klassenpaar kann auch direkt, d.~h. ohne Zuhilfenahme der Einerklassen
                beschrieben werden.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <PREDCON ref="equal">
                <FUNCON ref="classList">
                  <VAR id="x" />
                  <VAR id="y" />
                </FUNCON>
                <CLASS>
                  <VAR id="z" />
                  <IMPL>
                    <AND>
                      <PREDCON ref="isSet">
                        <VAR id="x" />
                      </PREDCON>
                      <PREDCON ref="isSet">
                        <VAR id="y" />
                      </PREDCON>
                    </AND>
                    <OR>
                      <PREDCON ref="equal">
                        <VAR id="z" />
                        <VAR id="x" />
                      </PREDCON>
                      <PREDCON ref="equal">
                        <VAR id="z" />
                        <VAR id="y" />
                      </PREDCON>
                    </OR>
                  </IMPL>
                </CLASS>
              </PREDCON>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:membershipOfClassPair" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                For set pairs beeing a member of a pair can canonically be simplified.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Für Klassenpaare die aus Mengen gebildet werden kann die Eigenschaft Element 
                des Klassenpaares zu sein einfacher ausgedrückt werden.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <AND>
                  <PREDCON ref="isSet">
                    <VAR id="x" />
                  </PREDCON>
                  <PREDCON ref="isSet">
                    <VAR id="y" />
                  </PREDCON>
                </AND>
                <FORALL>
                  <VAR id="z" />
                  <EQUI>
                    <PREDCON ref="in">
                      <VAR id="z" />
                      <FUNCON ref="classList">
                        <VAR id="x" />
                        <VAR id="y" />
                      </FUNCON>
                    </PREDCON>
                    <OR>
                      <PREDCON ref="equal">
                        <VAR id="z" />
                        <VAR id="x" />
                      </PREDCON>
                      <PREDCON ref="equal">
                        <VAR id="z" />
                        <VAR id="y" />
                      </PREDCON>
                    </OR>
                  </EQUI>
                </FORALL>
              </IMPL>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:properClassPairIsUniversalClass" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                If one of the classes for building a class pair is proper the resulting pair
                is identical to the universal set.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Falls bei der Klassenpaarbildung eine echte Klasse dabei ist, dann ist das
                resultierende Klassenpaar mit der Allklasse identisch.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <OR>
                  <NOT>
                    <PREDCON ref="isSet">
                      <VAR id="x" />
                    </PREDCON>
                  </NOT>
                  <NOT>
                    <PREDCON ref="isSet">
                      <VAR id="y" />
                    </PREDCON>
                  </NOT>
                </OR>
                <PREDCON ref="equal">
                  <FUNCON ref="classList">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                  <FUNCON ref="universalClass" />
                </PREDCON>
              </IMPL>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:classPairBuildingIsCommutative" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                We note that building a class pair is commutative.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Wir notieren dass die Klassenpaarbildung kommutativ ist.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <PREDCON ref="equal">
                <FUNCON ref="classList">
                  <VAR id="x" />
                  <VAR id="y" />
                </FUNCON>
                <FUNCON ref="classList">
                  <VAR id="y" />
                  <VAR id="x" />
                </FUNCON>
              </PREDCON>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:singletonIsClassPair" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                The singleton can be expressed as a special case of a class pair.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die Einerklasse ist ein Spezialfall des Klassenpaares.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <PREDCON ref="equal">
                <FUNCON ref="classList">
                  <VAR id="x" />
                </FUNCON>
                <FUNCON ref="classList">
                  <VAR id="x" />
                  <VAR id="x" />
                </FUNCON>
              </PREDCON>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:setEquiInClassPair" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Being a set is equivalent to being element of a class pair.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Menge zu sein ist equivalent dazu Element eines Klassenpaares zu sein.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="isSet">
                  <VAR id="x" />
                </PREDCON>
                <PREDCON ref="in">
                  <VAR id="x" />
                  <FUNCON ref="classList">
                    <VAR id="x" />
                    <VAR id="y" />
                  </FUNCON>
                </PREDCON>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:elementEquiSingletonSubclass" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                For sets being an element is equal to being a subclass of its singleton.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Für Mengen ist die Elementbeziehung equivalent zur Teilklassenbeziehung
                für die zugehörige Einerklasse.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <PREDCON ref="isSet">
                  <VAR id="x" />
                </PREDCON>
                <EQUI>
                  <PREDCON ref="in">
                    <VAR id="x" />
                    <VAR id="y" />
                  </PREDCON>
                  <PREDCON ref="subclass">
                    <VAR id="x" />
                    <FUNCON ref="classList">
                      <VAR id="y" />
                    </FUNCON>
                  </PREDCON>
                </EQUI>
              </IMPL>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:pairIdentities" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                Identity of set pairs behaves as expected.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Die Gleichheit von aus Mengen gebildeten Klassenpaaren ist wie erwartet.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <AND>
                  <PREDCON ref="isSet">
                    <VAR id="x" />
                  </PREDCON>
                  <PREDCON ref="isSet">
                    <VAR id="y" />
                  </PREDCON>
                  <PREDCON ref="isSet">
                    <VAR id="u" />
                  </PREDCON>
                  <PREDCON ref="isSet">
                    <VAR id="v" />
                  </PREDCON>
                </AND>
                <IMPL>
                  <PREDCON ref="equal">
                    <FUNCON ref="classList">
                      <VAR id="x" />
                      <VAR id="y" />
                    </FUNCON>
                    <FUNCON ref="classList">
                      <VAR id="u" />
                      <VAR id="v" />
                    </FUNCON>
                  </PREDCON>
                  <OR>
                    <AND>
                      <PREDCON ref="equal">
                        <VAR id="x" />
                        <VAR id="u" />
                      </PREDCON>
                      <PREDCON ref="equal">
                        <VAR id="y" />
                        <VAR id="v" />
                      </PREDCON>
                    </AND>
                    <AND>
                      <PREDCON ref="equal">
                        <VAR id="x" />
                        <VAR id="v" />
                      </PREDCON>
                      <PREDCON ref="equal">
                        <VAR id="y" />
                        <VAR id="u" />
                      </PREDCON>
                    </AND>
                  </OR>
                </IMPL>
              </IMPL>
            </FORMULA>
          </THEOREM>
        </NODE>

      </SUBSECTIONS>
    </SECTION>
              
    <SECTION>
      <TITLE>
        <LATEX language="en">
          Infinite Boolean Operators
        </LATEX>
        <LATEX language="de">
          Unendliche boolsche Operatoren
        </LATEX>
      </TITLE>
      <INTRODUCTION>
        <LATEX language="en">
          <![CDATA[

            It is also possible to build infinite intersections and unions. It must only be declared which classes
            are used to build the result.

          ]]>
        </LATEX>
        <LATEX language="de">
          <![CDATA[

            Es können auch beliebige Schnittklassen und Vereinigungsklassen gebildet werden. Dazu muss nur
            festgelegt werden, über welche Klassen jeweils geschnitten bzw. vereinigt wird.

          ]]>
        </LATEX>
      </INTRODUCTION>
      <SUBSECTIONS>

        <NODE id="setProduct">
          <NAME>
            <LATEX language="en">set product</LATEX>
            <LATEX language="de">Mengenprodukt</LATEX>
          </NAME>
          <TITLE>
            <LATEX language="en">Set Product\index{set product}\index{product!of sets}</LATEX>
            <LATEX language="de">Mengenprodukt\index{Mengenprodukt}\index{Produkt!von Mengen}</LATEX>
          </TITLE>
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                 For a class of sets a \emph{product} is defined: all sets that are elements of each set
                 are member of the product.

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                 Für eine Klasse von Mengen wird ein \emph{Produkt} so definiert, dass genau die Elemente, 
                 die in allen Mengen enthalten sind, in dem Produkt liegen.

              ]]>
            </LATEX>
          </PRECEDING>
          <DEFINITION_FUNCTION arguments="1" name="setProduct">
            <LATEXPATTERN>\bigcap \ #1</LATEXPATTERN>
            <VARLIST>
              <VAR id="x"/>
            </VARLIST>
            <TERM>
              <CLASS>
                <VAR id="z" />
                <FORALL>
                  <VAR id="y" />
                  <IMPL>
                    <PREDCON ref="in">
                      <VAR id="y" />
                      <VAR id="x" />
                    </PREDCON>
                    <PREDCON ref="in">
                      <VAR id="z" />
                      <VAR id="y" />
                    </PREDCON>
                  </IMPL>
                </FORALL>
              </CLASS>
            </TERM>
          </DEFINITION_FUNCTION>
          <SUCCEEDING>
            <LATEX language="en">
              <![CDATA[

                This function can be viewed as a generalization of the intersection operation.
                See also proposition~\ref{theorem:setPairSetSumProduct}.

                \par
                We also say the class $x$ defines a \emph{family of sets}\index{family!of sets}\index{set!family}. 
                Any element of $x$ is a member of the family.

              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[
              
                Diese Funktion kann als Verallgemeinerung der Schnittklassenbildung angesehen werden.
                Siehe auch Proposition~\ref{theorem:setPairSetSumProduct}.
                
                \par
                Wir sagen auch, dass die Klasse $x$ eine \emph{Mengenfamilie}\index{Familie}\index{Mengenfamilie}
                festlegt. Jedes Element von $x$ ist ein Mitglied der Familie.

              ]]>
            </LATEX>
          </SUCCEEDING>
        </NODE>
        
        <NODE id="theorem:setProductMembership" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                As usual we can describe the membership of the set product as follows.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Wie üblich können wir die Elementbeziehung zum Mengenprodukt wie folgt beschreiben.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <EQUI>
                <PREDCON ref="in">
                  <VAR id="z" />
                  <FUNCON ref="setProduct">
                    <VAR id="x" />
                  </FUNCON>
                </PREDCON>
                <AND>
                  <PREDCON ref="isSet">
                    <VAR id="z" />
                  </PREDCON>
                  <FORALL>
                    <VAR id="y" />
                    <IMPL>
                      <PREDCON ref="in">
                        <VAR id="y" />
                        <VAR id="x" />
                      </PREDCON>
                      <PREDCON ref="in">
                        <VAR id="z" />
                        <VAR id="y" />
                      </PREDCON>
                    </IMPL>
                  </FORALL>
                </AND>
              </EQUI>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:emptySetProduct" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                We find for the special case of $x\,=\,\emptyset$.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Für den Speziallfall $x\,=\,\emptyset$ erhalten wir.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
                <PREDCON ref="equal">
                  <FUNCON ref="setProduct">
                    <FUNCON ref="emptySet" />
                  </FUNCON>
                <FUNCON ref="universalClass" />
              </PREDCON>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="theorem:nonEmptySetProductMembership" level="formal">
          <PRECEDING>
            <LATEX language="en">
              <![CDATA[

                If we build the set product of a non empty class we can
                drop the set condition.
             
              ]]>
            </LATEX>
            <LATEX language="de">
              <![CDATA[

                Falls wir das Mengenprodukt einer nichtleeren Klasse bilden
                können wir die Mengenbedingung weglassen.
             
              ]]>
            </LATEX>
          </PRECEDING>
          <THEOREM>
            <FORMULA>
              <IMPL>
                <PREDCON ref="notEqual">
                  <VAR id="x" />
                  <FUNCON ref="emptySet"/>
                </PREDCON>
                <EQUI>
                  <PREDCON ref="in">
                    <VAR id="z" />
                    <FUNCON ref="setProduct">
                      <VAR id="x" />
                    </FUNCON>
                  </PREDCON>
                  <FORALL>
                    <VAR id="y" />
                    <IMPL>
                      <PREDCON ref="in">
                        <VAR id="y" />
                        <VAR id="x" />
                      </PREDCON>
                      <PREDCON ref="in">
                        <VAR id="z" />
                        <VAR id="y" />
                      </PREDCON>
                    </IMPL>
                  </FORALL>
                </EQUI>
              </IMPL>
            </FORMULA>
          </THEOREM>
        </NODE>

        <NODE id="definition:setSum">
          <NAME>
            <LATEX language="en">set sum</LATEX>
            <LATEX language="de">Mengensumme</LATEX>
  