diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e519fee --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +name: CI + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install LaTeX + run: | + sudo apt-get -qq update + sudo apt-get install -y --no-install-recommends \ + dvipng cm-super \ + texlive-fonts-recommended \ + texlive-latex-extra \ + texlive-fonts-extra \ + texlive-latex-recommended \ + texlive-lang-german + sudo updmap -sys + - name: Build metamath-narrow.pdf + run: ./make-narrow + - name: Build metamath.pdf + run: ./generate-pdf + - name: Build metamath-de.pdf + run: ./generate-pdf normal de + - uses: actions/upload-artifact@v3 + with: + name: metamath-pdf + path: | + metamath.pdf + metamath-narrow.pdf + metamath-de.pdf + - name: Release + uses: softprops/action-gh-release@v1 + if: github.event_name == 'push' && github.ref == 'refs/heads/master' + with: + files: | + metamath.pdf + metamath-narrow.pdf + metamath-de.pdf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d3c9f6d --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +*.aux +*.bbl +*.bib +*.blg +*.fdb_latexmk +*.fls +*.idx +*.ind +*.ilg +*.log +*.out +*.pdf +*.toc +*.synctex.gz +/realref.sty +/temp-metamath/ +/temp-metamath-narrow/ +/temp-metamath-de/ +/temp-metamath-de-narrow/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8403691..0000000 --- a/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Install LaTeX dependencies and try to generate PDF from .tex source. -# See: -# https://github.com/harshjv/travis-ci-latex-pdf/blob/master/.travis.yml - -sudo: required -dist: trusty -before_install: -- sudo apt-get -qq update && sudo apt-get install -y --no-install-recommends texlive-fonts-recommended texlive-latex-extra texlive-fonts-extra dvipng texlive-latex-recommended -script: -# Make the narrow and normal width PDFs, fail if either fail to generate. -# We need to make the narrow one first, because it overwrites metamath.pdf. -- ./make-narrow -- ./generate-pdf -# deploy: -# provider: releases -# api_key: -# secure: [YOUR KEY] -# file: -# - _build/your_file_1.pdf -# - _build/your_file_2.pdf -# skip_cleanup: true -# on: -tags: true diff --git a/allowed-errors b/allowed-errors index cf6b9e6..7b9097f 100644 --- a/allowed-errors +++ b/allowed-errors @@ -1,5 +1,7 @@ LaTeX Warning: File `realref.sty' already exists on the system. LaTeX Warning: File `metamath.bib' already exists on the system. +Package amsmath Warning: Foreign command \atop; LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined LaTeX Font Warning: Font shape `OMS/cmtt/bx/n' undefined +LaTeX Font Warning: Font shape `TS1/cmtt/bx/n' undefined LaTeX Font Warning: Some font shapes were not available, defaults substituted. diff --git a/generate-pdf b/generate-pdf index c783a99..3455dca 100755 --- a/generate-pdf +++ b/generate-pdf @@ -7,13 +7,27 @@ set -ex style="${1:-normal}" style="${style%.sty}" -texfile="${2:-metamath}" +lang="${2:-en}" + +texfile="${3:-metamath}" texfile="${texfile%.tex}" -if [ "$style" == 'normal' ]; then - outfile="$texfile" +if [ "$lang" = 'en' ]; then + basename="$texfile" + basedir="." +else + basename="${texfile}-${lang}" + if [ "$lang" = 'de' ]; then + basedir="german" + else + basedir="$lang" + fi +fi + +if [ "$style" = 'normal' ]; then + outfile="$basename" else - outfile="${texfile}-${style}" + outfile="${basename}-${style}" fi # Try to remove output .pdf first - if we can't, no point in going further. rm -f "${outfile}.pdf" @@ -28,8 +42,8 @@ do_pdflatex () { tempdir="temp-$outfile" rm -fr "$tempdir" mkdir -p "$tempdir" -cp -p "${texfile}.tex" "$tempdir" -cp -p "${style}.sty" "$tempdir/special-settings.sty" +cp -p "$basedir/${texfile}.tex" "$tempdir" +cp -p "$basedir/${style}.sty" "$tempdir/special-settings.sty" cd "temp-$outfile" touch metamath.ind diff --git a/german/metamath.pdf b/german/metamath.pdf deleted file mode 100644 index 86784bd..0000000 Binary files a/german/metamath.pdf and /dev/null differ diff --git a/german/metamath.tex b/german/metamath.tex index 73e166d..f42b09a 100644 --- a/german/metamath.tex +++ b/german/metamath.tex @@ -766,7 +766,8 @@ % * "tabu" much more capable and seems to be recommended. So use that. \usepackage{makecell} % Enable forced line splits within a table cell -\usepackage{longtable} % Enable multi-page tables +% v4.13 needed for tabu: https://tex.stackexchange.com/questions/600724/dimension-too-large-after-recent-longtable-update +\usepackage{longtable}[=v4.13] % Enable multi-page tables \usepackage{tabu} % Multi-page tables with wrapped text in a cell % You can find more Tex packages using commands like: @@ -884,7 +885,7 @@ $\sim$\ {\sc Public Domain}\ $\sim$ \vspace{2ex} -Dieses Buch (einschließlich seiner späteren Überarbeitungen und Übersetzungen) wurde von Norman Megill gemäß der 'Creative Commons CC0 1.0 Universal (CC0 1.0) Public Domain Dedication' in die Public Domain veröffentlicht. +Dieses Buch (einschließlich seiner späteren Überarbeitungen und Übersetzungen) wurde von Norman Megill gemäß der 'Creative Commons CC0 1.0 Universal (CC0 1.0) Public Domain Dedication' in die Public Domain veröffentlicht. David A. Wheeler, Georg M. van der Vekens und Alexander W. van der Vekens haben selbiges getan. Diese Public Domain Veröffentlichung gilt weltweit. Für den Fall, dass dies rechtlich nicht möglich ist, wird das Recht eingeräumt, das Werk für jeden Zweck zu nutzen, ohne irgendwelche Bedingungen, es sei denn, solche Bedingungen sind gesetzlich vorgeschrieben. Siehe \url{https://creativecommons.org/publicdomain/zero/1.0/}. @@ -990,7 +991,7 @@ \chapter*{Vorwort} \subsubsection{Übersicht} -Metamath\index{Metamath} ist eine Computersprache und ein zugehöriges Computerprogramm zur Archivierung, Verifikation und Untersuchung mathematischer Beweise auf einer sehr detaillierten Ebene. Die Metamath-Sprache enthält keine Mathematik an sich, sondern betrachtet alle mathematischen Aussagen als reine Folgen von Symbolen. Bei der Nutzung von Metamath werden bestimmte, spezielle Symbolsequenzen (Axiome) vorgegeben, die Metamath sagen, welche Schlussfolgerungsregeln erlaubt sind. Metamath ist nicht auf ein bestimmtes mathematisches Gebiet beschränkt. Die Metamath-Sprache ist einfach und robust, sie besitzt so gut wie keine fest verdrahtete Syntax. +Metamath\index{Metamath} ist eine Computersprache und ein zugehöriges Computerprogramm zur Archivierung, Verifikation und Untersuchung mathematischer Beweise auf einer sehr detaillierten Ebene. Die Metamath-Sprache enthält keine Mathematik an sich, sondern betrachtet alle mathematischen Aussagen als reine Folgen von Symbolen. Bei der Nutzung von Metamath werden bestimmte, spezielle Symbolsequenzen (Axiome) vorgegeben, die Metamath sagen, welche Schlussfolgerungsregeln erlaubt sind. Metamath ist nicht auf ein bestimmtes mathematisches Gebiet beschränkt. Die Metamath-Sprache ist einfach und robust, sie besitzt so gut wie keine fest verdrahtete Syntax. Wir\footnote{Sofern nicht anders angegeben, beziehen sich die Worte "`Ich"', "`mich"' und "`mein"' auf Norman Megill\index{Megill, Norman}, während "`wir"', "`uns"' und "`unser"' auf Norman Megill und David A. Wheeler\index{Wheeler, David A.} beziehen.} glauben, dass sie vielleicht den einfachst möglichen Ansatz bietet, mit dem im Wesentlichen die gesamte Mathematik mit absoluter Strenge ausgedrückt werden kann. @@ -1039,7 +1040,7 @@ \subsubsection{Übersicht} Eine ausführliche Besprechung dieser anderen Programme würde jedoch den Rahmen dieses Buches sprengen. Wie die meisten Computersprachen verwendet die Metamath\index{Metamath}-Sprache den -Standardzeichensatz ({\sc ascii}), der auf jeder Computertastatur zur Verfügung steht. Daher kann sie viele der speziellen Symbole, die Mathematiker verwenden, nicht direkt darstellen. +Standardzeichensatz ({\sc ascii}), der auf jeder Computertastatur zur Verfügung steht. Daher kann sie viele der speziellen Symbole, die Mathematiker verwenden, nicht direkt darstellen. Eine nützliche Eigenschaft des Metamath-Programms ist sein Fähigkeit, die von ihm verwendete Notation in die Textsatzsprache \LaTeX\ umzuwandeln.\index{latex@{\LaTeX}} Mit dieser Funktion können Sie die von Ihnen definierten ASCII-Tokens in standardmäßig verwendete mathematische Symbole umwandeln, so dass Sie am Ende Symbole und Formeln erhalten, mit denen Sie vertraut sind, anstelle der etwas kryptischen {\sc ascii}-Darstellungen davon. Das Metamath-Programm kann auch HTML\index{HTML} generieren, was die Veröffentlichung von Ergebnissen im Internet vereinfacht und die Bereitstellung weiterer Informationen zu einem Thema über Hypertext-Links ermöglicht. @@ -1103,11 +1104,11 @@ \subsubsection{Notiz hinzugefügt am 22. Juni 2005}\label{note2002} Bob wies auch auf eine Klärung der Literatur bezüglich der Kategorientheorie und unzugängliche Kardinalzahlen\index{Kategorientheorie}\index{Kardinalzahl, unzugänglich} (S.~\pageref{categoryth}) hin, und eine missverständliche Aussage wurde aus dem Text entfernt. Genauer gesagt ist es im Gegensatz zu einer Aussage in früheren Ausgaben möglich, "`Es gibt eine eigene Klasse von unzugänglichen Kardinalen"' in der Sprache von ZFC auszudrücken. Dies lässt sich wie folgt bewerkstelligen: "`Für jede Menge $x$ gibt es eine unzugängliche Kardinalzahl $\kappa$, so dass $\kappa$ nicht in $x$ liegt"'. Bob schreibt:\footnote{Private Korrespondenz, 30. November 2002.} \begin{quotation} - + Dieses Axiom ist die Art und Weise, wie Grothendieck die Kategorientheorie darstellt. Jedem unzugänglichen Kardinal $\kappa$ ordnet man ein Grothendieck-Universum \index{Grothendieck, Alexander} $U(\kappa)$ zu. $U(\kappa)$ besteht aus denjenigen Mengen, die in einer transitiven Menge der Kardinalität kleiner als $\kappa$ liegen. Anstelle der "`Kategorie aller Gruppen"' arbeitet man relativ zu einem Universum [unter Berücksichtigung der Kategorie der Gruppen mit Kardinalität kleiner als $\kappa$]. Nun ist die Kategorie, deren Objekte alle Kategorien "`relativ zum Universum $U(\kappa)$"' sind, eine Kategorie nicht relativ zu diesem Universum, sondern zum nächsten Universum. - + All die Dinge, die Kategorientheoretiker gerne tun, können in diesem Rahmen getan werden. Der einzige strittige Punkt ist, ob das Grothen-Dieck-Axiom für die Bedürfnisse der Kategorientheoretiker zu stark ist. Mac Lane \index{Mac Lane, Saunders} argumentiert, dass "`ein Universum ausreicht"' und Feferman\index{Feferman, Solomon} hat argumentiert, dass man mit der gewöhnlichen ZFC auskommen kann. Ich finde die Argumente von Feferman nicht überzeugend. Mac Lane mag recht haben, aber wenn ich über Kategorientheorie nachdenke, tue ich das \`{a} la Grothendieck. - + Übrigens fügt Mizar\index{Mizar} das Axiom "`Es gibt eine eigene Klasse von Unzugänglichkeiten"' hinzu, genau um Kategorientheorie zu betreiben. \end{quotation} @@ -1181,16 +1182,16 @@ \chapter{Einleitung} \begin{quotation} - {\em {\em I.M.:} Nein, nein. Da ist nichts Subjektives dran! Jeder weiß, was ein Beweis ist. Lesen Sie einfach ein paar Bücher, besuchen Sie Kurse bei einem kompetenten Mathematiker, und Sie werden es verstehen. - + {\em {\em I.M.:} Nein, nein. Da ist nichts Subjektives dran! Jeder weiß, was ein Beweis ist. Lesen Sie einfach ein paar Bücher, besuchen Sie Kurse bei einem kompetenten Mathematiker, und Sie werden es verstehen. + {\em Schüler:} Sind Sie sicher? - + {\em I.M.:} Nun - es ist möglich, dass Sie es nicht verstehen, wenn Sie keine Begabung dafür haben. Das kann auch passieren. - + {\em Schüler:} Dann entscheiden Sie, was ein Beweis ist, und wenn ich nicht lerne auf dieselbe Art und Weise zu entscheiden, dann bestimmen Sie, dass ich keine Begabung habe. - - {\em I.M.:} Wenn nicht ich, wer dann?} - + + {\em I.M.:} Wenn nicht ich, wer dann?} + \flushright\sc "`Der ideale Mathematiker"' \index{Davis, Phillip J.} \footnote{Frei übersetzt nach \cite{Davis}, \sc "`The Ideal Mathematician"' S.~40.}\\ @@ -1208,7 +1209,7 @@ \chapter{Einleitung} Metamath\index{Metamath} ist eine Computersprache und ein zugehöriges Computerprogramm für das Archivieren, Überprüfen und Studieren mathematischer Beweise auf einer sehr detaillierten Ebene. Mit der Metamath-Sprache können formale mathematische Systeme\index{formales System} beschrieben und Beweise für Theoreme in diesen Systemen formuliert werden. Eine solche Sprache wird von Mathematikern als Metasprache bezeichnet. Das Metamath-Programm ist ein Computerprogramm zur Überprüfung von Beweisen, die in der Metamath-Sprache geschrieben sind. Das Metamath-Programm verfügt nicht über die eingebaute Fähigkeit, logische Schlüsse zu ziehen; es führt lediglich eine Reihe von Ersetzungen von Symbolen gemäß den Anweisungen durch, die ihm in einem Beweis gegeben werden, und prüft, ob das Ergebnis mit dem erwarteten Theorem übereinstimmt. Es macht logische Schlussfolgerungen nur auf der Grundlage von Regeln der Logik, welche in einer Menge von Axiomen\index{Axiom} oder ersten Prinzipien enthalten sind, die ihm als Ausgangspunkt für Beweise vorgegeben werden. - + Die vollständige Spezifikation der Metamath-Sprache ist nur vier Seiten lang (Abschnitt~\ref{spec}, S.~\pageref{spec}). Ihre Einfachheit mag Sie zunächst fragen lassen, was man damit überhaupt erreichen kann. Aber in der Tat sind die verwendeten Symbolmanipulationen diejenigen, die in allen mathematischen Systemen auf der untersten Ebene implizit durchgeführt werden. Man kann sie relativ schnell lernen und volles Vertrauen in jeden mathematischen Beweis haben, den Metamath verifiziert. Andererseits ist die Metamath-Sprache leistungsfähig und allgemein genug, um mit ihr praktisch jede mathematische Theorie, von der einfachsten bis zur abstraktesten, zu beschreiben. Obwohl Metamath im Prinzip für jede Art von Mathematik verwendet werden kann, ist es am besten für abstrakte oder "`reine"' Mathematik geeignet, die sich hauptsächlich mit Theoremen und deren Beweisen befasst - im Gegensatz zu der Art von Mathematik, die sich mit der praktischen Handhabung von Zahlen beschäftigt. @@ -1225,7 +1226,7 @@ \chapter{Einleitung} \section{Mathematik als eine Computersprache} \begin{quote} - + {\em Das Studium der Mathematik beginnt oft mit einer Enttäuschung. \ldots \\ Uns wird gesagt, dass mit ihrer Hilfe die Sterne gewogen und die Milliarden von Molekülen in einem Wassertropfen gezählt werden. Doch wie der Geist von Hamlets Vater entzieht sich diese große Wissenschaft den Bemühungen unserer geistigen Waffen, sie zu begreifen.} \flushright\sc Alfred North Whitehead\footnote{Frei übersetzt nach \cite{Whitehead}, Kap.\ 1.}\\ @@ -1306,10 +1307,10 @@ \subsubsection{Die Suche eines Nicht-Mathematikers nach der Wahrheit} Sie finden ein fortgeschritteneres Buch über Mengenlehre. Dieses Buch listet die Axiome der ZF-Mengentheorie in einfachem Deutsch oder Englisch auf Seite eins auf. {\em Jetzt} denken Sie, Ihre Suche sei zu Ende und Sie haben endlich die Quelle allen mathematischen Wissens gefunden; Sie müssen nur noch verstehen, was sie bedeuten. Hier, an einem einzigen Ort, ist die Grundlage für die gesamte Mathematik! Sie starren voller Ehrfurcht auf die Axiome, rätseln über sie, lernen sie auswendig und hoffen, dass sie Ihnen klar werden, wenn Sie nur lange genug über sie nachdenken. Natürlich haben Sie nicht die geringste Ahnung, wie der Rest der Mathematik von ihnen "`abgeleitet"' ist; insbesondere, wenn dies die Axiome der Mathematik sind, warum brauchen dann Arithmetik, Gruppentheorie und so weiter ihre eigenen Axiome? - + Sie fangen an, dieses fortgeschrittene Buch sorgfältig zu lesen, und denken über die Bedeutung jedes Wortes nach, denn Sie wollen der Sache unbedingt auf den Grund gehen. Das erste, was das Buch tut, ist zu erklären, wie die Axiome zustande gekommen sind, nämlich um das Russellsche Paradoxon zu lösen. In der Tat scheint das der Hauptzweck ihrer Existenz zu sein; dass sie angeblich dazu verwendet werden können, die gesamte Mathematik abzuleiten, scheint irrelevant zu sein und wird nicht einmal erwähnt. Wie dem auch sei, Sie fahren fort. Sie hoffen, dass das Buch Ihnen klar und deutlich, Schritt für Schritt, erklären wird, wie man die Dinge aus den Axiomen ableitet. Schließlich ist dies der Ausgangspunkt der Mathematik, so wie ein Buch, das die Grundlagen einer Programmiersprache erklärt. Aber irgendetwas fehlt. Sie können nicht einmal den ersten Beweis verstehen oder die erste Übung machen. Symbole wie $\exists$ und $\forall$ durchziehen die Seite, ohne dass erwähnt wird, woher sie kommen oder wie man sie manipuliert. Der Autor geht davon aus, dass man mit ihnen völlig vertraut ist, und sagt Ihnen nicht einmal, was sie bedeuten. Inzwischen wissen Sie, dass $\exists$ "`es gibt"' bedeutet und dass $\forall$ "`für alle"' bedeutet, aber sollten nicht die Regeln für die Manipulation dieser Symbole Teil der Axiome sein? Sie haben immer noch keine Idee, wie man die Axiome überhaupt einem Computer beschreiben könnte. - + Sicherlich gibt es hier etwas ganz anderes als die technische Literatur, die Sie zu lesen gewohnt sind. In einem Handbuch für Computersprachen wird fast immer sehr deutlich, was alle Symbole bedeuten, was sie genau machen und welche Regeln es gibt, nach denen sie kombiniert werden, und man arbeitet sich von dort aus weiter vor. Nach einem Blick in vier oder fünf andere Bücher dieser Art kommt man zu der Erkenntnis, dass es noch ein ganzes Studienfach gibt, das man braucht, um die Axiome der Mengenlehre zu verstehen. Dieses Gebiet wird "`Logik"' genannt. In der Tat wurde es in einigen Büchern als Voraussetzung empfohlen, aber man hat es einfach nicht realisiert. Man nahm an, Logik sei, nun ja, einfach nur Logik, etwas, das ein Mensch mit gesundem Menschenverstand intuitiv versteht. Warum Ihre Zeit mit der Lektüre langweiliger Abhandlungen über symbolische Logik verschwenden, die Manipulation von 1en und 0en, die Computer machen, wenn man das schon weiß? Aber dies ist eine andere Art von Logik, die Ihnen völlig fremd ist. Das Thema von {\sc nand} und {\sc nor}-Gattern wird nicht einmal berührt oder hat ohnehin nur mit einem sehr kleinen Teil dieses Bereichs zu tun. @@ -1325,7 +1326,7 @@ \subsubsection{Die Suche eines Nicht-Mathematikers nach der Wahrheit} {\em Jetzt} glauben Sie, die ultimative Quelle der mathematischen Wahrheit gefunden zu haben. Also - die Axiome der Mathematik bestehen aus den Axiomen der Logik, zusammen mit den Axiomen der ZF-Mengentheorie. (Inzwischen haben Sie auch herausgefunden wie man die ZF-Axiome aus dem Deutschen oder Englischen in die eigentlichen Symbole der Logik übersetzen kann, die Sie nun nach präzisen, leicht verständlichen Regeln manipulieren können.) Natürlich verstehen Sie immer noch nicht, wie "`die gesamte Mathematik aus der Mengenlehre abgeleitet werden kann"', aber vielleicht wird sich das zu gegebener Zeit offenbaren. - + Sie machen sich eifrig daran, die Axiome und Regeln in einen Computer zu programmieren und beginnen sich mit den Theoremen zu befassen, die Sie beweisen müssen, während die Logik entwickelt wird. Alle Arten von wichtigen Theoremen tauchen auf: das Deduktionstheorem\index{Deduktionstheorem}, das Substitutionstheorem\index{Substitutionstheorem}, der Vollständigkeitssatz der Aussagenlogik\index{Vollständigkeitssatz der Aussagenlogik}, der Vollständigkeitssatz der Prädikatenlogik. Oh-oh, da scheint es Probleme zu geben. Sie werden alle schwieriger und schwieriger, und nicht eine davon kann mit den Axiomen und Regeln der Logik, die Sie gerade erhalten haben, abgeleitet werden. Stattdessen benötigen sie alle eine "`Metalogik"' für ihre Beweise, eine Art Mischung aus Logik und Mengenlehre, die es erlaubt, Dinge {\em über} die Axiome und Theoreme der Logik zu beweisen, anstatt {\em mit} ihnen. @@ -1466,7 +1467,7 @@ \subsection{Einfachheit} \footnote{Der Intuitionismus akzeptiert nicht das Gesetz des ausgeschlossenen Dritten ("`entweder ist etwas wahr oder es ist nicht wahr"'). Siehe \cite[S.~xi]{Tymoczko}\index{Tymoczko, Thomas} für Diskussionen und Referenzen zu diesem Thema. Betrachten Sie das Theorem "`Es gibt irrationale Zahlen $a$ und $b$, so dass $a^b$ rational ist"'. Ein Intuitionist würde den folgenden Beweis ablehnen: Wenn $\sqrt{2}^{\sqrt{2}}$ rational ist, sind wir fertig. Ansonsten gilt $a=\sqrt{2}^{\sqrt{2}}$ und $b=\sqrt{2}$. Dann ist $a^b=2$, was eine rational Zahl ist.}) bis zum Kühnen (wie zum Beispiel das Auswahlaxiom in der Mengenlehre \footnote{Das Auswahlaxiom\index{Auswahlaxiom} besagt, dass bei einer beliebigen Sammlung von paarweise disjunkten, nicht leeren Mengen eine Menge existiert, die mit jeder Menge der Sammlung genau ein Element gemeinsam hat. Es wird verwendet, um viele wichtige Theoreme in der Standardmathematik zu beweisen. Einige Philosophen lehnen es ab, weil die Existenz einer Menge behauptet wird, ohne ihre Elemente benennen zu können\cite[S.~154]{Enderton}\index{Enderton, Herbert B.}. In einer Grundlage für die Mathematik, die auf Quine\index{Quine, Willard Van Orman} zurückgeht und sich nicht als inkonsistent erwiesen hat, erweist sich das Auswahlaxiom als falsch\cite[S.~23]{Curry}\index{Curry, Haskell B.}. Der \texttt{show trace{\char`\_}back}-Befehl des Metamath-Programms ermöglicht es Ihnen herauszufinden, ob das Auswahlaxiom oder ein anderes Axiom in einem Beweis angenommen wurde.}\index{\texttt{show trace{\char`\_}back}-Befehl}) beigebracht werden. - + Die Einfachheit der Metamath-Sprache erlaubt es dem Algorithmus (Computerprogramm), der die Gültigkeit eines Metamath-Beweises verifiziert, einfach und robust zu sein. Sie können darauf vertrauen, dass die Theoreme, die er verifiziert, wirklich aus Ihren Axiomen abgeleitet werden können. @@ -1518,7 +1519,7 @@ \section{Computer und Mathematiker} \flushright\sc Paul Halmos\footnote{Frei übersetzt nach dem Zitat in \cite{Albers}, S.~121.}\\ \end{quote}\index{Halmos, Paul} -Reine Mathematiker stehen Computern seit jeher gleichgültig gegenüber, bis hin zur Verachtung.\index{Computer und reine Mathematik} Die Computerwissenschaft/Informatik selbst wird manchmal in den banalen Bereich der "`angewandten"' Mathematik eingeordnet, die vielleicht für die reale Welt wichtig, aber für diejenigen, die nach den tiefsten Wahrheiten der Mathematik suchen, intellektuell wenig aufregend ist. Vielleicht liegt ein Grund für diese Einstellung gegenüber Computern darin, dass es wenig oder gar keine Computersoftware gibt, die ihren Bedürfnissen gerecht wird, und es mag die allgemeine Meinung vorherrschen, dass eine solche Software gar nicht existieren kann. Auf der einen Seite gibt es die praktischen Computeralgebrasysteme, die erstaunliche Symbolmanipulationen in den Bereichen Algebra und Infinitesimalrechnung\index{Computeralgebrasystem} durchführen können, aber nicht einmal den einfachsten Existenzsatz beweisen, wenn die Vorstellung eines Beweises überhaupt vorhanden ist. Andererseits gibt es spezialisierte automatische Theorembeweiser,\index{automatisches Theorembeweisen} die technisch gesehen korrekte Beweise generieren können. Aber manchmal sind ihre speziellen Eingabenotationen sehr kryptisch, und ihre Ausgaben werden als lange, unelegant wirkende, unverständliche Beweise wahrgenommen. +Reine Mathematiker stehen Computern seit jeher gleichgültig gegenüber, bis hin zur Verachtung.\index{Computer und reine Mathematik} Die Computerwissenschaft/Informatik selbst wird manchmal in den banalen Bereich der "`angewandten"' Mathematik eingeordnet, die vielleicht für die reale Welt wichtig, aber für diejenigen, die nach den tiefsten Wahrheiten der Mathematik suchen, intellektuell wenig aufregend ist. Vielleicht liegt ein Grund für diese Einstellung gegenüber Computern darin, dass es wenig oder gar keine Computersoftware gibt, die ihren Bedürfnissen gerecht wird, und es mag die allgemeine Meinung vorherrschen, dass eine solche Software gar nicht existieren kann. Auf der einen Seite gibt es die praktischen Computeralgebrasysteme, die erstaunliche Symbolmanipulationen in den Bereichen Algebra und Infinitesimalrechnung\index{Computeralgebrasystem} durchführen können, aber nicht einmal den einfachsten Existenzsatz beweisen, wenn die Vorstellung eines Beweises überhaupt vorhanden ist. Andererseits gibt es spezialisierte automatische Theorembeweiser,\index{automatisches Theorembeweisen} die technisch gesehen korrekte Beweise generieren können. Aber manchmal sind ihre speziellen Eingabenotationen sehr kryptisch, und ihre Ausgaben werden als lange, unelegant wirkende, unverständliche Beweise wahrgenommen. Die Ausgabe kann mit Misstrauen betrachtet werden, da das Programm, das sie erzeugt, in der Regel sehr groß ist und seine Größe das Potenzial für Bugs\index{Programmfehler}\index{Bug} erhöht. Ein solcher Beweis kann nur dann als vertrauenswürdig angesehen werden, wenn er von einem Menschen unabhängig verifiziert und "`verstanden"' wurde, aber niemand möchte seine Zeit mit einer solch langweiligen, undankbaren Aufgabe verschwenden. @@ -1564,7 +1565,7 @@ \subsection{Dem Mathematiker vetrauen}\label{trust} \item Es gibt Tausende von angeblichen Beweisen für den Großen Fermatschen Satz\index{Großer Fermatscher Satz} ("`keine ganzzahligen Lösungen existieren zu $x^n + y^n = z^n$ für $n > 2$"'), von Amateuren, Spinnern und angesehenen Mathematikern \cite[S.~5]{Stark}\index{Stark, Harold M}. Fermat schrieb eine Notiz in sein Exemplar von Bachets {\em Diophantus}, dass er "`hierfür einen wahrhaft wunderbaren Beweis entdeckt [hat], doch ist dieser Rand hier zu schmal, um ihn zu fassen."'\cite[S.~507]{Kramer}. Ein neuerer, viel beachteter Beweis von Yoichi Miyaoka\index{Miyaoka, Yoichi} wurde als falsch erwiesen ({\em Science News}, April 9, 1988, S.~230). Das Theorem wurde schließlich von Andrew Wiles\index{Wiles, Andrew} ({\em Science News}, 3. Juli 1993, S.~5) bewiesen, aber der Beweis wies anfangs einige Lücken auf und es dauerte über ein Jahr nach seiner Bekanntgabe, bis er gründlich von Experten überprüft wurde. Am 25. Oktober 1994 gab Wiles bekannt, dass die letzte Lücke in seinem Beweis geschlossen worden sei. \item 1882 entdeckte M. Pasch, dass in Euklids Formulierung der Geometrie\index{euklidische Geometrie} ein Axiom ausgelassen wurde; ohne dieses Axiom sind die Beweise der wichtigen Theoreme von Euklid nicht gültig. Das Axiom von Pasch\index{Axiom von Pasch} besagt, dass eine Linie, die eine Seite eines Dreiecks schneidet, auch eine andere Seite schneiden muss, vorausgesetzt, sie berührt keine der Scheitelpunkte. Das Fehlen des Axioms von Pasch blieb, trotz der (vermutlich) Tausenden von Studenten, Lehrern und Mathematikern, die Euklid studierten, 2000 Jahre lang unbemerkt. \item Der erste veröffentlichte Beweis des berühmten Schr\"{o}der--Bernstein-Theorems\index{Schr\"{o}der--Bernstein-Theorem} in der Mengenlehre war unkorrekt\cite[p.~148]{Enderton}\index{Enderton, Herbert B.}. Dieses Theorem besagt, dass wenn es eine 1-zu-1-Funktion -\footnote{Eine {\em Menge}\index{Menge} ist eine beliebige Sammlung von Objekten. Eine {\em Funktion}\index{Funktion} oder {\em Zuordnung}\index{Zuordnung} ist eine Regel, die jedem Element einer Menge (dem sogenannten {\em Definitionsbereich}\index{Definitionsbereich}) ein Element aus einer anderen Menge zuordnet.} +\footnote{Eine {\em Menge}\index{Menge} ist eine beliebige Sammlung von Objekten. Eine {\em Funktion}\index{Funktion} oder {\em Zuordnung}\index{Zuordnung} ist eine Regel, die jedem Element einer Menge (dem sogenannten {\em Definitionsbereich}\index{Definitionsbereich}) ein Element aus einer anderen Menge zuordnet.} von der Menge $A$ in die Menge $B$ und umgekehrt gibt, dann haben die Mengen $A$ und $B$ eine 1-zu-1-Entsprechung. Obwohl es einfach und offensichtlich klingt, ist der Standardbeweis recht lang und komplex. \item In den frühen 1900er Jahren veröffentlichte Hilbert\index{Hilbert, David} einen angeblichen Beweis für die Kontinuumshypothese\index{Kontinuumshypothese}, die schließlich 1963 von Cohen\index{Cohen, Paul} als unbeweisbar festgestellt wurde\cite[S.~166]{Enderton}. Die Kontinuumshypothese besagt, dass keine Unendlichkeit\index{Unendlichkeit} ("`transfinite Kardinalzahl"')\index{Kardinalzahl, transfinit} existiert, deren Größe (oder "`Kardinalität"')\index{Kardinalität} zwischen der Größe der Menge der ganzen Zahlen und der Größe der Menge der reellen Zahlen liegt. Diese Hypothese geht auf den deutschen Mathematiker Georg Cantor\index{Cantor, Georg} in den späten 1800er Jahren zurück, und seine Unfähigkeit, sie zu beweisen soll zu seiner Geisteskrankheit beigetragen haben, die ihn in seinen späteren @@ -1602,12 +1603,12 @@ \subsection{Computeralgebrasysteme} Paket stammt, und würde bedeuten: "`Angenommen Maple ist konsistent, dann\ldots"' Dieses und viele andere Themen, welche die Formalisierung der Mathematik betreffen, werden in John Harrisons\index{Harrison, John} sehr interessanter Dissertation~\cite{Harrison-thesis} diskutiert. -\subsection{Automatische Theorembeweiser}\label{theoremprovers}\index{automatisches Theorembeweisen} +\subsection{Automatische Theorembeweiser}\label{theoremprovers}\index{automatisches Theorembeweisen} Eine mathematische Theorie ist "`entscheidbar"'\index{entscheidbare Theorie}, wenn eine mechanische Methode oder ein Algorithmus existiert, der garantiert feststellen kann, ob eine bestimmte Formel ein Theorem ist. Zu den wenigen Theorien, die entscheidbar sind, gehört die Elementargeometrie, wie ein klassisches Ergebnis des Logikers Alfred Tarski\index{Tarski, Alfred} im Jahr 1948 \cite{Tarski} zeigt. \footnote{Tarskis Ergebnis gilt eigentlich für eine Teilmenge der Geometrie, die in elementaren Lehrbüchern behandelt wird. Diese Untermenge umfasst das meiste von dem, was man als elementare Geometrie bezeichnen würde, aber sie ist nicht stark genug, um unter anderem die Begriffe Umfang und Fläche eines Kreises auszudrücken. Die Theorie so zu erweitern, dass sie Begriffe wie diese enthält, macht die Theorie unentscheidbar, wie auch von Tarski gezeigt wurde. Tarskis Algorithmus ist viel zu ineffizient, um ihn praktisch auf einem Computer zu implementieren. Ein praktischer Algorithmus zum Beweisen einer kleineren Untermenge von Geometrie-Theoremen (die nicht die Konzepte der "`Ordnung"' oder "`Kontinuität"' beinhalten) wurde von dem chinesischen Mathematiker Wu Wen-ts\"{u}n im Jahr 1977 \cite{Chou}\index{Chou, -Shang-Ching} entdeckt.}\index{Wen-ts{\"{u}}n, Wu} +Shang-Ching} entdeckt.}\index{Wen-ts{\"{u}}n, Wu} Aber die meisten Theorien, einschließlich der elementaren Arithmetik, sind unentscheidbar. Diese Tatsache trägt dazu bei, die Mathematik am Leben zu erhalten, da viele Mathematiker glauben, dass sie niemals durch Computer ersetzt werden (wenn sie Roger Penroses Argument glauben, dass ein Computer niemals das Gehirn ersetzen kann \cite{Penrose}\index{Penrose, Roger}). In der Tat wird die Elementargeometrie oft als "`toter"' Bereich betrachtet, und zwar aus dem einfachen Grund, dass sie entscheidbar ist. @@ -1668,7 +1669,7 @@ \subsection{Beweisverifizierer}\label{proofverifiers} Ein Beweisverifizierer ist ein Programm, das keine Beweise erzeugt, sondern Beweise die im vorgegeben werden verifiziert. Viele Beweisverifizierer haben eingeschränkte eingebaute automatisierte Beweisfähigkeiten, wie z. B. das Herausfinden einfacher logischer Schlüsse (wobei sie immer noch von einer Person angeleitet werden, die den Gesamtbeweis liefert). Metamath hat keine eingebauten automatischen Beweisfähigkeiten, außer der begrenzten Fähigkeit seines Beweis-Assistenten. Sprachen zur Beweisverifikation werden nicht so häufig verwendet, wie sie es könnten. -Reine Mathematiker sind mehr damit beschäftigt, neue Ergebnisse zu erzielen, und solche Detailgenauigkeit und Strenge würden diesem Ziel im Wege stehen. +Reine Mathematiker sind mehr damit beschäftigt, neue Ergebnisse zu erzielen, und solche Detailgenauigkeit und Strenge würden diesem Ziel im Wege stehen. Der Einsatz von Computern in der reinen Mathematik konzentriert sich in erster Linie auf automatische Theorembeweiser (nicht auf Verifizierer), wiederum mit dem Ziel, die Schaffung neuer Mathematik zu unterstützen. Automatische Theorembeweiser befassen sich in der Regel damit, jeweils ein Theorem anzugehen, anstatt dem Benutzer eine große, organisierte Datenbasis zur Verfügung zu stellen. Metamath ist eine Möglichkeit, diese Lücke zu schließen. @@ -1686,7 +1687,7 @@ \subsection{Beweisverifizierer}\label{proofverifiers} Nach dem Stand von 2019 ist die Ghilbert-Gemeinschaft kleiner und weniger aktiv als die Metamath-Gemeinschaft. Dennoch gibt es Überschneidungen zwischen der Metamath- und der Ghilbert-Gemeinschaft, und im Laufe der Jahre haben viele Male fruchtbare Gespräche zwischen ihnen stattgefunden. -\subsection{Erstellung einer Datenbasis für formalisierte\\ Mathematik}\label{mathdatabase} +\subsection{Erstellung einer Datenbasis für formalisierte\texorpdfstring{\\}{} Mathematik}\label{mathdatabase} Neben Metamath gibt es mehrere andere laufende Projekte mit dem Ziel, die Mathematik in durch Computer verifizierbare Datenbasen zu formalisieren. Um sie zu verstehen hilft ein Rückblick auf deren Historie. @@ -1898,7 +1899,7 @@ \chapter{Verwendung des Metamath-Programms} \section{Installation} Die Art und Weise, wie Sie Metamath auf Ihrem Computersystem installieren\index{Metamath!Installation}, ist von Computer zu Computer verschieden. Aktuelle Anweisungen werden mit dem Download des Metamath-Programms bereitgestellt unter \url{http://metamath.org}. Im Allgemeinen ist die Installation einfach. -Es gibt eine Datei, die das Metamath-Programm selbst enthält. +Es gibt eine Datei, die das Metamath-Programm selbst enthält. Diese Datei heißt normalerweise \texttt{metamath} oder \texttt{metamath.}{\em xxx}, wobei {\em xxx} der Konvention (wie \texttt{exe}) für ein ausführbares Programm auf Ihrem Betriebssystem entspricht. Es gibt mehrere zusätzliche Dateien mit Beispielen für die Metamath-Sprache, die alle mit \texttt{.mm} enden. Die Datei \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})} enthält Logik und Mengenlehre und kann als Ausgangspunkt für andere Bereiche der Mathematik verwendet werden. Sie benötigen außerdem einen Texteditor\index{Texteditor}, mit dem Sie einfachen {\sc ascii}\footnote{American Standard Code for Information Interchange.} Text bearbeiten können, um Ihre Eingabedateien zu erzeugen.\index{ascii@{\sc ascii}} Auf den meisten Computern stehen solche Texteditoren standardmäßig zur Verfügung. Beachten Sie, dass einfacher Text nicht unbedingt der Standard für einige Textverarbeitungsprogramme ist, insbesondere wenn sie mit verschiedenen Schriftarten umgehen können; zum Beispiel müssen Sie bei Microsoft Word\index{Word (Microsoft)} die Datei im Format "`Nur Text"' abspeichern, um eine einfache Textdatei\index{einfacher Text} zu erhalten.\footnote{Es wird empfohlen, dass alle Zeilen in einer Metamath-Quelldatei eine Länge von höchstens 79 Zeichen haben, um die Kompatibilität zwischen verschiedenen Computerterminals zu gewährleisten. Beim Erstellen einer Quelldatei in einem Editor wie Word, wählen Sie eine nichtproportionale Schriftart\index{nichtproportionale Schriftart} wie Courier\index{Courier Schriftart} oder Monaco\index{Monaco Schriftart}, um dies zu erleichtern. Oder noch besser, verwenden Sie einfach einen einfachen Texteditor wie Notepad.} @@ -2051,7 +2052,7 @@ \subsection{Konvertierung des Beweises nach Metamath}\label{convert} Beachten Sie, dass \texttt{\$\char`\{} und \texttt{\$\char`\}} keine Auswirkungen auf den Gültigkeitsbereich von Behauptungen (\texttt{\$a} und \texttt{\$p}) haben. Behauptung sind immer verfügbar, um von jedem späteren Beweis in der Quelldatei referenziert zu werden. Jede beweisbare Behauptung (\texttt{\$p}\index{\texttt{\$p}-Anweisung} Behauptung) besteht aus zwei Teilen. Der erste Teil ist die Behauptung\index{Behauptung} selbst: eine Folge von mathematischen Symbolen\index{mathematisches Symbol}, die zwischen dem \texttt{\$p}-Token und einem \texttt{\$=}\index{\texttt{\$=} Schlüsselwort}-Token platziert ist. Der zweite Teil ist ein "`Beweis"': eine Liste von Label-Token, die zwischen dem \texttt{\$=}-Token und dem \texttt{\$.}-Token\index{\texttt{\$.} Schlüsselwort}, das die Behauptung beendet, liegt.\footnote{Wenn Sie die \texttt{set.mm}-Datenbasis angesehen haben, ist Ihnen vielleicht eine andere Notation aufgefallen, die für -Beweise genutzt wird. Die andere Notation wird "`komprimiert"'\index{komprimierter Beweis}\index{Beweis!komprimiert} genannt. Sie reduziert den Platzbedarf zur effizienten Speicherung eines Beweises in der Datenbasis, und wird in Anhang~\ref{compressed} beschrieben. In dem obigen Beispiel verwenden wir die "`normale"'\index{normaler Beweis}\index{Beweis!normal} Notation.} +Beweise genutzt wird. Die andere Notation wird "`komprimiert"'\index{komprimierter Beweis}\index{Beweis!komprimiert} genannt. Sie reduziert den Platzbedarf zur effizienten Speicherung eines Beweises in der Datenbasis, und wird in Anhang~\ref{compressed} beschrieben. In dem obigen Beispiel verwenden wir die "`normale"'\index{normaler Beweis}\index{Beweis!normal} Notation.} Der Beweis fungiert als eine Reihe von Anweisungen für das Metamath-Programm, die ihm sagen, wie die Abfolge der mathematischen Symbole, die im Behauptungsteil der Anweisung enthalten ist, unter Verwendung der Hypothesen der \texttt{\$p}-Anweisung und der vorherigen Behauptungen. Die Konstruktion erfolgt nach genauen Regeln. Wenn die Liste der Label im Beweis gegen diese Regeln verstößt oder wenn die sich ergebende Endsequenz nicht mit der Behauptung übereinstimmt, gibt das Metamath-Programm eine Fehlermeldung aus. Wenn Sie mit der umgekehrten polnischen Notation (engl. "`reverse Polish notation"'; RPN) vertraut sind, die manchmal auf Taschenrechnern verwendet wird, wissen Sie, wie ein Beweis in Kurzform funktioniert. Jedes Hypothesenlabel\index{Hypothesenlabel} im Beweis wird auf den RPN-Stapel\index{Stapel}\index{RPN-Stapel} geschoben\index{schieben} sobald es auftaucht. Jedes Label einer Behauptung\index{Behauptungslabel} entfernt\index{entfernen} so viele @@ -2112,7 +2113,7 @@ \section{Ein Probelauf}\label{trialrun} \end{verbatim} Sie können mit mehreren Befehlen untersuchen, was in Ihrer Datenbasis enthalten ist. -Abschnitt~\ref{exploring} enthält eine Übersicht über einige nützliche Befehle. Der Befehl \texttt{show labels} lässt Sie sehen, welche Label\index{Label} vorhanden sind. Ein \texttt{*} entspricht einer beliebigen Kombination von Zeichen, und \texttt{t*} bezieht sich auf alle Labels, die mit dem Buchstaben \texttt{t}\index{\texttt{show labels}-Befehl} beginnen. Das \texttt{/all} ist ein "`Befehlszeilenparameter"' \index{Befehlszeilenparameter}, der Metamath anweist, die Beschriftungen der Hypothesen einzuschließen. (Um die Syntax erklärt zu bekommen, geben Sie\texttt{help show labels} ein .) +Abschnitt~\ref{exploring} enthält eine Übersicht über einige nützliche Befehle. Der Befehl \texttt{show labels} lässt Sie sehen, welche Label\index{Label} vorhanden sind. Ein \texttt{*} entspricht einer beliebigen Kombination von Zeichen, und \texttt{t*} bezieht sich auf alle Labels, die mit dem Buchstaben \texttt{t}\index{\texttt{show labels}-Befehl} beginnen. Das \texttt{/all} ist ein "`Befehlszeilenparameter"' \index{Befehlszeilenparameter}, der Metamath anweist, die Beschriftungen der Hypothesen einzuschließen. (Um die Syntax erklärt zu bekommen, geben Sie\texttt{help show labels} ein .) Geben Sie Folgendes ein: \begin{verbatim} @@ -2554,7 +2555,7 @@ \section{Ihr erster Beweis}\label{frstprf} Ein oft nützlicher Befehl ist \texttt{minimize{\char`\_}with*/brief}, der versucht, den Beweis zu verkürzen. Er kann den Prozess des Beweisens effizienter machen, indem er Sie einen etwas "`schlampigen"' Beweis schreiben lässt und ihn dann durch einige feine Optimierungsdetails für Sie bereinigt (obwohl er keine Wunder vollbringen kann, wie z.B. die Umstrukturierung des gesamten Beweises). -\section{\sloppy Hinweise zur Bearbeitung einer Daten\-basis} +\section{\texorpdfstring{\raggedright}{}Hinweise zur Bearbeitung einer Datenbasis} Sobald die Quelldatei ihrer Datenbasis Beweise enthält, gibt es einige Einschränkungen für deren Bearbeitung, damit die Beweise gültig bleiben. Diese Regeln sollten Sie besonders beachten, da Sie sonst mühsam erzielte Ergebnisse verlieren können. Es ist sinnvoll, alle Beweise regelmäßig mit \texttt{verify proof *} zu überprüfen, um ihre Integrität sicherzustellen. @@ -2644,7 +2645,7 @@ \subsection{Aussagenlogik} \end{tabular}\end{center} Wenn alle Einträge in der letzten Spalte wahr ($W$) sind, ist die Formel eine Tautologie. -Die Wahrheitstabellen-Methode sagt Ihnen nicht, wie Sie die Tautologie aus den Axiomen beweisen können, sondern nur, dass ein Beweis existiert. Einen tatsächlichen Beweis zu finden (insbesondere einen, der kurz und elegant ist), kann eine Herausforderung sein. Es gibt zwar Methoden zur automatischen Generierung von Beweisen in der Aussagenlogik, aber die daraus resultierenden Beweise können manchmal sehr lang sein. In der Metamath-Datenbasis \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})} wurden die meisten oder sogar alle Beweise manuell erstellt. +Die Wahrheitstabellen-Methode sagt Ihnen nicht, wie Sie die Tautologie aus den Axiomen beweisen können, sondern nur, dass ein Beweis existiert. Einen tatsächlichen Beweis zu finden (insbesondere einen, der kurz und elegant ist), kann eine Herausforderung sein. Es gibt zwar Methoden zur automatischen Generierung von Beweisen in der Aussagenlogik, aber die daraus resultierenden Beweise können manchmal sehr lang sein. In der Metamath-Datenbasis \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})} wurden die meisten oder sogar alle Beweise manuell erstellt. In Abschnitt \ref{metadefprop} werden verschiedene Definitionen erörtert, die die Verwendung der Aussagenlogik erleichtern. Wir definieren zum Beispiel: @@ -2882,7 +2883,7 @@ \subsection{Aussagenlogik}\label{propcalc}\index{Axiome der Aussagenlogik} \needspace{7\baselineskip} -\subsection{Axiome der Prädikatenlogik mit Gleichheit\\--- Tarskis S2}\index{Axiome der Prädikatenlogik} +\subsection{Axiome der Prädikatenlogik mit Gleichheit\texorpdfstring{\\---}{ ---} Tarskis S2}\index{Axiome der Prädikatenlogik} \needspace{3\baselineskip} \noindent Regel der Verallgemeinerung.\index{Regel der Verallgemeinerung} @@ -2964,7 +2965,7 @@ \subsection{Axiome der Prädikatenlogik mit Gleichheit\\--- Tarskis S2}\index{Ax \needspace{4\baselineskip} -\subsection{Axiome der Prädikatenlogik mit Gleichheit\\--- Hilfsaxiome}\index{Axiome der Prädikatenlogik - Hilfsaxiome} +\subsection{Axiome der Prädikatenlogik mit Gleichheit\texorpdfstring{\\---}{ ---} Hilfsaxiome}\index{Axiome der Prädikatenlogik - Hilfsaxiome} \needspace{2\baselineskip} \noindent Axiom der quantifizierten Negation. @@ -3278,7 +3279,7 @@ \subsection{Definitionen für die Prädikatenlogik}\label{metadefpred} Die Symbole $x$, $y$ und $z$ stehen für individuelle Variablen der Prädikatenlogik. In diesem Abschnitt sind sie nicht notwendigerweise verschieden, es sei denn, es wird ausdrücklich erwähnt. \vskip 2ex -\noindent Definition der {\bf existentiellen Quantifizierung}. +\noindent Definition der {\bf existentiellen Quantifizierung}. Der Ausdruck $\exists x \varphi$ bedeutet "`Es existiert ein $x$, bei dem $\varphi$ wahr ist."'\index{Existenzquantor ($\exists$)}\label{df-ex} @@ -3297,7 +3298,7 @@ \subsection{Definitionen für die Prädikatenlogik}\label{metadefpred} In unserer Notation verwenden wir $[ y / x ] \varphi$, um "`die wff zu bezeichnen, die sich ergibt, wenn $y$ in der wff $\varphi$ echt durch $x$ ersetzt wird"'.\footnote{Dies kann auch so beschrieben werden, dass $x$ durch $y$ ersetzt wird, $y$ $x$ echt ersetzt, oder $x$ echt durch $y$ ersetzt wird.} % This is elsb4, though it currently says: ( [ x / y ] z e. y <-> z e. x ) -Zum Beispiel ist $[ y / x ] z \in x$ das gleiche wie $z \in y$. Man kann sich diese Notation leicht merken, wenn man sie mit einer Division vergleicht, bei der $( y / x ) \cdot x $ $y$ ist (wenn $x \neq 0$). Die Notation unterscheidet sich von der Notation $\varphi ( x | y )$, die manchmal verwendet wird, weil letztere Notation für uns mehrdeutig ist: Wir wissen zum Beispiel nicht, ob $\lnot \varphi ( x | y )$ als $\lnot ( \varphi ( x | y )$ oder $( \lnot \varphi ) ( x | y )$ zu interpretieren ist.\footnote{Aufgrund der Art und Weise, wie wir wffs ursprünglich definiert haben, ist dies der Fall bei jedem Postfix-Konnektor\index{Postfix-Konnektor} (einer, der nach den zu verbindenden Symbolen auftritt) oder einem Infix-Konnektor\index{Infix-Konnektor} (einer, der zwischen den zu verbindenden Symbolen vorkommt). Metamath hat keine eingebaute Regel für die Vorrangigkeit einer Operatorausführung, die die Mehrdeutigkeit beseitigen könnte. Die öffnende Klammer stellt einen effektiven Präfix-Konnektor\index{Präfix-Konnektor} dar, um die Mehrdeutigkeit zu beseitigen. Einige Konventionen, wie z. B. die polnische Notation\index{polnische Notation}, die in den 1930er und 1940er Jahren von polnischen Logikern verwendet wurde, verwenden nur Präfix-Konnektoren und ermöglichen so den vollständigen Verzicht auf Klammern, was allerdings auf Kosten der Lesbarkeit geht. In Metamath könnten wir, wenn wir wollten, die gesamte Notation auf die polnische Notation umstellen, ohne irgendwelche Beweise ändern zu müssen!} In anderen Texten wird oft $\varphi(y)$ verwendet, um unser $[ y / x ] \varphi$ zu bezeichnen, aber diese Schreibweise ist noch mehrdeutiger, da es keinen ausdrücklichen Hinweis darauf gibt, was ersetzt wird. +Zum Beispiel ist $[ y / x ] z \in x$ das gleiche wie $z \in y$. Man kann sich diese Notation leicht merken, wenn man sie mit einer Division vergleicht, bei der $( y / x ) \cdot x $ $y$ ist (wenn $x \neq 0$). Die Notation unterscheidet sich von der Notation $\varphi ( x | y )$, die manchmal verwendet wird, weil letztere Notation für uns mehrdeutig ist: Wir wissen zum Beispiel nicht, ob $\lnot \varphi ( x | y )$ als $\lnot ( \varphi ( x | y )$ oder $( \lnot \varphi ) ( x | y )$ zu interpretieren ist.\footnote{Aufgrund der Art und Weise, wie wir wffs ursprünglich definiert haben, ist dies der Fall bei jedem Postfix-Konnektor\index{Postfix-Konnektor} (einer, der nach den zu verbindenden Symbolen auftritt) oder einem Infix-Konnektor\index{Infix-Konnektor} (einer, der zwischen den zu verbindenden Symbolen vorkommt). Metamath hat keine eingebaute Regel für die Vorrangigkeit einer Operatorausführung, die die Mehrdeutigkeit beseitigen könnte. Die öffnende Klammer stellt einen effektiven Präfix-Konnektor\index{Präfix-Konnektor} dar, um die Mehrdeutigkeit zu beseitigen. Einige Konventionen, wie z. B. die polnische Notation\index{polnische Notation}, die in den 1930er und 1940er Jahren von polnischen Logikern verwendet wurde, verwenden nur Präfix-Konnektoren und ermöglichen so den vollständigen Verzicht auf Klammern, was allerdings auf Kosten der Lesbarkeit geht. In Metamath könnten wir, wenn wir wollten, die gesamte Notation auf die polnische Notation umstellen, ohne irgendwelche Beweise ändern zu müssen!} In anderen Texten wird oft $\varphi(y)$ verwendet, um unser $[ y / x ] \varphi$ zu bezeichnen, aber diese Schreibweise ist noch mehrdeutiger, da es keinen ausdrücklichen Hinweis darauf gibt, was ersetzt wird. Man beachte, dass unsere Definition auch dann gültig ist, wenn $x$ und $y$ die gleiche Variable repräsentieren. Die erste Konjunktion in der folgenden formalen Definition ist ein "`Trick"', um diese Eigenschaft zu erreichen, was die Definition auf den ersten Blick etwas merkwürdig erscheinen lässt. \vskip 0.5ex @@ -3616,7 +3617,7 @@ \subsection{Definitionen für die Mengenlehre}\label{setdefinitions} \subseteq}\m{A}\m{)} \endm \begin{mmraw}% -|- ( Tr A <-> +|- ( Tr A <-> U. A C\_ A ) \$. \end{mmraw} \noindent Definition einer Notation für eine {\bf allgemeine binäre Relation}\index{binäre Relation}. Definition 6.18, S.~29, von Takeuti und Zaring, verallgemeinert auf beliebige Klassen. Diese Definition ist wohldefiniert, wenn auch nicht sehr aussagekräftig, wenn die Klassen $A$ und/oder $B$ echte Klassen sind.\label{dfbr} Das Fehlen von Klammern (oder eines anderen Konnektors) erzeugt keine Mehrdeutigkeit, da wir eine atomare wff definieren. @@ -3761,7 +3762,7 @@ \subsection{Definitionen für die Mengenlehre}\label{setdefinitions} |- om = \{ x | ( Ord x \TAND A. y ( Lim y -> x e. y ) ) \} \$. \end{mmraw} -\noindent Definition eines {\bf kartesischen Produkts} (auch {\bf Kreuzprodukt}\index{Kartesisches Produkt}\index{Kreuzprodukt} genannt) von zwei Klassen. Definition 9.11 von Quine, S.~64. +\noindent Definition eines {\bf kartesischen Produkts} (auch {\bf Kreuzprodukt}\index{Kartesisches Produkt}\index{Kreuzprodukt} genannt) von zwei Klassen. Definition 9.11 von Quine, S.~64. \vskip 0.5ex \setbox\startprefix=\hbox{\tt \ \ df-xp\ \$a\ } @@ -4015,7 +4016,7 @@ \section{Tricks des Verfahrens}\label{tricks} \endm \vskip 1ex -sollte als "`unter der Annahme, dass die Variable $x$ in wff $\varphi$ (effektiv) nicht frei ist"'\index{effektiv nicht frei} verstanden werden. Wörtlich heißt das: "`Angenommen, es ist beweisbar, dass $\varphi \rightarrow \forall x\, \varphi$."' Auf diese Weise können wir die Komplexität vermeiden, die mit der Standardbehandlung von freien und gebundenen Variablen verbunden ist. +sollte als "`unter der Annahme, dass die Variable $x$ in wff $\varphi$ (effektiv) nicht frei ist"'\index{effektiv nicht frei} verstanden werden. Wörtlich heißt das: "`Angenommen, es ist beweisbar, dass $\varphi \rightarrow \forall x\, \varphi$."' Auf diese Weise können wir die Komplexität vermeiden, die mit der Standardbehandlung von freien und gebundenen Variablen verbunden ist. %Uncomment this when uncommenting section {formalspec} below In der Fußnote auf S.~\pageref{effectivelybound} wird dies näher erläutert. @@ -4409,8 +4410,8 @@ \subsection{Die Axiome für reelle und komplexe Zahlen selbst}\label{realactual} Für die Axiome werden uns 8 Klassen vorgegeben (oder vorausgesetzt): $\mathbb{C}$ (die Menge der komplexen Zahlen), $\mathbb{R}$ (die Menge der reellen Zahlen, eine Teilmenge von $\mathbb{C}$), $0$ (Null), $1$ (Eins), $i$ (Quadratwurzel aus $-1$), $+$ (plus), $\cdot$ (mal) und $<_{\mathbb{R}}$ (kleiner als, nur für die reellen Zahlen). Subtraktion und Division sind definierte Begriffe und werden nicht in den Axiomen verwendet. Für ihre Definitionen siehe \texttt{set.mm}. -Man beachte, dass die Notation $(A+B)$ (und ähnlich $(A\cdot B)$) eine Klasse bezeichnet, die als {\em Operation},\index{Operation} bezeichnet wird und den Funktionswert der Klasse $+$ für das geordnete Paar $\langle A,B \rangle$ darstellt. Eine Operation ist durch die Aussage \texttt{df-opr} auf Seite ~\pageref{dfopr} definiert. Die Notation $A <_{\mathbb{R}} B$ bezeichnet eine wff, die als {\em binäre Relation}\index{binäre Relation} bezeichnet wird und $\langle A,B \rangle \in \,<_{\mathbb{R}}$ bedeutet, wie durch \texttt{df-br} auf Seite ~\pageref{dfbr} definiert. - +Man beachte, dass die Notation $(A+B)$ (und ähnlich $(A\cdot B)$) eine Klasse bezeichnet, die als {\em Operation},\index{Operation} bezeichnet wird und den Funktionswert der Klasse $+$ für das geordnete Paar $\langle A,B \rangle$ darstellt. Eine Operation ist durch die Aussage \texttt{df-opr} auf Seite ~\pageref{dfopr} definiert. Die Notation $A <_{\mathbb{R}} B$ bezeichnet eine wff, die als {\em binäre Relation}\index{binäre Relation} bezeichnet wird und $\langle A,B \rangle \in \,<_{\mathbb{R}}$ bedeutet, wie durch \texttt{df-br} auf Seite ~\pageref{dfbr} definiert. + Wir gehen davon aus, dass die 8 vorgegebenen Klassen die folgenden 22 Axiome erfüllen (in den unten aufgeführten Axiomen wird kurz $<$ statt $<_{\mathbb{R}}$ verwendet). \vskip 2ex @@ -4678,11 +4679,11 @@ \subsection{Die Axiome für reelle und komplexe Zahlen selbst}\label{realactual} In \texttt{set.mm} definieren wir die positiven ganzen Zahlen $\mathbb{N}$, die nichtnegativen ganzen Zahlen $\mathbb{N}_0$, die ganzen Zahlen $\mathbb{Z}$ und die rationalen Zahlen $\mathbb{Q}$ als Teilmengen von $\mathbb{R}$. Dies führt zu der schönen Teilmengenkette $\mathbb{N} \subseteq \mathbb{N}_0 \subseteq \mathbb{Z} \subseteq \mathbb{Q} \subseteq \mathbb{R} \subseteq \mathbb{C}$, was uns einen einheitlichen Rahmen für die Arithmetik gibt, in dem zum Beispiel eine Eigenschaft wie die Kommutativität der Addition komplexer Zahlen automatisch für ganze Zahlen gilt. Die natürlichen Zahlen $\mathbb{N}$\footnote{Anm. der Übersetzer: sowohl im Deutschen als auch im Englischen ist nicht eindeutig festgelegt, ob mit dem Begriff "`natürliche Zahlen"' die positiven ganzen Zahlen $\mathbb{N}$ oder die nichtnegativen ganzen Zahlen $\mathbb{N}_0$ gemeint werden.} unterscheiden sich von der zuvor definierten Menge $\omega$, aber beide erfüllen die Peanoschen Postulate. -\subsection{Axiome für komplexe Zahlen in Texten zur \\Analysis} +\subsection{Axiome für komplexe Zahlen in Texten zur \texorpdfstring{\\}{}Analysis} Die meisten Texte zur Analysis konstruieren komplexe Zahlen als geordnete Paare von reellen Zahlen, was zu konstruktionsabhängigen Eigenschaften führt, die diese Axiome erfüllen, aber nicht in ihrer reinen Form angegeben werden. (Dies geschieht auch in \texttt{set.mm}, aber unsere Axiome abstrahieren von dieser Konstruktion.) In anderen Texten heißt es einfach, dass $\mathbb{R}$ ein "`komplettes geordnetes Teilfeld von $\mathbb{C}$ ist"', was zu redundanten Axiomen führt, wenn man diese Phrase vollständig ausformuliert. Tatsächlich habe ich noch keinen Text gesehen, der die Axiome in der obigen expliziten Form enthält. Keines dieser Axiome ist individuell einzigartig, aber diese sorgfältig ausgearbeitete Sammlung von Axiomen ist das Ergebnis jahrelanger Arbeit der Metamath-Gemeinschaft. -\subsection{Beseitigung unnötiger Axiome für komplexe \\Zahlen} +\subsection{Beseitigung unnötiger Axiome für komplexe \texorpdfstring{\\}{}Zahlen} Metamath hatte ursprünglich mehr Axiome für reelle und komplexe Zahlen, aber im Laufe der Zeit haben wir (die Metamath-Gemeinschaft) Wege gefunden, unnötige Axiome zu eliminieren (indem wir sie anhand anderer Axiome bewiesen haben) oder sie abzuschwächen (indem wir schwächere Behauptungen aufgestellt haben, ohne die Beweisbarkeit der auf sie aufbauenden Theoreme zu reduzieren). Es folgen einige Aussagen, die früher Axiome für komplexe Zahlen waren, die aber inzwischen (mit Metamath) formal als überflüssig nachgewiesen wurden: @@ -4836,7 +4837,7 @@ \subsection{Deduktionsstil}\label{deductionstyle} Sobald Sie eine Behauptung in Deduktionsform haben, können Sie sie leicht in die Inferenzform oder geschlossene Form umwandeln: \begin{itemize} -\item Um eine Behauptung Ti in Inferenzform zu beweisen, wenn die Behauptung Td in Deduktionsform vorliegt, gibt es einen einfachen mechanischen Prozess, den man anwenden kann. Zuerst nimmt man jede Annahme Ti und fügt ein \texttt{T.} $\rightarrow$-Präfix ("`wahr impliziert"') unter Verwendung von \texttt{a1i} ein. Sie können dann die vorhandene Behauptung Td verwenden, um die resultierende Schlussfolgerung mit einem \texttt{T.} $\rightarrow$-Präfix beweisen. Schließlich können Sie dieses Präfix mit \texttt{mptru} entfernen, was zu der Schlussfolgerung führt, die Sie beweisen wollten\footnote{Anm. der Übersetzer: Siehe zum Beispiel \texttt{hadbi123i} oder \texttt{abeq2i}.}. +\item Um eine Behauptung Ti in Inferenzform zu beweisen, wenn die Behauptung Td in Deduktionsform vorliegt, gibt es einen einfachen mechanischen Prozess, den man anwenden kann. Zuerst nimmt man jede Annahme Ti und fügt ein \texttt{T.} $\rightarrow$-Präfix ("`wahr impliziert"') unter Verwendung von \texttt{a1i} ein. Sie können dann die vorhandene Behauptung Td verwenden, um die resultierende Schlussfolgerung mit einem \texttt{T.} $\rightarrow$-Präfix beweisen. Schließlich können Sie dieses Präfix mit \texttt{mptru} entfernen, was zu der Schlussfolgerung führt, die Sie beweisen wollten\footnote{Anm. der Übersetzer: Siehe zum Beispiel \texttt{hadbi123i} oder \texttt{abeq2i}.}. \item Um eine Behauptung T in geschlossener Form zu beweisen, wenn die Behauptung Td in Deduktionsform vorliegt, gibt es ein weiteres einfaches mechanisches Verfahren, das Sie anwenden können. Wählen Sie zunächst einen Ausdruck, der die Konjunktion (...$\land$...) aller Folgerungen jeder Annahme von Td ist. Beweisen Sie dann, dass dieser Ausdruck jede der einzelnen Annahmen von Td impliziert, indem Sie die Konjunktionen eliminieren (es gibt eine Reihe von bewiesenen Behauptungen, um dies zu tun, einschließlich \texttt{simpl}, \texttt{simpr}, @@ -5130,7 +5131,7 @@ \section{Erforschung der Mengenlehre-Datenbasis}\label{exploring} ph ( ph -> ( ( ph -> ph ) -> ph ) ) \end{verbatim} -Dies zeigt die Substitutionen\index{Substitution!Variable}\index{Variablensubstitution}, die an den Variablen in \texttt{ax-1} vorgenommen wurden. Es wird auf die Schritte 18 und 19 verwiesen, die in unserer Beweisdarstellung nicht gezeigt werden. Um diese Schritte zu sehen, können Sie den Beweis mit der Option \texttt{all} anzeigen. +Dies zeigt die Substitutionen\index{Substitution!Variable}\index{Variablensubstitution}, die an den Variablen in \texttt{ax-1} vorgenommen wurden. Es wird auf die Schritte 18 und 19 verwiesen, die in unserer Beweisdarstellung nicht gezeigt werden. Um diese Schritte zu sehen, können Sie den Beweis mit der Option \texttt{all} anzeigen. Sehen wir uns nun einen etwas fortgeschritteneren Beweis der Aussagenlogik an. Beachten Sie, dass \verb+/\+ das Symbol für $\wedge$ (logisches {\sc und}, auch Konjunktion genannt) ist. \index{Konjunktion ($\wedge$)} \index{logisches {\sc und} ($\wedge$)} @@ -5275,7 +5276,7 @@ \section{Erforschung der Mengenlehre-Datenbasis}\label{exploring} ... \end{verbatim} -\subsection{Eine Anmerkung zum "`kompakten"' \\Beweis\-format} +\subsection{Eine Anmerkung zum "`kompakten"'\texorpdfstring{\\}{} Beweis\-format} Das Programm Metamath zeigt Beweise in einem "`kompakten"'\index{kompakter Beweis} Format an, wenn der Beweis in komprimiertem Format in der Datenbasis gespeichert ist. Dies kann etwas verwirrend sein, wenn man nicht weiß, wie dies zu interpretieren ist. Wenn Sie zum Beispiel den vollständigen Beweis des Theorems \texttt{id1} anzeigen lassen, wird er wie folgt beginnen: @@ -5888,9 +5889,9 @@ \subsection{Die \texttt{\$f}- und \texttt{\$e}-Anweisungen}\label{dollaref} Der Typ einer Variablen muss in einer \texttt{\$f}-Anweisung angegeben sein, bevor sie in einer \texttt{\$e}-, \texttt{\$a}- oder \texttt{\$p}-Anweisung verwendet werden kann. Es darf nur eine (aktive) \texttt{\$f}-Anweisung für eine bestimmte Variable geben. ("`Aktiv"' ist in Abschnitt~\ref{scoping} definiert.) In der gewöhnlichen Mathematik werden Theoreme oft in der Form "`Annahme $P$; dann $Q$"' ausgedrückt, wobei $Q$ eine Aussage ist, die man ableiten kann, wenn man von der Aussage $P$ ausgeht.\index{freie Variable} -\footnote{Eine stärkere Version eines Theorems wie dieses wäre die {\em einzelne} Formel $P\rightarrow Q$ ($P$ impliziert $Q$), aus der die schwächere Version oben durch den Modus ponens in der Logik folgt. -Wir diskutieren diese stärkere Form hier nicht. In der schwächeren Form sagen wir nur, dass, wenn wir $P$ beweisen können, wir auch $Q$ beweisen können. -Wenn $x$ die einzige freie Variable in $P$ und $Q$ ist, ist in der Sprache der Logiker die stärkere Form äquivalent zu $\forall x ( P \rightarrow Q)$ (für alle $x$ impliziert $P$ $Q$), während die schwächere Form äquivalent zu $\forall x P \rightarrow \forall x Q$ ist. Die stärkere Form impliziert die schwächere, aber nicht umgekehrt. +\footnote{Eine stärkere Version eines Theorems wie dieses wäre die {\em einzelne} Formel $P\rightarrow Q$ ($P$ impliziert $Q$), aus der die schwächere Version oben durch den Modus ponens in der Logik folgt. +Wir diskutieren diese stärkere Form hier nicht. In der schwächeren Form sagen wir nur, dass, wenn wir $P$ beweisen können, wir auch $Q$ beweisen können. +Wenn $x$ die einzige freie Variable in $P$ und $Q$ ist, ist in der Sprache der Logiker die stärkere Form äquivalent zu $\forall x ( P \rightarrow Q)$ (für alle $x$ impliziert $P$ $Q$), während die schwächere Form äquivalent zu $\forall x P \rightarrow \forall x Q$ ist. Die stärkere Form impliziert die schwächere, aber nicht umgekehrt. Um genau zu sein, wird die schwächere Form des Satzes richtigerweise als "`Inferenz"' und nicht als Satz bezeichnet.} In der Metamath-Sprache würde man die mathematische Aussage $P$ als Hypothese (in diesem Fall eine \texttt{\$e}-Anweisung in der Metamath-Sprache) und die Aussage $Q$ als beweisbare Behauptung (eine \texttt{\$p}-Anweisung in der Metamath-Sprache) ausdrücken. @@ -5991,7 +5992,7 @@ \subsection{Frames}\label{frames} $c -> ( ) |- wff $. \end{verbatim} -Die folgende Folge von Anweisungen, die die Modus ponens Schlussregel beschreibt, ist ein Beispiel für ein Frame: +Die folgende Folge von Anweisungen, die die Modus ponens Schlussregel beschreibt, ist ein Beispiel für ein Frame: \begin{verbatim} wp $f wff P $. @@ -6050,9 +6051,9 @@ \subsection{Frames}\label{frames} mp $p |- Q $= ... $. \end{verbatim} -Jeder Frame ist ein erweiterter Frame, aber nicht jeder erweiterte Frame ist ein Frame, wie dieses Beispiel zeigt. Den zugrundeliegenden Frame für einen erweiterten Frame erhält man, indem man einfach alle Anweisungen entfernt, die optionale Variablen enthalten. Jeder Beweis, der sich auf eine Behauptung bezieht, ignoriert alle Erweiterungen ihres Frames, was bedeutet, dass wir optionale Hypothesen nach Belieben hinzufügen oder löschen können, ohne dass dies Auswirkungen auf nachfolgende Beweise hat. +Jeder Frame ist ein erweiterter Frame, aber nicht jeder erweiterte Frame ist ein Frame, wie dieses Beispiel zeigt. Den zugrundeliegenden Frame für einen erweiterten Frame erhält man, indem man einfach alle Anweisungen entfernt, die optionale Variablen enthalten. Jeder Beweis, der sich auf eine Behauptung bezieht, ignoriert alle Erweiterungen ihres Frames, was bedeutet, dass wir optionale Hypothesen nach Belieben hinzufügen oder löschen können, ohne dass dies Auswirkungen auf nachfolgende Beweise hat. -Die konzeptionell einfachste Art, eine Metamath-Datenbasis zu organisieren, ist eine Folge von erweiterten Frames. Die Gültigkeitsbereichsanweisungen \texttt{\$\char`\{}\index{\texttt{\$\char`\{} und \texttt{\$\char`\}} Schlüsselwörter} und \texttt{\$\char`\}} können verwendet werden, um den Anfang und das Ende eines erweiterten Frames abzugrenzen, was zu der folgenden möglichen Struktur für eine Datenbasis führt. \label{framelist} +Die konzeptionell einfachste Art, eine Metamath-Datenbasis zu organisieren, ist eine Folge von erweiterten Frames. Die Gültigkeitsbereichsanweisungen \texttt{\$\char`\{}\index{\texttt{\$\char`\{} und \texttt{\$\char`\}} Schlüsselwörter} und \texttt{\$\char`\}} können verwendet werden, um den Anfang und das Ende eines erweiterten Frames abzugrenzen, was zu der folgenden möglichen Struktur für eine Datenbasis führt. \label{framelist} \vskip 2ex \setbox\startprefix=\hbox{\tt \ \ \ \ \ \ \ \ } @@ -6107,7 +6108,7 @@ \subsection{Gültigkeitsbereichsanweisungen (\texttt{\$\{} und \texttt{\$\}})}\l %c%might want to let some symbol declarations be "`local"' rather than "`global."' %c%\index{local symbol}\index{global symbol} -Die {\bf Gültigkeitsbereich}-Anweisungen, \texttt{\$\char`\{} ({\bf beginn eines Blocks}) und \texttt{\$\char`\}} ({\bf Ende eines Blocks})\index{Block}, bieten ein Mittel zur Steuerung des Teils einer Datenbasis, in dem bestimmte Anweisungstypen erkannt werden. Die Syntax einer Gültigkeitsbereichsanweisung ist sehr einfach; sie besteht lediglich aus dem Schlüsselwort der Anweisung: +Die {\bf Gültigkeitsbereich}-Anweisungen, \texttt{\$\char`\{} ({\bf beginn eines Blocks}) und \texttt{\$\char`\}} ({\bf Ende eines Blocks})\index{Block}, bieten ein Mittel zur Steuerung des Teils einer Datenbasis, in dem bestimmte Anweisungstypen erkannt werden. Die Syntax einer Gültigkeitsbereichsanweisung ist sehr einfach; sie besteht lediglich aus dem Schlüsselwort der Anweisung: \begin{center} \texttt{\$\char`\{}\\ \texttt{\$\char`\}} @@ -6420,7 +6421,7 @@ \section{Die Anatomie eines Beweises} \label{proof} 1 & \texttt{wff ( s -> ( r -> p ) )} \\ \hline \end{tabular}\end{center} -Nachdem Metamath die Verarbeitung des Beweises abgeschlossen hat\footnote{Anm. der Übersetzer: Da der Beweis kein weiteres Label enthält.}, prüft es, ob der Stapel genau ein Element enthält und ob dieses Element mit der mathematischen Symbolfolge in der \texttt{\$p}\index{\texttt{\$p}-Anweisung}-Anweisung übereinstimmt. Dies ist bei unserem Beweis von \texttt{wnew} der Fall, also haben wir \texttt{wnew} erfolgreich bewiesen. Wenn das Ergebnis davon abweicht, wird Metamath Sie mit einer Fehlermeldung informieren. Eine Fehlermeldung wird auch ausgegeben, wenn der Stapel am Ende des Beweises mehr als einen Eintrag enthält, oder wenn der Stapel an irgendeiner Stelle des Beweises nicht genügend Einträge enthält, um alle obligatorischen Hypothesen\index{obligatorische Hypothese} einer Behauptung zu erfüllen. Schließlich wird Metamath Sie mit einer Fehlermeldung benachrichtigen, wenn keine Substitution möglich ist, die die Hypothese einer referenzierten Behauptung mit den Stapeleinträgen übereinstimmen lässt. Sie können mit den verschiedenen Arten von Fehlern, die Metamath erkennt, experimentieren, indem Sie einige kleine Änderungen am Beweis unseres Beispiels vornehmen. +Nachdem Metamath die Verarbeitung des Beweises abgeschlossen hat\footnote{Anm. der Übersetzer: Da der Beweis kein weiteres Label enthält.}, prüft es, ob der Stapel genau ein Element enthält und ob dieses Element mit der mathematischen Symbolfolge in der \texttt{\$p}\index{\texttt{\$p}-Anweisung}-Anweisung übereinstimmt. Dies ist bei unserem Beweis von \texttt{wnew} der Fall, also haben wir \texttt{wnew} erfolgreich bewiesen. Wenn das Ergebnis davon abweicht, wird Metamath Sie mit einer Fehlermeldung informieren. Eine Fehlermeldung wird auch ausgegeben, wenn der Stapel am Ende des Beweises mehr als einen Eintrag enthält, oder wenn der Stapel an irgendeiner Stelle des Beweises nicht genügend Einträge enthält, um alle obligatorischen Hypothesen\index{obligatorische Hypothese} einer Behauptung zu erfüllen. Schließlich wird Metamath Sie mit einer Fehlermeldung benachrichtigen, wenn keine Substitution möglich ist, die die Hypothese einer referenzierten Behauptung mit den Stapeleinträgen übereinstimmen lässt. Sie können mit den verschiedenen Arten von Fehlern, die Metamath erkennt, experimentieren, indem Sie einige kleine Änderungen am Beweis unseres Beispiels vornehmen. Die Notation von Metamath für Beweise wurde in erster Linie entwickelt, um Beweise in einer relativ kompakten Weise auszudrücken, nicht um sie für Menschen lesbar zu machen. Metamath kann Beweise mit dem Befehl \texttt{show proof}\index{\texttt{show proof}-Befehl} auf verschiedene Arten anzeigen. Die Option \texttt{/lemmon} zeigt sie in einem Format an, das leichter zu lesen ist, wenn die Beweise kurz sind, und Sie haben Beispiele für seine Verwendung in Kapitel~\ref{using} gesehen. Bei längeren Beweisen ist es nützlich, die Baumstruktur des Beweises zu sehen. Eine Baumstruktur wird angezeigt, wenn die Option \texttt{/lemmon} weggelassen wird. Wenn Sie sich an diese Darstellung gewöhnt haben, werden Sie sie wahrscheinlich bequemer finden. Die Baumdarstellung des Beweises in unserem Beispiel sieht wie folgt aus:\label{treeproof}\index{Baumdarstellung eines Beweises}\index{Beweis!Baumdarstellung} @@ -6435,9 +6436,9 @@ \section{Die Anatomie eines Beweises} \label{proof} Die Zahl links von jeder Zeile ist die Schrittnummer. Es folgt eine {\bf Hypothesenzuordnung}\index{Hypothesenzuordnung}, bestehend aus zwei Labels\index{Label}, die durch \texttt{=} getrennt sind. Links von \texttt{=} steht (außer im letzten Schritt) das Label einer Hypothese einer Behauptung, auf die später im Beweis Bezug genommen wird; hier sind die Schritte 1 und 4 die Hypothesenzuordnungen für die Behauptung \texttt{w2}, auf die in Schritt 5 Bezug genommen wird. Eine Hypothesenzuordnung ist eine Stufe weiter eingerückt als die Behauptung, die sie verwendet. Dadurch ist es einfach, die entsprechende Behauptung zu finden, indem man sich direkt nach unten bewegt, bis die Einrückungsstufe um eine Stufe niedriger ist als die, von der aus man begonnen hat. Rechts von jedem \texttt{=} befindet sich das Label des Beweisschritts für diesen Schritt. Das Schlüsselwort der Anweisung im Label des Beweisschritts wird als nächstes aufgeführt, gefolgt vom Inhalt des obersten Stapeleintrags (dem neusten Stapeleintrag), wie er nach der Verarbeitung dieses Beweisschritts vorliegt. Mit ein wenig Übung sollten Sie keine Probleme haben, Beweise in diesem Format zu lesen. Metamath-Beweise beinhalten die Syntaxkonstruktion einer Formel. In der Standardmathematik wird diese Art der Konstruktion nicht als Teil des Beweises angesehen, und sie wird nach einer Weile sicherlich ziemlich langweilig. Daher zeigt der Befehl \texttt{show proof}\index{\texttt{show proof}-Befehl} standardmäßig die Syntaxkonstruktion nicht an. -Früher \textit{zeigte} der Befehl \texttt{show proof} die Syntaxkonstruktionen an, und man musste die Option -\texttt{/essential} hinzufügen, um sie auszublenden, aber heute ist -\texttt{/essential} der Standard, und man muss +Früher \textit{zeigte} der Befehl \texttt{show proof} die Syntaxkonstruktionen an, und man musste die Option +\texttt{/essential} hinzufügen, um sie auszublenden, aber heute ist +\texttt{/essential} der Standard, und man muss \texttt{/all} verwenden, um die Syntaxkonstruktionen zu sehen. Bei der Überprüfung eines Beweises prüft Metamath, dass keine obligatorische \texttt{\$d}\index{\texttt{\$d}-Anweisung}\index{obligatorische \texttt{\$d}-Anweisung}-Anweisung einer Behauptung, auf die in einem Beweis verwiesen wird, verletzt wird, wenn Substitutionen\index{Substitution!Variable}\index{Variablensubstitution} an den Variablen in der Behauptung vorgenommen werden. Für Einzelheiten siehe Abschnitt~\ref{spec4} oder \ref{dollard}. @@ -6452,9 +6453,9 @@ \subsection{Das Konzept der Vereinheitlichung} \label{unify} % Metamath language ensures that if a set of substitutions exists, it % will be unique. -Der in der Literatur beschriebene allgemeine Algorithmus für eine Vereinheitlichung ist etwas komplex. Im Fall von Metamath ist er jedoch absichtlich einfach gehalten. Obligatorische Hypothesen müssen in der Reihenfolge ihres Auftretens auf den Beweisstapel geschoben werden. Darüber hinaus muss der Typ jeder Variablen mit einer \texttt{\$f}-Hypothese spezifiziert werden, bevor sie verwendet wird, und jede \texttt{\$f}-Hypothese muss die eingeschränkte Syntax eines Typcodes (einer Konstanten) gefolgt von einer Variablen aufweisen. Der Typcode in der \texttt{\$f}-Hypothese muss mit dem ersten Symbol des entsprechenden RPN-Stack-Eintrags übereinstimmen (der ebenfalls eine Konstante ist), so dass die einzige mögliche Übereinstimmung für die Variable in der \texttt{\$f}-Hypothese die Folge von Symbolen im Stapeleintrag nach der anfänglichen Konstanten ist. +Der in der Literatur beschriebene allgemeine Algorithmus für eine Vereinheitlichung ist etwas komplex. Im Fall von Metamath ist er jedoch absichtlich einfach gehalten. Obligatorische Hypothesen müssen in der Reihenfolge ihres Auftretens auf den Beweisstapel geschoben werden. Darüber hinaus muss der Typ jeder Variablen mit einer \texttt{\$f}-Hypothese spezifiziert werden, bevor sie verwendet wird, und jede \texttt{\$f}-Hypothese muss die eingeschränkte Syntax eines Typcodes (einer Konstanten) gefolgt von einer Variablen aufweisen. Der Typcode in der \texttt{\$f}-Hypothese muss mit dem ersten Symbol des entsprechenden RPN-Stack-Eintrags übereinstimmen (der ebenfalls eine Konstante ist), so dass die einzige mögliche Übereinstimmung für die Variable in der \texttt{\$f}-Hypothese die Folge von Symbolen im Stapeleintrag nach der anfänglichen Konstanten ist. -Im Beweis-Assistenten\index{Beweis-Assistent} wird ein allgemeinerer Vereinheitlichungsalgorithmus verwendet. Während ein Beweis entwickelt wird, sind manchmal nicht genügend Informationen verfügbar, um eine eindeutige Vereinheitlichung zu bestimmen. In diesem Fall bittet Metamath Sie, die richtige zu wählen.\index{mehrdeutige Vereinheitlichung}\index{Vereinheitlichung!mehrdeutig} +Im Beweis-Assistenten\index{Beweis-Assistent} wird ein allgemeinerer Vereinheitlichungsalgorithmus verwendet. Während ein Beweis entwickelt wird, sind manchmal nicht genügend Informationen verfügbar, um eine eindeutige Vereinheitlichung zu bestimmen. In diesem Fall bittet Metamath Sie, die richtige zu wählen.\index{mehrdeutige Vereinheitlichung}\index{Vereinheitlichung!mehrdeutig} \section{Erweiterungen der Metamath-Sprache}\index{erweiterte Sprache} @@ -6473,7 +6474,7 @@ \subsection{Kommentare in der Metamath-Sprache}\label{comments} Hier ist \index{\texttt{\$(} und \texttt{\$)} Hilfsschlüsselwörter}\index{Kommentar} {\em text} eine, möglicherweise leere, Zeichenkette aus beliebigen Zeichen des Metamath-Zeichensatzes (p.~\pageref{spec1chars}), mit der Ausnahme, dass die Zeichenketten \texttt{\$(} und \texttt{\$)} nicht in {\em text} vorkommen dürfen. Daher sind verschachtelte Kommentare nicht erlaubt:\footnote{Computersprachen haben unterschiedliche Standards für verschachtelte Kommentare, und anstatt sich für einen zu entscheiden, ist es am einfachsten, sie überhaupt nicht zu erlauben, zumindest in der aktuellen Version (0.177) von Metamath\index{Metamath!Limitationen der Version 0.177}.} Metamath wird sich beschweren, wenn \begin{center} \texttt{\$( This is a \$( nested \$) comment.\ \$)} - \end{center} + \end{center} in einer Datenbasis vorkommt. Um diese fehlende Verschachtelungsmöglichkeit zu kompensieren, ändere ich oft alle \texttt{\$}'s in \texttt{@}'s in Abschnitten des Metamath-Codes, die ich auskommentieren möchte. Das Metamath-Programm unterstützt eine Reihe von Auszeichnungsmechanismen und Konventionen, um gut aussehende Ergebnisse in \LaTeX\ und {\sc html} zu generieren, wie unten beschrieben wird. Diese Auszeichnungsfunktionen haben ausschließlich damit zu tun, wie die Kommentare ausgegeben werden, und haben keinen Einfluss darauf, wie Metamath die Beweise in der Datenbasis verifiziert. Ihre unsachgemäße Verwendung kann zu einer falsch angezeigten Ausgabe führen, aber es werden keine Metamath-Fehlermeldungen bei den Befehlen \texttt{read} und \texttt{verify proof} ausgegeben. (Der Befehl \texttt{write theorem\texttt{\char`\_}list} prüft jedoch als Nebeneffekt seiner {\sc html}-Generierung auf Auszeichnungsfehler.) Abschnitt~\ref{texout} enthält Anweisungen zur Erstellung von \LaTeX-Ausgaben, und Abschnitt~\ref{htmlout} enthält Anweisungen zur Erstellung von {\sc html}\index{HTML}-Ausgaben. @@ -6535,7 +6536,7 @@ \subsubsection{Label-Modus}\index{Label-Modus} \subsubsection{Querverweis zum Literaturverzeichnis}\index{Zitierungen}% \index{Querverweis zu Literaturangaben} -Querverweis zum Literaturverzeichnis werden bei der Erstellung von {\sc html} besonders behandelt, wenn sie speziell formatiert sind. Text in der Form \texttt{[}{\em author}\texttt{]} wird als Querverweis zum Literaturverzeichnis betrachtet. Siehe \texttt{help html} und \texttt{help write bibliography} im Metamath-Programm für weitere Informationen. +Querverweis zum Literaturverzeichnis werden bei der Erstellung von {\sc html} besonders behandelt, wenn sie speziell formatiert sind. Text in der Form \texttt{[}{\em author}\texttt{]} wird als Querverweis zum Literaturverzeichnis betrachtet. Siehe \texttt{help html} und \texttt{help write bibliography} im Metamath-Programm für weitere Informationen. % \index{\texttt{\char`\[}\ldots\texttt{]} innerhalb von Kommentaren} Siehe auch Abschnitte~\ref{tcomment} und \ref{wrbib}. @@ -6549,7 +6550,7 @@ \subsubsection{Querverweis zum Literaturverzeichnis}\index{Zitierungen}% Theorem 5.2 von [Monk] S. 223 \end{verbatim} Beim {\em keyword} wird nicht zwischen Groß- und Kleinschreibung unterschieden, und es muss einer der folgenden Begriffe verwendet werden\footnote{Anm. der Übersetzer: angepasst an Metamath - Version 0.198 7-Aug-2021}: -\begin{verbatim} +\begin{verbatim} Axiom Chapter Claim Compare Conclusion Condition Conjecture Corollary Definition Equation Example Exercise Fact Figure Introduction Item Lemma Lemmas @@ -6593,7 +6594,7 @@ \subsubsection{Sonstige Textauszeichnungen}\label{othermarkup} {\em space}\texttt{\char`\_}{\em non-space} (i.e.\ \texttt{\char`\_} - + \begin{itemize} \item[] \texttt{\char`\_} (Unterstrich)\index{\texttt{\char`\_} innerhalb von Kommentaren} - @@ -6701,7 +6702,7 @@ \subsubsection{Schriftsatzkommentar - {\sc html}} \vskip 1ex -Beachten Sie, dass es in {\sc HTML} zwei mögliche Definitionen für mathematische Token gibt. Diese Funktionalität ist nützlich, wenn eine alternative Darstellung von Symbolen gewünscht wird, zum Beispiel eine, die Unicode-Entities verwendet, und eine andere, die {\sc gif}-Bilder verwendet. +Beachten Sie, dass es in {\sc HTML} zwei mögliche Definitionen für mathematische Token gibt. Diese Funktionalität ist nützlich, wenn eine alternative Darstellung von Symbolen gewünscht wird, zum Beispiel eine, die Unicode-Entities verwendet, und eine andere, die {\sc gif}-Bilder verwendet. Es gibt viele andere Schrifsatzdefinitionen, die {\sc HTML} steuern können. Dazu gehören: @@ -6757,7 +6758,7 @@ \subsubsection{Schriftsatzkommentar - {\sc html}} \texttt{exthtmllabel \char`\"}{\em label}\texttt{\char`\";}% \index{\texttt{exthtmllabel}-Anweisung} -\vskip 1ex +\vskip 1ex \noindent welches die Anweisung der Datenbasis identifiziert, mit der der "`erweiterte"' Abschnitt der Datenbasis (in unserem Beispiel der Hilbert Space Explorer) beginnt. Bei der Generierung von Webseiten für diese erste Anweisung und die nachfolgenden Anweisungen wird der {\sc html}-Code, der \texttt{exthtmltitle} und \texttt{exthtmlhome} zugewiesen ist, anstelle des Codes verwendet, der \texttt{htmltitle} bzw. \texttt{htmlhome} zugewiesen ist. @@ -6769,9 +6770,9 @@ \subsection{Zusatzinformationskommentar (\texttt{\$j})} \label{jcomment} Der Zusatzinformationskommentar wird auf die gleiche Weise geparst wie der Schriftsatzkommentar (\texttt{\$t}) (siehe Abschnitt \ref{tcomment}). Das heißt, derZusatzinformationskommentar beginnt mit dem Token \texttt{\$j} innerhalb eines Kommentars und wird bis zum Kommentarschluss \texttt{\$)} fortgesetzt. Innerhalb eines Zusatzinformationskommentars befindet sich eine Folge von einem oder mehreren Befehlen der Form \texttt{command arg arg ... ;}, wobei jeder der null oder mehr \texttt{arg}-Werte entweder eine Zeichenkette in Anführungszeichen oder ein Schlüsselwort sein kann. Beachten Sie, dass jeder Befehl mit einem nicht in Anführungszeichen gesetztes Semikolon endet. Wenn ein Prüfprogramm einen Zusatzinformationskommentar parst, aber einen bestimmten Befehl nicht erkennt, muss er den Befehl überspringen, indem er das Ende des Befehls (ein nicht in Anführungszeichen gesetztes Semikolon) sucht. -Eine Datenbasis kann keine, eine oder mehr Zusatzinformationskommentare haben. Beachten Sie jedoch, dass ein Prüfprogramm diese Kommentare vollständig ignorieren oder nur bestimmte Befehle in einem Zusatzinformationskommentar verarbeiten kann. Der \texttt{mmj2} Verifier unterstützt viele Befehle in Zusatzinformationskommentaren. Wir empfehlen Systemen, die Zusatzinformationskommentare verarbeiten, sich abzustimmen, so dass sie denselben Befehl für denselben Effekt verwenden. +Eine Datenbasis kann keine, eine oder mehr Zusatzinformationskommentare haben. Beachten Sie jedoch, dass ein Prüfprogramm diese Kommentare vollständig ignorieren oder nur bestimmte Befehle in einem Zusatzinformationskommentar verarbeiten kann. Der \texttt{mmj2} Verifier unterstützt viele Befehle in Zusatzinformationskommentaren. Wir empfehlen Systemen, die Zusatzinformationskommentare verarbeiten, sich abzustimmen, so dass sie denselben Befehl für denselben Effekt verwenden. -Beispiele für Zusatzinformationskommentare mit verschiedenen Befehlen (aus der Datenbasis \texttt{set.mm}) sind: +Beispiele für Zusatzinformationskommentare mit verschiedenen Befehlen (aus der Datenbasis \texttt{set.mm}) sind: \begin{itemize} \item Definition der Syntax und der logischen Typcodes und Deklaration, dass unsere Grammatik eindeutig ist (überprüfbar mit dem KLR-Parser, mit Kompositionstiefe 5). @@ -6829,21 +6830,21 @@ \subsection{Einbindung anderer Dateien in eine Metamath-Quelldatei} \label{inclu Der Dateiname {\em file-name} sollte ein einzelnes Token mit der gleichen Syntax wie ein mathematisches Symbol sein (d. h. alle 93 druckbaren Zeichen ohne Leerzeichen außer \texttt{\$} sind zulässig, vorbehaltlich der Dateinamensbeschränkungen Ihres Betriebssystems). Zwischen den Schlüsselwörtern \texttt{\$[} und \texttt{\$]} können Kommentare stehen. Eingebundene Dateien können andere Dateien einbinden, die wiederum andere Dateien einbinden können, und so weiter. -Nehmen wir zum Beispiel an, Sie möchten die Datenbasis der Mengenlehre als Ausgangspunkt für Ihre eigene Theorie verwenden. Die erste Zeile in Ihrer Datei könnte lauten: -\begin{center} - \texttt{\$[ set.mm \$]} -\end{center} +Nehmen wir zum Beispiel an, Sie möchten die Datenbasis der Mengenlehre als Ausgangspunkt für Ihre eigene Theorie verwenden. Die erste Zeile in Ihrer Datei könnte lauten: +\begin{center} + \texttt{\$[ set.mm \$]} +\end{center} Alle Informationen (Axiome, Theoreme usw.) in \texttt{set.mm} und alle Dateien, die {\em sie selbst wiederum} einschließt, stehen dann Ihnen zur Verfügung, damit Sie in Ihrer Datei darauf verweisen können. Dies ermöglicht eine modularen Aufbau Ihrer eigenen Arbeit. Ein Nachteil des Einbebindens von Dateien ist, dass Sie, wenn Sie den Namen eines Symbols oder das Label einer Anweisung ändern, auch daran denken müssen, alle Verweise in jeder Datei, die sie einbindet, zu aktualisieren. -Die Namenskonventionen für eingebundene Dateien entsprechen denen Ihres Betriebssystems.\footnote{Auf dem Macintosh, vor Mac OS X, wird ein Doppelpunkt verwendet, um Laufwerke- und Ordnernamen von Ihrem Dateinamen zu trennen. Zum Beispiel bezieht sich {\em volume}\texttt{:}{\em file-name} auf das Stammverzeichnis, {\em volume}\texttt{:}{\em folder-name}\texttt{:}{\em file-name} auf einen Ordner im Stammverzeichnis, und {\em volume}\texttt{:}{\em folder-name}\texttt{:}\ldots\texttt{:}{\em file-name} auf einen Unterordner. Ein einfacher {\em Dateiname} verweist auf eine Datei in dem Ordner, aus dem Sie die Metamath-Anwendung starten. Unter Mac OS X und später wird das Metamath-Programm unter der Terminal-Anwendung ausgeführt, die den Unix-Namenskonventionen entspricht.}\index{Macintosh-Dateinamen}\index{Dateinamen!Macintosh}\label{includef} Um die Kompatibilität zwischen verschiedenen Betriebssystemen zu gewährleisten, sollten Sie die Dateinamen so einfach wie möglich halten. Eine gute Konvention ist {\em file}\texttt{.mm}, wobei {\em file} aus acht Zeichen oder weniger in Kleinbuchstaben besteht. +Die Namenskonventionen für eingebundene Dateien entsprechen denen Ihres Betriebssystems.\footnote{Auf dem Macintosh, vor Mac OS X, wird ein Doppelpunkt verwendet, um Laufwerke- und Ordnernamen von Ihrem Dateinamen zu trennen. Zum Beispiel bezieht sich {\em volume}\texttt{:}{\em file-name} auf das Stammverzeichnis, {\em volume}\texttt{:}{\em folder-name}\texttt{:}{\em file-name} auf einen Ordner im Stammverzeichnis, und {\em volume}\texttt{:}{\em folder-name}\texttt{:}\ldots\texttt{:}{\em file-name} auf einen Unterordner. Ein einfacher {\em Dateiname} verweist auf eine Datei in dem Ordner, aus dem Sie die Metamath-Anwendung starten. Unter Mac OS X und später wird das Metamath-Programm unter der Terminal-Anwendung ausgeführt, die den Unix-Namenskonventionen entspricht.}\index{Macintosh-Dateinamen}\index{Dateinamen!Macintosh}\label{includef} Um die Kompatibilität zwischen verschiedenen Betriebssystemen zu gewährleisten, sollten Sie die Dateinamen so einfach wie möglich halten. Eine gute Konvention ist {\em file}\texttt{.mm}, wobei {\em file} aus acht Zeichen oder weniger in Kleinbuchstaben besteht. -Es gibt keine Begrenzung für die Verschachtelungstiefe von eingebundenen Dateien. Sie sollten jedoch beachten, dass, wenn zwei eingebundene Dateien selbst eine gemeinsame dritte Datei einbinden, diese nur beim {\em ersten} Verweis auf diese gemeinsame Datei eingelesen wird. Dies ermöglicht es Ihnen, zwei oder mehr Dateien einzubinden, die auf einer gemeinsamen Ausgangsdatei aufbauen, ohne sich um Label- und Symbolkonflikte sorgen zu müssen, die auftreten würden, wenn die gemeinsame Datei mehr als einmal eingelesen würde. (Wenn eine Datei sich selbst einbindet, wobei das natürlich nicht sinnvoll wäre, wird die Selbstreferenz ignoriert). Dieses Vorgehen bedeutet jedoch auch, dass das Ergebnis möglicherweise nicht das ist, was Sie erwarten, wenn Sie versuchen, eine gemeinsame Datei in mehreren inneren Blöcken einzubinden, da nur die erste Referenz durch die eingebundene Datei ersetzt wird (im Gegensatz zur include-Anweisung in den meisten anderen Computersprachen). Daher würden Sie normalerweise gemeinsame Dateien nur im äußersten Block einbinden\index{äußerster Block}. +Es gibt keine Begrenzung für die Verschachtelungstiefe von eingebundenen Dateien. Sie sollten jedoch beachten, dass, wenn zwei eingebundene Dateien selbst eine gemeinsame dritte Datei einbinden, diese nur beim {\em ersten} Verweis auf diese gemeinsame Datei eingelesen wird. Dies ermöglicht es Ihnen, zwei oder mehr Dateien einzubinden, die auf einer gemeinsamen Ausgangsdatei aufbauen, ohne sich um Label- und Symbolkonflikte sorgen zu müssen, die auftreten würden, wenn die gemeinsame Datei mehr als einmal eingelesen würde. (Wenn eine Datei sich selbst einbindet, wobei das natürlich nicht sinnvoll wäre, wird die Selbstreferenz ignoriert). Dieses Vorgehen bedeutet jedoch auch, dass das Ergebnis möglicherweise nicht das ist, was Sie erwarten, wenn Sie versuchen, eine gemeinsame Datei in mehreren inneren Blöcken einzubinden, da nur die erste Referenz durch die eingebundene Datei ersetzt wird (im Gegensatz zur include-Anweisung in den meisten anderen Computersprachen). Daher würden Sie normalerweise gemeinsame Dateien nur im äußersten Block einbinden\index{äußerster Block}. \subsection{Komprimiertes Beweisformat}\label{compressed1}\index{komprimierter Beweis}\index{Beweis!komprimiert} Die in Abschnitt~\ref{proof} vorgestellte Beweisschreibweise wird als {\bf normaler Beweis}\index{normaler Beweis}\index{Beweis!normal} bezeichnet und ist im Prinzip ausreichend, um jeden Beweis vollständig zu beschreiben. Beweise enthalten jedoch oft Schritte und Unterbeweise, die identisch sind. Dies gilt insbesondere für typische Metamath\index{Metamath}-Anwendungen, da Metamath verlangt, dass die mathematische Symbolfolge (die in der Regel eine Formel enthält) bei jedem Schritt separat konstruiert, d. h. Stück für Stück aufgebaut wird. Daraus ergibt sich oft eine große Anzahl von Wiederholungen. Das {\bf komprimierte Beweisformat} ermöglicht es Metamath, diese Redundanz zu nutzen, um Beweise zu verkürzen. -Die Spezifikation für das komprimierte Format der Beweise ist in Anhang~\ref{compressed} enthalten. +Die Spezifikation für das komprimierte Format der Beweise ist in Anhang~\ref{compressed} enthalten. Normalerweise brauchen Sie sich nicht mit den Details des komprimierten Beweisformats zu befassen, da das Programm Metamath eine bequeme Konvertierung vom normalen Format in das komprimierte Format ermöglicht und auch automatisch vom komprimierten Format in das normale Format konvertiert, wenn Beweise angezeigt werden. Die allgemeine Struktur des komprimierten Formats ist wie folgt: \begin{center} @@ -6853,22 +6854,22 @@ \subsection{Komprimiertes Beweisformat}\label{compressed1}\index{komprimierter B Die erste Klammer \texttt{(} dient als Kennzeichen für Metamath, dass ein komprimierter Beweis folgt. Die {\em label-list} enthält alle Anweisungen, auf die sich der Beweis bezieht, mit Ausnahme der obligatorischen Hypothesen\index{obligatorische Hypothese}. Das {\em compressed-proof} ist eine kompakte Kodierung des Beweises unter Verwendung von Großbuchstaben und kann als eine große ganze Zahl zur Basis 26 angesehen werden. Das Whitespace\index{Whitespace} innerhalb eines {\em compressed-proof} ist optional und wird ignoriert. -Es ist wichtig zu beachten, dass die Reihenfolge der obligatorischen Hypothesen der zu beweisenden Anweisung nicht geändert werden darf, wenn das komprimierte Beweisformat verwendet wird, da der Beweis sonst falsch wird. Der Grund dafür ist, dass die obligatorischen Hypothesen im komprimierten Beweis nicht explizit erwähnt werden, um die Komprimierung effizienter zu gestalten. Wenn Sie die Reihenfolge der obligatorischen Hypothesen ändern möchten, müssen Sie den Beweis zunächst wieder in das normale Format konvertieren, indem Sie die Anweisung \texttt{save proof} \texttt{{\em statement} /normal}\index{\texttt{save proof}-Befehl} ausführen. Später können Sie mit dem Befehl \texttt{save proof} \texttt{{\em statement} /compressed} wieder in das komprimierte Format wechseln. +Es ist wichtig zu beachten, dass die Reihenfolge der obligatorischen Hypothesen der zu beweisenden Anweisung nicht geändert werden darf, wenn das komprimierte Beweisformat verwendet wird, da der Beweis sonst falsch wird. Der Grund dafür ist, dass die obligatorischen Hypothesen im komprimierten Beweis nicht explizit erwähnt werden, um die Komprimierung effizienter zu gestalten. Wenn Sie die Reihenfolge der obligatorischen Hypothesen ändern möchten, müssen Sie den Beweis zunächst wieder in das normale Format konvertieren, indem Sie die Anweisung \texttt{save proof} \texttt{{\em statement} /normal}\index{\texttt{save proof}-Befehl} ausführen. Später können Sie mit dem Befehl \texttt{save proof} \texttt{{\em statement} /compressed} wieder in das komprimierte Format wechseln. -Bei der Fehlerprüfung mit dem Befehl \texttt{verify proof} kann ein in einem komprimierten Beweis gefundener Fehler auf ein Zeichen in {\em compressed-proof} verweisen, das für Sie möglicherweise nicht sehr aussagekräftig ist. Versuchen Sie in diesem Fall zuerst \texttt{save proof /normal} und führen Sie dann den Befehl \texttt{verify proof} erneut aus. Im Allgemeinen ist es am besten sich zu vergewissern, dass ein Beweis korrekt ist, bevor man ihn im komprimierten Format speichert, da schwere Fehler mit geringerer Wahrscheinlichkeit wiederhergestellt werden können als im normalen Format. +Bei der Fehlerprüfung mit dem Befehl \texttt{verify proof} kann ein in einem komprimierten Beweis gefundener Fehler auf ein Zeichen in {\em compressed-proof} verweisen, das für Sie möglicherweise nicht sehr aussagekräftig ist. Versuchen Sie in diesem Fall zuerst \texttt{save proof /normal} und führen Sie dann den Befehl \texttt{verify proof} erneut aus. Im Allgemeinen ist es am besten sich zu vergewissern, dass ein Beweis korrekt ist, bevor man ihn im komprimierten Format speichert, da schwere Fehler mit geringerer Wahrscheinlichkeit wiederhergestellt werden können als im normalen Format. \subsection{Unbekannte Beweise oder Teilbeweise}\label{unknown} -In einem in Entwicklung befindlichen Beweis kann jeder Schritt oder Teilbeweis, der noch nicht bekannt ist, mit einem einzelnen \texttt{?} dargestellt werden. Beim Parsen des Beweises wird bei einem \texttt{?}\index{\texttt{]}@\texttt{?}\ innerhalb von Beweisen} ein einzelner Eintrag auf den RPN-Stapel geschoben, als wäre es eine Hypothese. Während der Entwicklung eines Beweises mit dem Beweis-Assistenten\index{Beweis-Assistent} kann ein teilweise entwickelter Beweis mit dem Befehl \texttt{save new{\char`\_}proof}\index{\texttt{save new{\char`\_}proof}-Befehl} gespeichert werden, und die \texttt{?}'s werden an die entsprechenden Stellen gesetzt. +In einem in Entwicklung befindlichen Beweis kann jeder Schritt oder Teilbeweis, der noch nicht bekannt ist, mit einem einzelnen \texttt{?} dargestellt werden. Beim Parsen des Beweises wird bei einem \texttt{?}\index{\texttt{]}@\texttt{?}\ innerhalb von Beweisen} ein einzelner Eintrag auf den RPN-Stapel geschoben, als wäre es eine Hypothese. Während der Entwicklung eines Beweises mit dem Beweis-Assistenten\index{Beweis-Assistent} kann ein teilweise entwickelter Beweis mit dem Befehl \texttt{save new{\char`\_}proof}\index{\texttt{save new{\char`\_}proof}-Befehl} gespeichert werden, und die \texttt{?}'s werden an die entsprechenden Stellen gesetzt. -Für alle \texttt{\$p}\index{\texttt{\$p}-Anweisung}-Anweisungen müssen Beweise vorliegen, auch wenn sie völlig unbekannt sind. Bevor Sie einen Beweis mit dem Beweis-Assistenten erstellen, sollten Sie einen völlig unbekannten Beweis wie folgt angeben: +Für alle \texttt{\$p}\index{\texttt{\$p}-Anweisung}-Anweisungen müssen Beweise vorliegen, auch wenn sie völlig unbekannt sind. Bevor Sie einen Beweis mit dem Beweis-Assistenten erstellen, sollten Sie einen völlig unbekannten Beweis wie folgt angeben: \begin{center} {\em label} \texttt{\$p} {\em statement} \texttt{\$= ?\ \$.} \end{center} \index{\texttt{\$=} Schlüsselwort} \index{\texttt{]}@\texttt{?}\ innerhalb von Beweisen} -Der Befehl \texttt{verify proof}\index{\texttt{verify proof}-Befehl} prüft die bekannten Teile eines Teilbeweises auf Fehler, warnt Sie aber, dass die Anweisung nicht bewiesen ist. +Der Befehl \texttt{verify proof}\index{\texttt{verify proof}-Befehl} prüft die bekannten Teile eines Teilbeweises auf Fehler, warnt Sie aber, dass die Anweisung nicht bewiesen ist. Beachten Sie, dass teilweise entwickelte Beweise auf Wunsch im komprimierten Format gespeichert werden können. In diesem Fall sehen Sie einen oder mehrere \texttt{?}'s im Teil {\em compressed-proof}\index{komprimierter Beweis}\index{Beweis!komprimiert}. @@ -6878,17 +6879,17 @@ \section{Axiome vs. Definitionen}\label{definitions} \subsection{Was ist eine Definition?} -Was ist eine Definition? In ihrer einfachsten Form führt eine Definition ein neues Symbol ein und liefert eine eindeutige Regel zur Umwandlung eines Ausdrucks, der das neue Symbol enthält, in einen Ausdruck ohne dieses Symbol. Das Konzept einer "`zulässigen Definition"'\index{zulässige Definition}\index{Definition!zulässig} (im Gegensatz zu einer kreativen Definition)\index{kreative Definition}\index{Definition!kreativ}, auf das man sich in der Regel einigt, ist, dass (1) die Definition die Sprache nicht mächtiger machen sollte und (2) alle durch die Definition eingeführten Symbole aus der Sprache eliminierbar sein sollten \cite{Nemesszeghy}\index{Nemesszeghy, E. Z.}. Mit anderen Worten, sie sind bloße typografische Bequemlichkeiten, die nicht zum System gehören und theoretisch überflüssig sind. Dies mag offensichtlich erscheinen, aber in der Tat kann die Natur von Definitionen subtil sein und erfordert manchmal komplexe Metatheoreme, um zu beweisen, dass sie nicht kreativ sind. +Was ist eine Definition? In ihrer einfachsten Form führt eine Definition ein neues Symbol ein und liefert eine eindeutige Regel zur Umwandlung eines Ausdrucks, der das neue Symbol enthält, in einen Ausdruck ohne dieses Symbol. Das Konzept einer "`zulässigen Definition"'\index{zulässige Definition}\index{Definition!zulässig} (im Gegensatz zu einer kreativen Definition)\index{kreative Definition}\index{Definition!kreativ}, auf das man sich in der Regel einigt, ist, dass (1) die Definition die Sprache nicht mächtiger machen sollte und (2) alle durch die Definition eingeführten Symbole aus der Sprache eliminierbar sein sollten \cite{Nemesszeghy}\index{Nemesszeghy, E. Z.}. Mit anderen Worten, sie sind bloße typografische Bequemlichkeiten, die nicht zum System gehören und theoretisch überflüssig sind. Dies mag offensichtlich erscheinen, aber in der Tat kann die Natur von Definitionen subtil sein und erfordert manchmal komplexe Metatheoreme, um zu beweisen, dass sie nicht kreativ sind. -Eine konservativere Haltung vertrat der Logiker S. Le\'{s}niewski.\index{Le\'{s}niewski, S.} +Eine konservativere Haltung vertrat der Logiker S. Le\'{s}niewski.\index{Le\'{s}niewski, S.} \begin{quote} Le\'{s}niewski betrachtet Definitionen als Thesen des Systems. In dieser Hinsicht unterscheiden sie sich weder von den Axiomen noch von den Theoremen, d.h. von den Thesen, die dem System auf der Grundlage der Substitutionsregel oder der Abtrennregel [Modus ponens] hinzugefügt werden. Sobald Definitionen als Thesen des Systems akzeptiert wurden, müssen sie als wahre Sätze in demselben Sinne betrachtet werden, in dem auch Axiome wahr sind \cite{Lejewski}. -\end{quote}\index{Lejewski, Czeslaw} +\end{quote}\index{Lejewski, Czeslaw} -Sehen wir uns einige einfache Beispiele für Definitionen in der Aussagenlogik an. Betrachten wir die Definition des logischen {\sc or} (Disjunktion):\index{Disjunktion ($\vee$)} "`$P\vee Q$ steht für $\neg P \rightarrow Q$ (nicht $P$ impliziert $Q$)"'. Eine Anweisung, die von dieser Definition Gebrauch macht, ist sehr leicht zu erkennen, weil sie das neue Symbol $\vee$ verwendet, das es vorher in der Sprache nicht gab. Es ist leicht zu erkennen, dass sich aus dieser Definition keine neuen Theoreme der ursprünglichen Sprache ergeben. +Sehen wir uns einige einfache Beispiele für Definitionen in der Aussagenlogik an. Betrachten wir die Definition des logischen {\sc or} (Disjunktion):\index{Disjunktion ($\vee$)} "`$P\vee Q$ steht für $\neg P \rightarrow Q$ (nicht $P$ impliziert $Q$)"'. Eine Anweisung, die von dieser Definition Gebrauch macht, ist sehr leicht zu erkennen, weil sie das neue Symbol $\vee$ verwendet, das es vorher in der Sprache nicht gab. Es ist leicht zu erkennen, dass sich aus dieser Definition keine neuen Theoreme der ursprünglichen Sprache ergeben. -Betrachten wir nun eine Definition, bei der die Klammern entfallen: "`$P \rightarrow Q \rightarrow R$ bedeutet $P\rightarrow (Q \rightarrow R)$."' Dies ist subtiler, da keine neuen Symbole eingeführt werden. Der Grund, warum diese Definition als richtig angesehen wird, ist, dass sich aus der Definition keine neuen Symbolfolgen ergeben, die in der ursprünglichen Sprache gültige wffs (wohlgeformte Formeln)\index{wohlgeformte Formel (wff)} sind, da "`$P \rightarrow Q\rightarrow R$"' keine wff in der ursprünglichen Sprache ist. Wir machen hier implizit Gebrauch von der Tatsache, dass es ein Entscheidungsverfahren gibt, mit dem wir feststellen können, ob eine Symbolfolge eine wff ist oder nicht, und diese Tatsache erlaubt es uns, Symbolfolgen, die keine wffs sind, zu verwenden, um andere Dinge (wie wffs) mit Hilfe der Definition darzustellen. Um jedoch zu rechtfertigen, dass die Definition nicht kreativ ist, müssen wir beweisen, dass "`$P \rightarrow Q\rightarrow R$"' in der ursprünglichen Sprache tatsächlich keine wff ist, und das ist schwieriger als in dem Fall, in dem wir einfach ein neues Symbol einführen. +Betrachten wir nun eine Definition, bei der die Klammern entfallen: "`$P \rightarrow Q \rightarrow R$ bedeutet $P\rightarrow (Q \rightarrow R)$."' Dies ist subtiler, da keine neuen Symbole eingeführt werden. Der Grund, warum diese Definition als richtig angesehen wird, ist, dass sich aus der Definition keine neuen Symbolfolgen ergeben, die in der ursprünglichen Sprache gültige wffs (wohlgeformte Formeln)\index{wohlgeformte Formel (wff)} sind, da "`$P \rightarrow Q\rightarrow R$"' keine wff in der ursprünglichen Sprache ist. Wir machen hier implizit Gebrauch von der Tatsache, dass es ein Entscheidungsverfahren gibt, mit dem wir feststellen können, ob eine Symbolfolge eine wff ist oder nicht, und diese Tatsache erlaubt es uns, Symbolfolgen, die keine wffs sind, zu verwenden, um andere Dinge (wie wffs) mit Hilfe der Definition darzustellen. Um jedoch zu rechtfertigen, dass die Definition nicht kreativ ist, müssen wir beweisen, dass "`$P \rightarrow Q\rightarrow R$"' in der ursprünglichen Sprache tatsächlich keine wff ist, und das ist schwieriger als in dem Fall, in dem wir einfach ein neues Symbol einführen. %Now let's take this reasoning to an extreme. Propositional calculus is a %decidable theory,\footnote{This means that a mechanical algorithm exists to @@ -6934,19 +6935,19 @@ \subsection{Der Ansatz für Definitionen in \texttt{set.mm}} In der Mengenlehre definieren rekursive Definitionen ein neu eingeführtes Symbol in Bezug auf sich selbst. Die Begründung rekursiver Definitionen mit Hilfe mehrerer "`Rekursionstheoreme"' ist normalerweise einer der ersten anspruchsvollen Beweise, mit denen ein Student beim Erlernen der Mengenlehre konfrontiert wird, und hinter einer rekursiven Definition steckt eine beträchtliche Menge impliziter Metalogik, obwohl die Definition selbst normalerweise einfach zu formulieren ist. -Metamath selbst hat keine eingebauten technischen Einschränkungen, die mehrteilige rekursive Definitionen im traditionellen Lehrbuchstil verhindern. Da die rekursive Definition jedoch eine fortgeschrittene Metalogik erfordert, um sie zu begründen, ist die Eliminierung einer rekursiven Definition sehr schwierig und wird in Lehrbüchern oft nicht einmal gezeigt. +Metamath selbst hat keine eingebauten technischen Einschränkungen, die mehrteilige rekursive Definitionen im traditionellen Lehrbuchstil verhindern. Da die rekursive Definition jedoch eine fortgeschrittene Metalogik erfordert, um sie zu begründen, ist die Eliminierung einer rekursiven Definition sehr schwierig und wird in Lehrbüchern oft nicht einmal gezeigt. \subsubsection{Direkte Definitionen anstelle von rekursiven Definitionen} Es ist jedoch möglich, eine Art von Komplexität durch eine andere zu ersetzen. Wir können die Notwendigkeit einer metalogischen Begründung vermeiden, indem wir die Operation direkt mit einem expliziten (aber komplizierten) Ausdruck definieren und dann die rekursive Definition direkt als Theorem ableiten, indem wir ein Rekursionstheorem "`in die andere Richtung"' verwenden. Die Eliminierung einer direkten Definition erfolgt diurch eine einfache mechanische Substitution. Wir tun dies in \texttt{set.mm} wie folgt. -In \texttt{set.mm} war es unser Ziel, fast alle Definitionen in Form von zwei Ausdrücken einzuführen, die entweder durch $\leftrightarrow$ oder $=$ verbunden sind, wobei das Definierte nicht auf der rechten Seite erscheint. Quine nennt diese Form "`eine echte oder direkte Definition"' \cite[S. 174]{Quine}\index{Quine, Willard Van Orman}, wodurch die Definitionen sehr leicht zu eliminieren sind und die Metalogik\index{Metalogik}, die zu ihrer Rechtfertigung erforderlich ist, so einfach wie möglich ist. Anders ausgedrückt: Unser Ziel war es, alle Definitionen durch direkte mechanische Substitutionen zu eliminieren und die Fundiertheit der Definitionen leicht zu überprüfen. +In \texttt{set.mm} war es unser Ziel, fast alle Definitionen in Form von zwei Ausdrücken einzuführen, die entweder durch $\leftrightarrow$ oder $=$ verbunden sind, wobei das Definierte nicht auf der rechten Seite erscheint. Quine nennt diese Form "`eine echte oder direkte Definition"' \cite[S. 174]{Quine}\index{Quine, Willard Van Orman}, wodurch die Definitionen sehr leicht zu eliminieren sind und die Metalogik\index{Metalogik}, die zu ihrer Rechtfertigung erforderlich ist, so einfach wie möglich ist. Anders ausgedrückt: Unser Ziel war es, alle Definitionen durch direkte mechanische Substitutionen zu eliminieren und die Fundiertheit der Definitionen leicht zu überprüfen. \subsubsection{Beispiel für direkte Definitionen} -Wir haben dieses Ziel in fast allen Fällen in \texttt{set.mm} erreicht. Manchmal macht dies die Definitionen komplexer und weniger intuitiv. Die traditionelle Art, die Addition natürlicher Zahlen zu definieren, besteht zum Beispiel darin, eine Operation namens {\em Nachfolger}\index{Nachfolger} zu definieren (was "`plus eins"' bedeutet und mit "`${\rm suc}$"' bezeichnet wird), dann die Addition rekursiv zu definieren\index{rekursive Definition} mit den beiden Definitionen $n + 0 = n$ und $m + {\rm suc}\,n = {\rm suc} (m + n)$. Obwohl diese Definition einfach und offensichtlich erscheint, ist die Methode zur Eliminierung der Definition nicht offensichtlich: Im zweiten Teil der Definition wird die Addition in Bezug auf sich selbst definiert. Mit der Eliminierung der Definition ist nicht gemeint, dass man sie wiederholt auf bestimmte $m$ und $n$ anwendet, sondern dass man den expliziten, in sich geschlossenen mengentheoretischen Ausdruck angibt, den $m + n$ darstellt, der für beliebige $m$ und $n$ gilt und der kein $+$-Zeichen auf der rechten Seite hat. Damit eine rekursive Definition wie diese nicht zirkulär (kreativ) ist, müssen wir einige versteckte, zugrundeliegende Annahmen machen, zum Beispiel, dass die natürlichen Zahlen eine bestimmte Ordnung haben. +Wir haben dieses Ziel in fast allen Fällen in \texttt{set.mm} erreicht. Manchmal macht dies die Definitionen komplexer und weniger intuitiv. Die traditionelle Art, die Addition natürlicher Zahlen zu definieren, besteht zum Beispiel darin, eine Operation namens {\em Nachfolger}\index{Nachfolger} zu definieren (was "`plus eins"' bedeutet und mit "`${\rm suc}$"' bezeichnet wird), dann die Addition rekursiv zu definieren\index{rekursive Definition} mit den beiden Definitionen $n + 0 = n$ und $m + {\rm suc}\,n = {\rm suc} (m + n)$. Obwohl diese Definition einfach und offensichtlich erscheint, ist die Methode zur Eliminierung der Definition nicht offensichtlich: Im zweiten Teil der Definition wird die Addition in Bezug auf sich selbst definiert. Mit der Eliminierung der Definition ist nicht gemeint, dass man sie wiederholt auf bestimmte $m$ und $n$ anwendet, sondern dass man den expliziten, in sich geschlossenen mengentheoretischen Ausdruck angibt, den $m + n$ darstellt, der für beliebige $m$ und $n$ gilt und der kein $+$-Zeichen auf der rechten Seite hat. Damit eine rekursive Definition wie diese nicht zirkulär (kreativ) ist, müssen wir einige versteckte, zugrundeliegende Annahmen machen, zum Beispiel, dass die natürlichen Zahlen eine bestimmte Ordnung haben. -In \texttt{set.mm} haben wir uns entschieden, mit der direkten (wenn auch komplexen und nicht intuitiven) Definition zu beginnen und daraus die rekursive Standarddefinition abzuleiten. Die geschlossene Definition, die in \texttt{set.mm} für die Additionsoperation von Ordinalzahlen\index{ordinale Addition}\index{Addition!von Ordinalen} (von denen die natürlichen Zahlen eine Teilmenge sind) verwendet wird, lautet beispielsweise +In \texttt{set.mm} haben wir uns entschieden, mit der direkten (wenn auch komplexen und nicht intuitiven) Definition zu beginnen und daraus die rekursive Standarddefinition abzuleiten. Die geschlossene Definition, die in \texttt{set.mm} für die Additionsoperation von Ordinalzahlen\index{ordinale Addition}\index{Addition!von Ordinalen} (von denen die natürlichen Zahlen eine Teilmenge sind) verwendet wird, lautet beispielsweise \setbox\startprefix=\hbox{\tt \ \ df-oadd\ \$a\ } \setbox\contprefix=\hbox{\tt \ \ \ \ \ \ \ \ \ \ \ \ \ } @@ -6959,7 +6960,7 @@ \subsubsection{Beispiel für direkte Definitionen} \subsubsection{Rekursionsoperatoren} -Die obige Definition von \texttt{df-oadd} hängt von der Definition von ${\rm rec}$ ab, einem "`Rekursionsoperator"'\index{Rekursionsoperator} mit der Definition \texttt{df-rdg}: +Die obige Definition von \texttt{df-oadd} hängt von der Definition von ${\rm rec}$ ab, einem "`Rekursionsoperator"'\index{Rekursionsoperator} mit der Definition \texttt{df-rdg}: \setbox\startprefix=\hbox{\tt \ \ df-rdg\ \$a\ } \setbox\contprefix=\hbox{\tt \ \ \ \ \ \ \ \ \ \ \ \ } @@ -6974,11 +6975,11 @@ \subsubsection{Rekursionsoperatoren} \noindent die anhand der Definitionen in Abschnitt~\ref{setdefinitions} weiter heruntergebrochen werden könnte. -Diese Definition von ${\rm rec}$ definiert einen rekursiven Definitionsgenerator auf ${\rm On}$ (der Klasse der Ordinalzahlen) mit charakteristischer Funktion $F$ und Anfangswert $I$. Diese Operation erlaubt es uns, mit kompakten direkten Definitionen Funktionen zu definieren, die normalerweise in Lehrbüchern mit rekursiven Definitionen definiert werden. Der Preis, den wir mit unserem Ansatz zahlen, ist die Komplexität unserer ${\rm rec}$-Operation (insbesondere, wenn {\tt df-recs}, auf dem sie aufbaut, ebenfalls eliminiert werden soll). Aber sobald wir diese Hürde überwunden haben, werden Definitionen, die sonst rekursiv wären, relativ einfach, wie zum Beispiel {\tt oav}, aus dem wir die rekursive Lehrbuchdefinition als Theoreme {\tt oa0}, {\tt oasuc} und {\tt oalim} beweisen (mit Hilfe der Theoreme {\tt rdg0}, {\tt rdgsuc} und {\tt rdglim2a}). Wir können die ${\rm rec}$-Operation auch einschränken, um rekursive Funktionen auf den natürlichen Zahlen $\omega$ zu definieren; siehe {\tt fr0g} und {\tt frsuc}. Unsere ${\rm rec}$-Operation taucht in der veröffentlichten Literatur offenbar nicht auf, obwohl sie eng mit der Definition 25.2 von [Quine] S. 177 verwandt ist, die er verwendet, "`um eine Rekursion in eine echte oder direkte Definition zu verwandeln"' (S. 174). Man beachte, dass die ${\rm if}$-Operationen (siehe {\tt df-if}) Fälle danach auswählen, ob der Definitionsbereich von $g$ die leere Menge, ein Nachfolger oder eine Grenzordinale ist. +Diese Definition von ${\rm rec}$ definiert einen rekursiven Definitionsgenerator auf ${\rm On}$ (der Klasse der Ordinalzahlen) mit charakteristischer Funktion $F$ und Anfangswert $I$. Diese Operation erlaubt es uns, mit kompakten direkten Definitionen Funktionen zu definieren, die normalerweise in Lehrbüchern mit rekursiven Definitionen definiert werden. Der Preis, den wir mit unserem Ansatz zahlen, ist die Komplexität unserer ${\rm rec}$-Operation (insbesondere, wenn {\tt df-recs}, auf dem sie aufbaut, ebenfalls eliminiert werden soll). Aber sobald wir diese Hürde überwunden haben, werden Definitionen, die sonst rekursiv wären, relativ einfach, wie zum Beispiel {\tt oav}, aus dem wir die rekursive Lehrbuchdefinition als Theoreme {\tt oa0}, {\tt oasuc} und {\tt oalim} beweisen (mit Hilfe der Theoreme {\tt rdg0}, {\tt rdgsuc} und {\tt rdglim2a}). Wir können die ${\rm rec}$-Operation auch einschränken, um rekursive Funktionen auf den natürlichen Zahlen $\omega$ zu definieren; siehe {\tt fr0g} und {\tt frsuc}. Unsere ${\rm rec}$-Operation taucht in der veröffentlichten Literatur offenbar nicht auf, obwohl sie eng mit der Definition 25.2 von [Quine] S. 177 verwandt ist, die er verwendet, "`um eine Rekursion in eine echte oder direkte Definition zu verwandeln"' (S. 174). Man beachte, dass die ${\rm if}$-Operationen (siehe {\tt df-if}) Fälle danach auswählen, ob der Definitionsbereich von $g$ die leere Menge, ein Nachfolger oder eine Grenzordinale ist. -Eine wichtige Anwendung dieser Definition ${\rm rec}$ ist der rekursive Sequenzgenerator {\tt df-seq} auf den natürlichen Zahlen (als Teilmenge der komplexen unendlichen Sequenzen, wie der Fakultätsfunktion {\tt df-fac} und den ganzzahligen Potenzen {\tt df-exp}). +Eine wichtige Anwendung dieser Definition ${\rm rec}$ ist der rekursive Sequenzgenerator {\tt df-seq} auf den natürlichen Zahlen (als Teilmenge der komplexen unendlichen Sequenzen, wie der Fakultätsfunktion {\tt df-fac} und den ganzzahligen Potenzen {\tt df-exp}). -Die Definition von ${\rm rec}$ hängt von ${\rm recs}$ ab. Von der direkten Verwendung des mächtigeren (und primitiveren) ${\rm recs}$-Konstrukts wird abgeraten, es ist aber bei Bedarf verfügbar. Dies definiert eine Funktion $\mathrm{recs} ( F )$ auf ${\rm On}$, der Klasse der Ordinalzahlen, durch transfinite Rekursion unter der Voraussetzung einer Regel $F$, die den nächsten Wert unter Berücksichtigung aller bisherigen Werte bestimmt. Im Gegensatz zu {\tt df-rdg}, das die Aktualisierungsregel darauf beschränkt, nur den vorherigen Wert zu verwenden, erlaubt diese Version der Aktualisierungsregel, alle vorherigen Werte zu verwenden, weshalb sie als "`stark"' bezeichnet wird, obwohl sie eigentlich primitiver ist. Siehe {\tt recsfnon} und {\tt recsval} für die primären Eigenschaften dieser Definition. Sie ist definiert als: +Die Definition von ${\rm rec}$ hängt von ${\rm recs}$ ab. Von der direkten Verwendung des mächtigeren (und primitiveren) ${\rm recs}$-Konstrukts wird abgeraten, es ist aber bei Bedarf verfügbar. Dies definiert eine Funktion $\mathrm{recs} ( F )$ auf ${\rm On}$, der Klasse der Ordinalzahlen, durch transfinite Rekursion unter der Voraussetzung einer Regel $F$, die den nächsten Wert unter Berücksichtigung aller bisherigen Werte bestimmt. Im Gegensatz zu {\tt df-rdg}, das die Aktualisierungsregel darauf beschränkt, nur den vorherigen Wert zu verwenden, erlaubt diese Version der Aktualisierungsregel, alle vorherigen Werte zu verwenden, weshalb sie als "`stark"' bezeichnet wird, obwohl sie eigentlich primitiver ist. Siehe {\tt recsfnon} und {\tt recsval} für die primären Eigenschaften dieser Definition. Sie ist definiert als: \setbox\startprefix=\hbox{\tt \ \ df-recs\ \$a\ } \setbox\contprefix=\hbox{\tt \ \ \ \ \ \ \ \ \ \ \ \ \ } @@ -6990,17 +6991,17 @@ \subsubsection{Rekursionsoperatoren} \subsubsection{Abschließende Bemerkungen zu direkten Definitionen} -Aus diesen direkten Definitionen wird die einfachere, intuitivere rekursive Definition als eine Reihe von Theoremen abgeleitet.\index{natürliche Zahlen}\index{Addition}\index{rekursive Definition}\index{ordinale Addition} Das Endergebnis ist dasselbe, aber wir können dadurch vollständig auf die recht komplexe Metalogik verzichten, die die rekursive Definition rechtfertigt. +Aus diesen direkten Definitionen wird die einfachere, intuitivere rekursive Definition als eine Reihe von Theoremen abgeleitet.\index{natürliche Zahlen}\index{Addition}\index{rekursive Definition}\index{ordinale Addition} Das Endergebnis ist dasselbe, aber wir können dadurch vollständig auf die recht komplexe Metalogik verzichten, die die rekursive Definition rechtfertigt. -Rekursive Definitionen werden oft als effizienter und intuitiver angesehen als direkte Definitionen, sobald die Metalogik erlernt oder möglicherweise einfach als korrekt akzeptiert wurde. Man war jedoch der Ansicht, dass die direkte Definition in \texttt{set.mm} die Strenge maximiert, indem sie die Metalogik minimiert. Eine solche Definition kann mühelos eliminiert werden, was bei einer rekursiven Definition nur schwer möglich ist. +Rekursive Definitionen werden oft als effizienter und intuitiver angesehen als direkte Definitionen, sobald die Metalogik erlernt oder möglicherweise einfach als korrekt akzeptiert wurde. Man war jedoch der Ansicht, dass die direkte Definition in \texttt{set.mm} die Strenge maximiert, indem sie die Metalogik minimiert. Eine solche Definition kann mühelos eliminiert werden, was bei einer rekursiven Definition nur schwer möglich ist. -Auch hier gilt, dass Metamath selbst keine eingebauten technischen Einschränkungen hat, die mehrteilige rekursive Definitionen im traditionellen Lehrbuchstil verhindern. Stattdessen ist es unser Ziel, alle Definitionen mit direkter mechanischer Substitution zu eliminieren und die Fundiertheit der Definitionen leicht zu überprüfen. +Auch hier gilt, dass Metamath selbst keine eingebauten technischen Einschränkungen hat, die mehrteilige rekursive Definitionen im traditionellen Lehrbuchstil verhindern. Stattdessen ist es unser Ziel, alle Definitionen mit direkter mechanischer Substitution zu eliminieren und die Fundiertheit der Definitionen leicht zu überprüfen. \subsection{Hinzufügen von Einschränkungen für Definitionen} -Die Metamath-Basissprache und das Metamath-Programm haben keine eingebauten einschrämkungen für Definitionen, da sie nur \texttt{\$a}-Anweisungen sind. +Die Metamath-Basissprache und das Metamath-Programm haben keine eingebauten einschrämkungen für Definitionen, da sie nur \texttt{\$a}-Anweisungen sind. -Nichts hindert jedoch ein Verifikationssystem daran, zusätzliche Regeln zu verifizieren, um weitere Einschränkungen für Definitionen vorzunehmen. Das \texttt{mmj2}\index{mmj2}-Programm unterstützt zum Beispiel verschiedene Arten von zusätzlichen Informationskommentaren (siehe Abschnitt \ref{jcomment}). Eine ihrer Verwendungen ist die optionale Überprüfung zusätzlicher Einschränkungen, einschließlich der Überprüfung, ob Definitionen bestimmte Anforderungen erfüllen. Diese zusätzlichen Prüfungen werden von der kontinuierlichen Integration (CI)\index{kontinuierliche Integration (CI)} der \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})}\index{Metamath Proof Explorer} Datenbasis benötigt. Dieser Ansatz ermöglicht es uns, optional zusätzliche Anforderungen an Definitionen zu stellen, wenn wir dies wünschen, ohne dass diese Regeln notwendigerweise für alle Datenbasen gelten oder von allen Verifikationssystemen verlangen zu müssen diese zu prüfen. Außerdem können wir auf diese Weise spezielle, auf eine Datenbasis zugeschnittene Einschränkungen vornehmen, ohne dass andere Systeme diese speziellen Einschränkungen berücksichtigen müssen. +Nichts hindert jedoch ein Verifikationssystem daran, zusätzliche Regeln zu verifizieren, um weitere Einschränkungen für Definitionen vorzunehmen. Das \texttt{mmj2}\index{mmj2}-Programm unterstützt zum Beispiel verschiedene Arten von zusätzlichen Informationskommentaren (siehe Abschnitt \ref{jcomment}). Eine ihrer Verwendungen ist die optionale Überprüfung zusätzlicher Einschränkungen, einschließlich der Überprüfung, ob Definitionen bestimmte Anforderungen erfüllen. Diese zusätzlichen Prüfungen werden von der kontinuierlichen Integration (CI)\index{kontinuierliche Integration (CI)} der \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})}\index{Metamath Proof Explorer} Datenbasis benötigt. Dieser Ansatz ermöglicht es uns, optional zusätzliche Anforderungen an Definitionen zu stellen, wenn wir dies wünschen, ohne dass diese Regeln notwendigerweise für alle Datenbasen gelten oder von allen Verifikationssystemen verlangen zu müssen diese zu prüfen. Außerdem können wir auf diese Weise spezielle, auf eine Datenbasis zugeschnittene Einschränkungen vornehmen, ohne dass andere Systeme diese speziellen Einschränkungen berücksichtigen müssen. Es gibt zwei solcher Einschränkungen in der Datenbasis \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})}\index{Metamath Proof Explorer}, die meit dem Programm \texttt{mmj2}\index{mmj2} geprüft werden, die es wert sind, hier besprochen zu werden: eine Syntax-Prüfung und eine Prüfung der Fundiertheit von Definitionen. @@ -7022,9 +7023,9 @@ \subsection{Hinzufügen von Einschränkungen für Definitionen} % This particular problem is countered by enabling, within mmj2, % SetParser,mmj.verify.LRParser -Erstens aktivieren wir in \texttt{mmj2} (über den Befehl \texttt{SetParser}) eine Syntax-Prüfung, die vorschreibt, dass alle neuen Definitionen für einen KLR(5)-Parser kein mehrdeutiges Ergebnis erzeugen dürfen. Dies verhindert einige Fehler wie z. B. Definitionen mit unausgeglichenen Klammern. +Erstens aktivieren wir in \texttt{mmj2} (über den Befehl \texttt{SetParser}) eine Syntax-Prüfung, die vorschreibt, dass alle neuen Definitionen für einen KLR(5)-Parser kein mehrdeutiges Ergebnis erzeugen dürfen. Dies verhindert einige Fehler wie z. B. Definitionen mit unausgeglichenen Klammern. -Zweitens führen wir eine Definitionsprüfung durch, die spezifisch für \texttt{set.mm} oder ähnliche Datenbasen ist (über das Makro \texttt{definitionCheck}). Einige \texttt{\$a}-Anweisungen (einschließlich aller ax-*-Statements) sind von diesen Prüfungen ausgenommen, da sie diese einfache Prüfung immer nicht bestehen werden, aber sie sind für die meisten Definitionen geeignet. Diese Prüfung erzwingt eine Reihe von zusätzlichen Regeln: +Zweitens führen wir eine Definitionsprüfung durch, die spezifisch für \texttt{set.mm} oder ähnliche Datenbasen ist (über das Makro \texttt{definitionCheck}). Einige \texttt{\$a}-Anweisungen (einschließlich aller ax-*-Statements) sind von diesen Prüfungen ausgenommen, da sie diese einfache Prüfung immer nicht bestehen werden, aber sie sind für die meisten Definitionen geeignet. Diese Prüfung erzwingt eine Reihe von zusätzlichen Regeln: \begin{enumerate} @@ -7042,135 +7043,135 @@ \subsection{Hinzufügen von Einschränkungen für Definitionen} \end{enumerate} -\subsection{Zusammenfassung des Metamath-Ansatzes für\\ Definitionen} +\subsection{Zusammenfassung des Metamath-Ansatzes für\texorpdfstring{\\}{} Definitionen} -Kurz gesagt, bei einem rigorosen Vorgehen stellt sich heraus, dass Definitionen subtil sein können und manchmal schwierige Metatheoreme erfordern, um zu beweisen, dass sie nicht kreativ sind. +Kurz gesagt, bei einem rigorosen Vorgehen stellt sich heraus, dass Definitionen subtil sein können und manchmal schwierige Metatheoreme erfordern, um zu beweisen, dass sie nicht kreativ sind. -Anstatt solche Komplikationen in die Metamath-Sprache selbst einzubauen, behandeln die grundlegende Metamath-Sprache und das Programm die traditionellen Axiome und Definitionen einheitlich als \texttt{\$a}-Anweisungen. Wir haben dann verschiedene Werkzeuge entwickelt, die es jedem ermöglichen, für seine spezifischen, selbst angelegten Datenbasen zusätzliche, selbst festgelegte Bedingungen zu überprüfen, ohne die grundlegenden Eigenschaften und Funktionalitäten von Metamath zu verkomplizieren. +Anstatt solche Komplikationen in die Metamath-Sprache selbst einzubauen, behandeln die grundlegende Metamath-Sprache und das Programm die traditionellen Axiome und Definitionen einheitlich als \texttt{\$a}-Anweisungen. Wir haben dann verschiedene Werkzeuge entwickelt, die es jedem ermöglichen, für seine spezifischen, selbst angelegten Datenbasen zusätzliche, selbst festgelegte Bedingungen zu überprüfen, ohne die grundlegenden Eigenschaften und Funktionalitäten von Metamath zu verkomplizieren. \chapter{Das Metamath-Programm}\label{commands} Dieses Kapitel ist als ein Referenzhandbuch für das Metamath-Programm zu verstehen.\index{Metamath!Befehle} -Aktuelle Anweisungen für den Bezug und die Installation des Metamath-Programms finden Sie auf der Website \url{http://metamath.org}. Für Windows gibt es eine vorkompilierte Version namens \texttt{metamath.exe}. Für Unix, Linux und Mac OS X (die wir zusammenfassend als "`Unix"' bezeichnen) kann das Metamath-Programm aus seinem Quellcode mit dem Befehl -\begin{verbatim} -gcc *.c -o metamath -\end{verbatim} -unter Verwendung des auf diesen Systemen verfügbaren \texttt{gcc} {\sc c}-Compilers kompiliert werden. +Aktuelle Anweisungen für den Bezug und die Installation des Metamath-Programms finden Sie auf der Website \url{http://metamath.org}. Für Windows gibt es eine vorkompilierte Version namens \texttt{metamath.exe}. Für Unix, Linux und Mac OS X (die wir zusammenfassend als "`Unix"' bezeichnen) kann das Metamath-Programm aus seinem Quellcode mit dem Befehl +\begin{verbatim} +gcc *.c -o metamath +\end{verbatim} +unter Verwendung des auf diesen Systemen verfügbaren \texttt{gcc} {\sc c}-Compilers kompiliert werden. In den nachfolgenden Beschreibungen der Befehlssyntax sind die in eckige Klammern [\ ] eingeschlossenen Angaben optional. Dateinamen können optional in einfache oder doppelte Anführungszeichen gesetzt werden. Dies ist nützlich, wenn der Dateiname Leerzeichen oder Schrägstriche (\texttt{/}) enthält, wie z.B. in Unix-Pfadnamen, \index{Unix-Dateinamen}\index{Dateinamen!Unix}, die mit Metamath-Befehlszeilenparameter verwechselt werden könnten.\index{Unix-Dateinamen}\index{Dateinamen!Unix} \section{Aufruf von Metamath} -Unix, Linux und Mac OS X verfügen über eine Befehlszeilenschnittstelle, die {\em Bash Shell}. (Unter Mac OS X wählen Sie das Programm Terminal aus Anwendungen/Dienstprogramme.) Um Metamath von der Bash-Shell-Eingabeaufforderung aus aufzurufen, geben Sie Folgendes ein, vorausgesetzt das Metamath-Programm befindet sich im aktuellen Verzeichnis: -\begin{verbatim} -bash$ ./metamath -\end{verbatim} +Unix, Linux und Mac OS X verfügen über eine Befehlszeilenschnittstelle, die {\em Bash Shell}. (Unter Mac OS X wählen Sie das Programm Terminal aus Anwendungen/Dienstprogramme.) Um Metamath von der Bash-Shell-Eingabeaufforderung aus aufzurufen, geben Sie Folgendes ein, vorausgesetzt das Metamath-Programm befindet sich im aktuellen Verzeichnis: +\begin{verbatim} +bash$ ./metamath +\end{verbatim} -Um Metamath von einem Windows-Konsolenfenster aus aufzurufen, geben Sie Folgendes ein, vorausgesetzt das Metamath-Programm befindet sich im aktuellen Verzeichnis (oder in einem Verzeichnis, das in der Systemumgebungsvariablen Path enthalten ist): -\begin{verbatim} -C:\metamath>metamath -\end{verbatim} +Um Metamath von einem Windows-Konsolenfenster aus aufzurufen, geben Sie Folgendes ein, vorausgesetzt das Metamath-Programm befindet sich im aktuellen Verzeichnis (oder in einem Verzeichnis, das in der Systemumgebungsvariablen Path enthalten ist): +\begin{verbatim} +C:\metamath>metamath +\end{verbatim} Um Befehlszeilenargumente beim Aufruf zu verwenden, sollten die Befehlszeilenargumente eine Liste von Metamath-Befehlen sein, die von Anfüh\-rungszeichen umgeben sind, wenn sie Leerzeichen enthalten. Unter Windows müssen die umgebenden Anführungszeichen doppelte (nicht einfache) Anführungszeichen sein. Um zum Beispiel die Datenbasisdatei \texttt{set.mm} zu lesen, alle Beweise zu überprüfen und das Programm zu beenden, geben Sie (unter Unix) Folgendes ein: -\begin{verbatim} -bash$ ./metamath 'read set.mm' 'verify proof *' exit -\end{verbatim} Beachten Sie, dass unter Unix jeder Verzeichnispfad mit \texttt{/}'s von Anführungszeichen umgeben sein muss, damit Metamath das \texttt{/} nicht als Befehlszeilenparameter interpretiert. Wenn also \texttt{set.mm} im Verzeichnis \texttt{/tmp} liegt, verwenden Sie für das obige Beispiel -\begin{verbatim} -bash$ ./metamath 'read "/tmp/set.mm"' 'verify proof *' exit -\end{verbatim} - -Wenn die Befehlszeile nur ein Argument und keine Leerzeichen enthält, wird implizit angenommen, dass der Befehl \texttt{read} lautet. In diesem einen Sonderfall werden \texttt{/} nicht als Befehlszeilenparameter interpretiert, so dass Sie keine Anführungszeichen um einen Unix-Dateinamen herum benötigen. Also -\begin{verbatim} -bash$ ./metamath /tmp/set.mm -\end{verbatim} und -\begin{verbatim} -bash$ ./metamath "read '/tmp/set.mm'" -\end{verbatim} sind gleichwertig. +\begin{verbatim} +bash$ ./metamath 'read set.mm' 'verify proof *' exit +\end{verbatim} Beachten Sie, dass unter Unix jeder Verzeichnispfad mit \texttt{/}'s von Anführungszeichen umgeben sein muss, damit Metamath das \texttt{/} nicht als Befehlszeilenparameter interpretiert. Wenn also \texttt{set.mm} im Verzeichnis \texttt{/tmp} liegt, verwenden Sie für das obige Beispiel +\begin{verbatim} +bash$ ./metamath 'read "/tmp/set.mm"' 'verify proof *' exit +\end{verbatim} + +Wenn die Befehlszeile nur ein Argument und keine Leerzeichen enthält, wird implizit angenommen, dass der Befehl \texttt{read} lautet. In diesem einen Sonderfall werden \texttt{/} nicht als Befehlszeilenparameter interpretiert, so dass Sie keine Anführungszeichen um einen Unix-Dateinamen herum benötigen. Also +\begin{verbatim} +bash$ ./metamath /tmp/set.mm +\end{verbatim} und +\begin{verbatim} +bash$ ./metamath "read '/tmp/set.mm'" +\end{verbatim} sind gleichwertig. \section{Steuerung von Metamath} -Das Metamath-Programm wurde zuerst auf einem {\sc vax/vms}-System entwickelt, und einige Aspekte seines Befehlszeilenverhaltens spiegeln dieses Erbe wider. Wir hoffen, dass Sie es einigermaßen benutzerfreundlich finden, sobald Sie sich daran gewöhnt haben. +Das Metamath-Programm wurde zuerst auf einem {\sc vax/vms}-System entwickelt, und einige Aspekte seines Befehlszeilenverhaltens spiegeln dieses Erbe wider. Wir hoffen, dass Sie es einigermaßen benutzerfreundlich finden, sobald Sie sich daran gewöhnt haben. -Jede Befehlszeile besteht aus einer Folge englischsprachiger Wörter, die durch Leerzeichen getrennt sind, wie in \texttt{show settings}. Bei Befehlswörtern wird nicht zwischen Groß- und Kleinschreibung unterschieden, und es werden nur so viele Buchstaben benötigt, wie nötig sind, um Mehrdeutigkeiten auszuschließen; so würde beispielsweise bereits \texttt{sh se} für die Ausführung des Befehls \texttt{show settings} ausreichen. In einigen Fällen sind Argumente wie Dateinamen, Label von Anweisungen oder Symbolnamen erforderlich; bei diesen wird zwischen Groß- und Kleinschreibung unterschieden (obwohl Dateinamen auf einigen Betriebssystemen möglicherweise nicht unterschieden werden). +Jede Befehlszeile besteht aus einer Folge englischsprachiger Wörter, die durch Leerzeichen getrennt sind, wie in \texttt{show settings}. Bei Befehlswörtern wird nicht zwischen Groß- und Kleinschreibung unterschieden, und es werden nur so viele Buchstaben benötigt, wie nötig sind, um Mehrdeutigkeiten auszuschließen; so würde beispielsweise bereits \texttt{sh se} für die Ausführung des Befehls \texttt{show settings} ausreichen. In einigen Fällen sind Argumente wie Dateinamen, Label von Anweisungen oder Symbolnamen erforderlich; bei diesen wird zwischen Groß- und Kleinschreibung unterschieden (obwohl Dateinamen auf einigen Betriebssystemen möglicherweise nicht unterschieden werden). -Eine Befehlszeile wird eingegeben, indem man sie eintippt und dann die {\em Return-} ({\em Enter-})Taste drückt. Um herauszufinden, welche Befehle verfügbar sind, geben Sie \texttt{?} an der Eingabeaufforderung \texttt{MM>} ein. Um herauszufinden, welche Möglichkeiten Sie an einer beliebigen Stelle eines Befehls haben, drücken Sie {\em return} und Sie werden dazu aufgefordert eine angegebene Möglichkeit auszuwählen. Die Standardauswahl (diejenige, die ausgewählt wird, wenn Sie nur {\em Return} drücken) wird in Klammern angezeigt (\texttt{<>}). +Eine Befehlszeile wird eingegeben, indem man sie eintippt und dann die {\em Return-} ({\em Enter-})Taste drückt. Um herauszufinden, welche Befehle verfügbar sind, geben Sie \texttt{?} an der Eingabeaufforderung \texttt{MM>} ein. Um herauszufinden, welche Möglichkeiten Sie an einer beliebigen Stelle eines Befehls haben, drücken Sie {\em return} und Sie werden dazu aufgefordert eine angegebene Möglichkeit auszuwählen. Die Standardauswahl (diejenige, die ausgewählt wird, wenn Sie nur {\em Return} drücken) wird in Klammern angezeigt (\texttt{<>}). -Sie können auch \texttt{?} anstelle eines Befehlsworts eingeben, um Metamath dazu zu bringen, Ihnen die verfügbaren Möglichkeiten mitzuteilen. Die Methode \texttt{?} funktioniert allerdings nicht, wenn an dieser Stelle ein Argument erwartet wird, das kein Schlüsselwort ist, wie z. B. ein Dateiname, weil das Programm dann das \texttt{?} als Wert des Arguments interpretiert. +Sie können auch \texttt{?} anstelle eines Befehlsworts eingeben, um Metamath dazu zu bringen, Ihnen die verfügbaren Möglichkeiten mitzuteilen. Die Methode \texttt{?} funktioniert allerdings nicht, wenn an dieser Stelle ein Argument erwartet wird, das kein Schlüsselwort ist, wie z. B. ein Dateiname, weil das Programm dann das \texttt{?} als Wert des Arguments interpretiert. -Einige Befehle haben einen oder mehrere optionale Parameter, die das Verhalten des Befehls beeinflussen. Parameter werden mit einem Schrägstrich (\texttt{/}) eingeleitet, wie z. B. in \texttt{read set.mm / verify}. Leerzeichen um das \texttt{/} sind optional. Wenn Sie ein Leerzeichen oder einen Schrägstrich in einem Befehlsargument verwenden müssen, wie in einem Unix-Dateinamen, setzen Sie das Befehlsargument in einfache oder doppelte Anführungszeichen. +Einige Befehle haben einen oder mehrere optionale Parameter, die das Verhalten des Befehls beeinflussen. Parameter werden mit einem Schrägstrich (\texttt{/}) eingeleitet, wie z. B. in \texttt{read set.mm / verify}. Leerzeichen um das \texttt{/} sind optional. Wenn Sie ein Leerzeichen oder einen Schrägstrich in einem Befehlsargument verwenden müssen, wie in einem Unix-Dateinamen, setzen Sie das Befehlsargument in einfache oder doppelte Anführungszeichen. -Der Befehl \texttt{open log} speichert alles, was Sie auf dem Bildschirm sehen, und ist nützlich, wenn Sie etwas wiederherstellen wollen, falls bei einem Beweis etwas schief geht, oder wenn Sie einen Fehler dokumentieren wollen. +Der Befehl \texttt{open log} speichert alles, was Sie auf dem Bildschirm sehen, und ist nützlich, wenn Sie etwas wiederherstellen wollen, falls bei einem Beweis etwas schief geht, oder wenn Sie einen Fehler dokumentieren wollen. -Wenn ein Befehl mit mehr Zeilen als auf einen Bildschirm passen antwortet, werden Sie aufgefordert, \texttt{ zum Fortfahren, Q zum Beenden oder S zum Scrollen zum Ende} einzugeben. \texttt{Q} oder \texttt{q} (Groß- und Kleinschreibung wird nicht beachtet) führt den Befehl intern zu Ende, unterdrückt aber weitere Ausgaben bis zur nächsten Eingabeaufforderung \texttt{MM>}. \texttt{s} unterdrückt weitere Pausen bis zur nächsten Eingabeaufforderung \texttt{MM>}. Nach der ersten Bildschirmseite haben Sie auch die Möglichkeit, mit \texttt{b} eine Bildschirmseite zurückzugehen. Beachten Sie, dass \texttt{b} auch an der Eingabeaufforderung \texttt{MM>} unmittelbar nach einem Befehl eingegeben werden kann, um durch die Ausgabe dieses Befehls zurückzublättern. +Wenn ein Befehl mit mehr Zeilen als auf einen Bildschirm passen antwortet, werden Sie aufgefordert, \texttt{ zum Fortfahren, Q zum Beenden oder S zum Scrollen zum Ende} einzugeben. \texttt{Q} oder \texttt{q} (Groß- und Kleinschreibung wird nicht beachtet) führt den Befehl intern zu Ende, unterdrückt aber weitere Ausgaben bis zur nächsten Eingabeaufforderung \texttt{MM>}. \texttt{s} unterdrückt weitere Pausen bis zur nächsten Eingabeaufforderung \texttt{MM>}. Nach der ersten Bildschirmseite haben Sie auch die Möglichkeit, mit \texttt{b} eine Bildschirmseite zurückzugehen. Beachten Sie, dass \texttt{b} auch an der Eingabeaufforderung \texttt{MM>} unmittelbar nach einem Befehl eingegeben werden kann, um durch die Ausgabe dieses Befehls zurückzublättern. -Eine in Anführungszeichen eingeschlossene Befehlszeile wird von Ihrem Betriebssystem ausgeführt. Siehe Abschnitt~\ref{oscmd}. +Eine in Anführungszeichen eingeschlossene Befehlszeile wird von Ihrem Betriebssystem ausgeführt. Siehe Abschnitt~\ref{oscmd}. -{Warnung:} Wenn Sie {\sc ctrl-c} drücken, wird das Metamath-Programm sofort abgebrochen. Das bedeutet, dass alle nicht gespeicherten Daten verloren gehen. +{Warnung:} Wenn Sie {\sc ctrl-c} drücken, wird das Metamath-Programm sofort abgebrochen. Das bedeutet, dass alle nicht gespeicherten Daten verloren gehen. \subsection{\texttt{exit}-Befehl}\index{\texttt{exit}-Befehl} Syntax: \texttt{exit} [\texttt{/force}] -Mit diesem Befehl verlässt man Metamath. Wenn mit den Befehlen \texttt{proof} oder \texttt{save new{\char`\_}proof} Änderungen am Quelltext vorgenommen wurden, erhalten Sie die Möglichkeit, mit \texttt{write source} die Änderungen dauerhaft zu speichern. +Mit diesem Befehl verlässt man Metamath. Wenn mit den Befehlen \texttt{proof} oder \texttt{save new{\char`\_}proof} Änderungen am Quelltext vorgenommen wurden, erhalten Sie die Möglichkeit, mit \texttt{write source} die Änderungen dauerhaft zu speichern. -Im Modus "`Beweis-Assistent"'\index{Beweis-Assistent} kehrt man mit dem Befehl \texttt{exit} zur Eingabeaufforderung \verb/MM>/ zurück. Wenn Änderungen am Beweis vorgenommen wurden, erhalten Sie die Möglichkeit, den neuen Beweis mit \texttt{save new{\char`\_}proof} zu speichern. +Im Modus "`Beweis-Assistent"'\index{Beweis-Assistent} kehrt man mit dem Befehl \texttt{exit} zur Eingabeaufforderung \verb/MM>/ zurück. Wenn Änderungen am Beweis vorgenommen wurden, erhalten Sie die Möglichkeit, den neuen Beweis mit \texttt{save new{\char`\_}proof} zu speichern. Der Befehl \texttt{quit} ist ein Synonym für \texttt{exit}. Optionaler Befehlszeilenparameter: -\texttt{/force} - Keine Eingabeaufforderung, wenn Änderungen nicht gespeichert wurden. Dieser Qualifizierer ist in \texttt{submit}-Befehlsdateien (siehe Abschnitt~\ref{sbmt}) nützlich, um ein vorhersehbares Verhalten zu gewährleisten. +\texttt{/force} - Keine Eingabeaufforderung, wenn Änderungen nicht gespeichert wurden. Dieser Qualifizierer ist in \texttt{submit}-Befehlsdateien (siehe Abschnitt~\ref{sbmt}) nützlich, um ein vorhersehbares Verhalten zu gewährleisten. \subsection{\texttt{open log}-Befehl}\index{\texttt{open log}-Befehl} Syntax: \texttt{open log} {\em Dateiname} -Mit diesem Befehl wird eine Protokolldatei geöffnet, in der alles gespeichert wird, was Sie auf dem Bildschirm sehen. Sie ist nützlich, um einen Fehler während einer langen Sitzung mit dem Beweis-Assistenten zu beheben oder um Fehler zu dokumentieren.\index{Metamath!Bug} +Mit diesem Befehl wird eine Protokolldatei geöffnet, in der alles gespeichert wird, was Sie auf dem Bildschirm sehen. Sie ist nützlich, um einen Fehler während einer langen Sitzung mit dem Beweis-Assistenten zu beheben oder um Fehler zu dokumentieren.\index{Metamath!Bug} -Die Protokolldatei kann mit \texttt{close log} geschlossen werden. Sie wird automatisch beim Beenden von Metamath geschlossen. +Die Protokolldatei kann mit \texttt{close log} geschlossen werden. Sie wird automatisch beim Beenden von Metamath geschlossen. \subsection{\texttt{close log}-Befehl}\index{\texttt{close log}-Befehl} Syntax: \texttt{close log} -Der Befehl \texttt{close log} schließt eine Protokolldatei, falls eine geöffnet ist. Siehe auch \texttt{open log}. +Der Befehl \texttt{close log} schließt eine Protokolldatei, falls eine geöffnet ist. Siehe auch \texttt{open log}. \subsection{\texttt{submit}-Befehl}\index{\texttt{submit}-Befehl}\label{sbmt} Syntax: \texttt{submit} {\em Dateiname} -Dieser Befehl bewirkt, dass weitere Befehlszeilen aus der angegebenen Datei entnommen und ausgeführt werden. Beachten Sie, dass jede Zeile, die mit einem Ausrufezeichen (\texttt{!}) beginnt, als Kommentar behandelt (d.h. ignoriert) wird. Beachten Sie auch, dass die Bildschirmausgabe kontinuierlich durchläuft, so dass Sie eventuell eine Protokolldatei öffnen sollten (siehe \texttt{open log}), um die auf dem Bildschirm vorbeiziehenden Ergebnisse aufzuzeichnen. Nachdem alle Befehlszeilen in der Datei ausgeführt wurden, kehrt Metamath in den normalen Modus der Benutzeroberfläche zurück. +Dieser Befehl bewirkt, dass weitere Befehlszeilen aus der angegebenen Datei entnommen und ausgeführt werden. Beachten Sie, dass jede Zeile, die mit einem Ausrufezeichen (\texttt{!}) beginnt, als Kommentar behandelt (d.h. ignoriert) wird. Beachten Sie auch, dass die Bildschirmausgabe kontinuierlich durchläuft, so dass Sie eventuell eine Protokolldatei öffnen sollten (siehe \texttt{open log}), um die auf dem Bildschirm vorbeiziehenden Ergebnisse aufzuzeichnen. Nachdem alle Befehlszeilen in der Datei ausgeführt wurden, kehrt Metamath in den normalen Modus der Benutzeroberfläche zurück. -Der Befehl \texttt{submit} kann rekursiv aufgerufen werden (d.h. ebenfalls innerhalb einer \texttt{submit} Befehlsdatei). +Der Befehl \texttt{submit} kann rekursiv aufgerufen werden (d.h. ebenfalls innerhalb einer \texttt{submit} Befehlsdatei). Optionaler Befehlszeilenparameter: -\texttt{/silent} - unterdrückt die Bildschirmausgabe, zeichnet die Ausgabe aber dennoch in einer Protokolldatei auf, falls eine solche geöffnet ist. +\texttt{/silent} - unterdrückt die Bildschirmausgabe, zeichnet die Ausgabe aber dennoch in einer Protokolldatei auf, falls eine solche geöffnet ist. \subsection{\texttt{erase}-Befehl}\index{\texttt{erase}-Befehl} Syntax: \texttt{erase} -Dieser Befehl setzt Metamath auf seinen Ausgangszustand zurück und löscht alle Datenbasen, die mit \texttt{read} eingelesen wurden. Wenn mit den Befehlen \texttt{save proof} oder \texttt{save new{\char`\_}proof} Änderungen an der Quelldatei vorgenommen wurden, wird Ihnen die Möglichkeit gegeben, \texttt{write source} zu verwenden, um die Änderungen dauerhaft zu speichern. +Dieser Befehl setzt Metamath auf seinen Ausgangszustand zurück und löscht alle Datenbasen, die mit \texttt{read} eingelesen wurden. Wenn mit den Befehlen \texttt{save proof} oder \texttt{save new{\char`\_}proof} Änderungen an der Quelldatei vorgenommen wurden, wird Ihnen die Möglichkeit gegeben, \texttt{write source} zu verwenden, um die Änderungen dauerhaft zu speichern. \subsection{\texttt{set echo}-Befehl}\index{\texttt{set echo}-Befehl} Syntax: \texttt{set echo on} or \texttt{set echo off} -Der Befehl \texttt{set echo on} bewirkt, dass die Befehlszeilen mit erweiterten Abkürzungen wiedergegeben werden. Beim Erlernen der Metamath-Befehle zeigt Ihnen diese Funktion genau den Befehl an, dem Ihre abgekürzte Eingabe entspricht. +Der Befehl \texttt{set echo on} bewirkt, dass die Befehlszeilen mit erweiterten Abkürzungen wiedergegeben werden. Beim Erlernen der Metamath-Befehle zeigt Ihnen diese Funktion genau den Befehl an, dem Ihre abgekürzte Eingabe entspricht. \subsection{\texttt{set scroll}-Befehl}\index{\texttt{set scroll}-Befehl} Syntax: \texttt{set scroll prompted} oder \texttt{set scroll continuous} -Die Metamath-Befehlszeilenschnittstelle startet im Modus \texttt{prompted}, was bedeutet, dass Sie nach jedem Vollbild in einer langen Auflistung zum Fortfahren oder Beenden aufgefordert werden. Im Modus \texttt{continuous} werden lange Auflistungen ohne Pause durchlaufen. +Die Metamath-Befehlszeilenschnittstelle startet im Modus \texttt{prompted}, was bedeutet, dass Sie nach jedem Vollbild in einer langen Auflistung zum Fortfahren oder Beenden aufgefordert werden. Im Modus \texttt{continuous} werden lange Auflistungen ohne Pause durchlaufen. \subsection{\texttt{set width}-Befehl}\index{\texttt{set @@ -7178,7 +7179,7 @@ \subsection{\texttt{set width}-Befehl}\index{\texttt{set Syntax: \texttt{set width} {\em Zahl} -Metamath geht davon aus, dass die Breite Ihres Bildschirms 79 Zeichen beträgt (dies wurde gewählt, weil die Eingabeaufforderung in Windows XP einen Umbruchfehler bei Spalte 80 aufweist). Wenn Ihr Bildschirm breiter oder schmaler ist, können Sie mit diesem Befehl die Standardbreite des Bildschirms ändern. Eine größere Breite ist vorteilhaft für die Protokollierung von Beweisen in einer Ausgabedatei, die auf einem breiten Drucker gedruckt werden soll. Auf manchen Terminals kann eine geringere Breite erforderlich sein; in diesem Fall kann der Umbruch der Informationsmeldungen jedoch manchmal etwas unnatürlich wirken. In \LaTeX\index{latex@{\LaTeX}!Zeichen pro Zeile} gibt es normalerweise maximal 61 Zeichen pro Zeile mit Schreibmaschinenschrift (die Beispiele in diesem Buch wurden mit 61 Zeichen pro Zeile erstellt). +Metamath geht davon aus, dass die Breite Ihres Bildschirms 79 Zeichen beträgt (dies wurde gewählt, weil die Eingabeaufforderung in Windows XP einen Umbruchfehler bei Spalte 80 aufweist). Wenn Ihr Bildschirm breiter oder schmaler ist, können Sie mit diesem Befehl die Standardbreite des Bildschirms ändern. Eine größere Breite ist vorteilhaft für die Protokollierung von Beweisen in einer Ausgabedatei, die auf einem breiten Drucker gedruckt werden soll. Auf manchen Terminals kann eine geringere Breite erforderlich sein; in diesem Fall kann der Umbruch der Informationsmeldungen jedoch manchmal etwas unnatürlich wirken. In \LaTeX\index{latex@{\LaTeX}!Zeichen pro Zeile} gibt es normalerweise maximal 61 Zeichen pro Zeile mit Schreibmaschinenschrift (die Beispiele in diesem Buch wurden mit 61 Zeichen pro Zeile erstellt). \subsection{\texttt{set height}-Befehl}\index{\texttt{set @@ -7186,55 +7187,55 @@ \subsection{\texttt{set height}-Befehl}\index{\texttt{set Syntax: \texttt{set height} {\em Zahl} -Metamath geht davon aus, dass Ihre Bildschirmhöhe 24 Zeilen an Zeichen beträgt. Wenn Ihr Bildschirm größer oder kleiner ist, können Sie mit diesem Befehl die Anzahl der Zeilen ändern, bei denen die Anzeige pausiert und Sie zum Fortfahren auffordert. +Metamath geht davon aus, dass Ihre Bildschirmhöhe 24 Zeilen an Zeichen beträgt. Wenn Ihr Bildschirm größer oder kleiner ist, können Sie mit diesem Befehl die Anzahl der Zeilen ändern, bei denen die Anzeige pausiert und Sie zum Fortfahren auffordert. \subsection{\texttt{beep}-Befehl}\index{\texttt{beep}-Befehl} Syntax: \texttt{beep} -Bei diesem Befehl ertönt ein Piepton. Wenn Sie ihn vor dem Start eines lang laufenden Befehls eingeben, werden Sie darauf hingewiesen, dass der Befehl beendet ist. Der Einfachheit halber ist \texttt{b} eine Abkürzung für \texttt{beep}. +Bei diesem Befehl ertönt ein Piepton. Wenn Sie ihn vor dem Start eines lang laufenden Befehls eingeben, werden Sie darauf hingewiesen, dass der Befehl beendet ist. Der Einfachheit halber ist \texttt{b} eine Abkürzung für \texttt{beep}. -Hinweis: Wenn \texttt{b} an der Eingabeaufforderung \texttt{MM>} unmittelbar nach dem Ende einer mehrseitigen Anzeige mit der Aufforderung "`\texttt{Press for more}..."' eingegeben wird, kehrt der \texttt{b} zur vorherigen Seite zurück, anstatt den Befehl \texttt{beep} auszuführen. In diesem Fall müssen Sie die ungekürzte \texttt{beep}-Form des Befehls eingeben. +Hinweis: Wenn \texttt{b} an der Eingabeaufforderung \texttt{MM>} unmittelbar nach dem Ende einer mehrseitigen Anzeige mit der Aufforderung "`\texttt{Press for more}..."' eingegeben wird, kehrt der \texttt{b} zur vorherigen Seite zurück, anstatt den Befehl \texttt{beep} auszuführen. In diesem Fall müssen Sie die ungekürzte \texttt{beep}-Form des Befehls eingeben. \subsection{\texttt{more}-Befehl}\index{\texttt{more}-Befehl} Syntax: \texttt{more} {\em Dateiname} -Dieser Befehl zeigt den Inhalt einer {\sc ascii}-Datei auf dem Bildschirm an. +Dieser Befehl zeigt den Inhalt einer {\sc ascii}-Datei auf dem Bildschirm an. -(Dieser Befehl dient der Bequemlichkeit, ist aber nicht sehr leistungsfähig. Siehe Abschnitt~\ref{oscmd}, um den entsprechenden Befehl Ihres Betriebssystems aufzurufen, z. B. den Befehl \texttt{more} unter Unix). +(Dieser Befehl dient der Bequemlichkeit, ist aber nicht sehr leistungsfähig. Siehe Abschnitt~\ref{oscmd}, um den entsprechenden Befehl Ihres Betriebssystems aufzurufen, z. B. den Befehl \texttt{more} unter Unix). \subsection{Betriebssystem-Befehle}\index{Betriebssystem-Befehl}\label{oscmd} -Eine in einfache oder doppelte Anführungszeichen eingeschlossene Zeile wird vom Betriebssystem Ihres Computers ausgeführt, wenn dieses über eine Befehlszeilenschnittstelle verfügt. Auf einem {\sc vax/vms}-System wird beispielsweise \verb/MM> 'dir'/ den Inhalt des Festplattenverzeichnisses ausgeben. Beachten Sie, dass diese Funktion auf Macintosh-Systemen vor Mac OS X, die keine Befehlszeilenschnittstelle haben, nicht funktioniert. +Eine in einfache oder doppelte Anführungszeichen eingeschlossene Zeile wird vom Betriebssystem Ihres Computers ausgeführt, wenn dieses über eine Befehlszeilenschnittstelle verfügt. Auf einem {\sc vax/vms}-System wird beispielsweise \verb/MM> 'dir'/ den Inhalt des Festplattenverzeichnisses ausgeben. Beachten Sie, dass diese Funktion auf Macintosh-Systemen vor Mac OS X, die keine Befehlszeilenschnittstelle haben, nicht funktioniert. -Der Einfachheit halber ist das Anführungszeichen am Ende optional. +Der Einfachheit halber ist das Anführungszeichen am Ende optional. \subsection{Größenbeschränkungen in Metamath} -Im Allgemeinen gibt es keine festen, vordefinierten Grenzen\index{Metamath!Memory-Limits} dafür, wie viele Labels, Token\index{Token}, Anweisungen usw. Sie in einer Datenbasisdatei verwenden können. Das Metamath-Programm verwendet 32-Bit-Variablen (64-Bit auf 64-Bit-CPUs) als Indizes für fast alle internen Arrays, die bei Bedarf dynamisch zugewiesen werden. +Im Allgemeinen gibt es keine festen, vordefinierten Grenzen\index{Metamath!Memory-Limits} dafür, wie viele Labels, Token\index{Token}, Anweisungen usw. Sie in einer Datenbasisdatei verwenden können. Das Metamath-Programm verwendet 32-Bit-Variablen (64-Bit auf 64-Bit-CPUs) als Indizes für fast alle internen Arrays, die bei Bedarf dynamisch zugewiesen werden. \section{Lesen und Schreiben von Dateien} -Die folgenden Befehle erstellen neue Dateien: die \texttt{open}-Befehle; die \texttt{write}-Befehle; die Optionen \texttt{/html}, \texttt{/alt{\char`\_}html}, \texttt{/brief{\char`\_}html}, \texttt{/brief{\char`\_}alt{\char`\_}html} von \texttt{show statement}, und \texttt{midi}. Die folgenden Befehle werden an zuvor geöffnete Dateien angehängt: die Option \texttt{/tex} von \texttt{show proof} und \texttt{show new{\char`\_}proof}; die Optionen \texttt{/tex} und \texttt{/simple{\char`\_}tex} von \texttt{show statement}; die Befehle \texttt{close}; und alle Bildschirmdialoge zwischen \texttt{open log} und \texttt{close log}. +Die folgenden Befehle erstellen neue Dateien: die \texttt{open}-Befehle; die \texttt{write}-Befehle; die Optionen \texttt{/html}, \texttt{/alt{\char`\_}html}, \texttt{/brief{\char`\_}html}, \texttt{/brief{\char`\_}alt{\char`\_}html} von \texttt{show statement}, und \texttt{midi}. Die folgenden Befehle werden an zuvor geöffnete Dateien angehängt: die Option \texttt{/tex} von \texttt{show proof} und \texttt{show new{\char`\_}proof}; die Optionen \texttt{/tex} und \texttt{/simple{\char`\_}tex} von \texttt{show statement}; die Befehle \texttt{close}; und alle Bildschirmdialoge zwischen \texttt{open log} und \texttt{close log}. -Die Befehle, die neue Dateien erstellen, überschreiben keine vorhandenen {\em Dateinamen}, sondern benennen die vorhandene Datei in {\em Dateiname}\texttt{{\char`\~}1} um. Ein vorhandener {\em Dateiname}\texttt{{\char`\~}1} wird umbenannt in {\em Dateiname}\texttt{{\char`\~}2}, usw.\ bis zu {\em Dateiname}\texttt{{\char`\~}9}. Ein vorhandener {\em Dateiname}\texttt{{\char`\~}9} wird gelöscht. Dies erleichtert die Wiederherstellung nach Fehlern, bringt aber auch Unordnung in Ihr Verzeichnis, so dass Sie gelegentlich diese \texttt{{\char`\~}}$n$-Dateien bereinigen (löschen) sollten. +Die Befehle, die neue Dateien erstellen, überschreiben keine vorhandenen {\em Dateinamen}, sondern benennen die vorhandene Datei in {\em Dateiname}\texttt{{\char`\~}1} um. Ein vorhandener {\em Dateiname}\texttt{{\char`\~}1} wird umbenannt in {\em Dateiname}\texttt{{\char`\~}2}, usw.\ bis zu {\em Dateiname}\texttt{{\char`\~}9}. Ein vorhandener {\em Dateiname}\texttt{{\char`\~}9} wird gelöscht. Dies erleichtert die Wiederherstellung nach Fehlern, bringt aber auch Unordnung in Ihr Verzeichnis, so dass Sie gelegentlich diese \texttt{{\char`\~}}$n$-Dateien bereinigen (löschen) sollten. \subsection{\texttt{read}-Befehl}\index{\texttt{read}-Befehl} Syntax: \texttt{read} {\em Dateiname} [\texttt{/verify}] -Mit diesem Befehl wird eine Quelldatei in der Metamath-Sprache und alle darin referenzierten Dateien eingelesen. Normalerweise ist es das erste, was Sie tun, wenn Sie mit Metamath beginnen. Die Syntax der Anweisungen wird überprüft, die Syntax der Beweise jedoch nicht. Beachten Sie, dass der Dateiname in einfache oder doppelte Anführungszeichen eingeschlossen werden kann; dies ist nützlich, wenn der Dateiname Schrägstriche enthält, wie es unter Unix der Fall sein kann. +Mit diesem Befehl wird eine Quelldatei in der Metamath-Sprache und alle darin referenzierten Dateien eingelesen. Normalerweise ist es das erste, was Sie tun, wenn Sie mit Metamath beginnen. Die Syntax der Anweisungen wird überprüft, die Syntax der Beweise jedoch nicht. Beachten Sie, dass der Dateiname in einfache oder doppelte Anführungszeichen eingeschlossen werden kann; dies ist nützlich, wenn der Dateiname Schrägstriche enthält, wie es unter Unix der Fall sein kann. Falls Sie eine "`\texttt{?Expected VERIFY}"' Fehlermeldung erhalten, wenn Sie versuchen einen Unix-Dateinamen mit Schrägstrichen zu lesen, haben Sie ihn wahrscheinlich nicht in Anführungszeichen gesetzt.\index{Unix-Dateinamen}\index{Dateinamen!Unix} -Wenn Sie zur Eingabe des Dateinamens aufgefordert werden (durch Drücken von {\em Enter} nach \texttt{read}), sollten Sie ihn {\em nicht} in Anführungszeichen setzen, auch wenn es sich um einen Unix-Dateinamen mit Schrägstrichen handelt. +Wenn Sie zur Eingabe des Dateinamens aufgefordert werden (durch Drücken von {\em Enter} nach \texttt{read}), sollten Sie ihn {\em nicht} in Anführungszeichen setzen, auch wenn es sich um einen Unix-Dateinamen mit Schrägstrichen handelt. Optionaler Befehlszeilenparameter: @@ -7257,17 +7258,17 @@ \subsection{\texttt{write source}-Befehl}\index{\texttt{write source}-Befehl} Optionale Befehlszeilenparameter: -\texttt{/rewrap} - Formatiert Anweisungen und Kommentare entsprechend der in der set.mm-Datenbasis verwendeten Konvention um. Es hebt den Zeilenumbruch im Kommentar vor jeder \texttt{\$a}- und \texttt{\$p}-Anweisung auf und bricht die Zeile dann neu um. Sie sollten die Ausgabe mit dem Original vergleichen, um sicherzustellen, dass der gewünschte Effekt erzielt wird; falls nicht, gehen Sie zurück zum Original. Die Länge der umgebrochenen Zeile berücksichtigt den aktuell gültigen Parameter \texttt{set width}. +\texttt{/rewrap} - Formatiert Anweisungen und Kommentare entsprechend der in der set.mm-Datenbasis verwendeten Konvention um. Es hebt den Zeilenumbruch im Kommentar vor jeder \texttt{\$a}- und \texttt{\$p}-Anweisung auf und bricht die Zeile dann neu um. Sie sollten die Ausgabe mit dem Original vergleichen, um sicherzustellen, dass der gewünschte Effekt erzielt wird; falls nicht, gehen Sie zurück zum Original. Die Länge der umgebrochenen Zeile berücksichtigt den aktuell gültigen Parameter \texttt{set width}. Hinweis: Text, der in \texttt{}...\texttt{}-Tags eingeschlossen ist, wird durch den Qualifier \texttt{/rewrap} nicht verändert. Beweise selbst werden nicht umformatiert; verwenden Sie dazu \texttt{save proof * / compressed}. Eine isolierte Tilde (\~{}) wird immer in derselben Zeile wie das folgende Symbol gehalten, so dass Sie alle Kommentarverweise auf ein Symbol finden können, indem Sie nach \~{}, gefolgt von einem Leerzeichen und dem Symbol, suchen (dies ist nützlich, um Querverweise zu finden). Übrigens, \texttt{save proof} beachtet auch den derzeit gültigen Parameter \texttt{set width}. -\texttt{/split} - -Dateien, die mit dem Ausdruck \$[ \textit{inclfile} \$] in den Quelltext inkludiert werden, werden in separate Dateien geschrieben, anstatt in eine einzige Ausgabedatei aufgenommen zu werden. Der Name jeder separat geschriebenen Datei ist das Argument \textit{inclfile} des Include-Befehls. +\texttt{/split} - +Dateien, die mit dem Ausdruck \$[ \textit{inclfile} \$] in den Quelltext inkludiert werden, werden in separate Dateien geschrieben, anstatt in eine einzige Ausgabedatei aufgenommen zu werden. Der Name jeder separat geschriebenen Datei ist das Argument \textit{inclfile} des Include-Befehls. -\texttt{/keep\_includes} - -Wenn eine Quelldatei inkludierte Dateien hat, aber durch Weglassen von \texttt{/split} als einzelne Datei geschrieben wird, werden die inkludierten Dateien standardmäßig gelöscht (eigentlich nur mit einem Suffix \char`\~1 umbenannt, es sei denn, \texttt{/no\_versioning} ist gesetzt), um die möglicherweise verwirrende Quelldateiduplikation sowohl in der Ausgabedatei als auch in der inkludierten Datei zu verhindern. Die Option \texttt{/keep\_includes} verhindert diese Löschung. +\texttt{/keep\_includes} - +Wenn eine Quelldatei inkludierte Dateien hat, aber durch Weglassen von \texttt{/split} als einzelne Datei geschrieben wird, werden die inkludierten Dateien standardmäßig gelöscht (eigentlich nur mit einem Suffix \char`\~1 umbenannt, es sei denn, \texttt{/no\_versioning} ist gesetzt), um die möglicherweise verwirrende Quelldateiduplikation sowohl in der Ausgabedatei als auch in der inkludierten Datei zu verhindern. Die Option \texttt{/keep\_includes} verhindert diese Löschung. -\texttt{/no\_versioning} - +\texttt{/no\_versioning} - Sicherungsdateien mit dem Suffix \char`\~1 werden nicht erstellt. @@ -7283,52 +7284,52 @@ \subsection{\texttt{show memory}-Befehl}\index{\texttt{show memory}-Befehl} Syntax: \texttt{show memory} -Dieser Befehl zeigt den noch verfügbaren Speicher an. Er ist auf den meisten modernen Betriebssystemen, die über virtuellen Speicher verfügen, nicht aussagekräftig.\index{Metamath!Memory-Nutzung} +Dieser Befehl zeigt den noch verfügbaren Speicher an. Er ist auf den meisten modernen Betriebssystemen, die über virtuellen Speicher verfügen, nicht aussagekräftig.\index{Metamath!Memory-Nutzung} \subsection{\texttt{show labels}-Befehl}\index{\texttt{show labels}-Befehl} Syntax: \texttt{show labels} {\em label-match} [\texttt{/all}] [\texttt{/linear}] -Dieser Befehl zeigt die Labels von \texttt{\$a}- und \texttt{\$p}-Anweisungen an, die auf {\em label-match} passen. Ein \verb$*$ in {label-match} ist ein Platzhalter für null oder mehr beliebige Zeichen. Zum Beispiel passt \verb$*abc*def$ auf alle Labels, die \verb$abc$ enthalten und mit \verb$def$ enden. +Dieser Befehl zeigt die Labels von \texttt{\$a}- und \texttt{\$p}-Anweisungen an, die auf {\em label-match} passen. Ein \verb$*$ in {label-match} ist ein Platzhalter für null oder mehr beliebige Zeichen. Zum Beispiel passt \verb$*abc*def$ auf alle Labels, die \verb$abc$ enthalten und mit \verb$def$ enden. Optionale Befehlszeilenparameter: - \texttt{/all} - + \texttt{/all} - Übereinstimmungen für \texttt{\$e}- und \texttt{\$f}-Anweisungslabels einschließen. - \texttt{/linear} - - Nur ein Label pro Zeile anzeigen. Dies kann für die Erstellung von Skripten in Verbindung mit den Dienstprogrammen unter dem Befehl \texttt{tools}\index{\texttt{tools}-Befehl} nützlich sein. + \texttt{/linear} - + Nur ein Label pro Zeile anzeigen. Dies kann für die Erstellung von Skripten in Verbindung mit den Dienstprogrammen unter dem Befehl \texttt{tools}\index{\texttt{tools}-Befehl} nützlich sein. \subsection{\texttt{show statement}-Befehl}\index{\texttt{show statement}-Befehl} Syntax: \texttt{show statement} {\em label-match} [{\em qualifiers} (siehe unten)] -Dieser Befehl liefert Informationen über eine Anweisung. Es können nur Anweisungen mit Labels (\texttt{\$f}\index{\texttt{\$f}-Anweisung}, -\texttt{\$e}\index{\texttt{\$e}-Anweisung}, -\texttt{\$a}\index{\texttt{\$a}-Anweisung}, und -\texttt{\$p}\index{\texttt{\$p}-Anweisung}) angegeben werden. -Wenn {\em label-match} Platzhalterzeichen (\verb$*$) enthält, werden alle übereinstimmenden Anweisungen in der Reihenfolge angezeigt, in der sie in der Datenbasis vorkommen. +Dieser Befehl liefert Informationen über eine Anweisung. Es können nur Anweisungen mit Labels (\texttt{\$f}\index{\texttt{\$f}-Anweisung}, +\texttt{\$e}\index{\texttt{\$e}-Anweisung}, +\texttt{\$a}\index{\texttt{\$a}-Anweisung}, und +\texttt{\$p}\index{\texttt{\$p}-Anweisung}) angegeben werden. +Wenn {\em label-match} Platzhalterzeichen (\verb$*$) enthält, werden alle übereinstimmenden Anweisungen in der Reihenfolge angezeigt, in der sie in der Datenbasis vorkommen. Optionale Befehlszeilenparameter ({\em qualifiers}, es ist jeweils nur ein Parameter zulässig): - \texttt{/comment} - + \texttt{/comment} - Diese Option schließt den Kommentar ein, der der Anweisung unmittelbar vorausgeht. - \texttt{/full} - + \texttt{/full} - Zeigt vollständige Informationen zu jeder Anweisung an, und zwar für alle Anweisungen, die mit {\em label} übereinstimmen (einschließlich der \texttt{\$e}- und \texttt{\$f}-Anweisungen). - \texttt{/tex} - + \texttt{/tex} - Diese Option schreibt die Anweisungsinformationen in die \LaTeX-Datei, die zuvor mit \texttt{open tex} geöffnet wurde. Siehe Abschnitt~\ref{texout}. - \texttt{/simple{\char`\_}tex} - + \texttt{/simple{\char`\_}tex} - Wie \texttt{/tex} mit dem Unterschied, dass \LaTeX-Makros nicht für die Formatierung von Gleichungen verwendet werden, was eine einfachere manuelle Bearbeitung der Ausgabe für Folienpräsentationen usw. ermöglicht. \texttt{/html}\index{HTML generierung@{\sc html} generation}, \texttt{/alt{\char`\_}html}, \texttt{/brief{\char`\_}html}, \texttt{/brief{\char`\_}alt{\char`\_}html} - - Diese Optionen aktivieren einen speziellen Modus von \texttt{show statement}, der eine Webseite für die Anweisung erstellt. Sie dürfen nicht zusammen mit einem anderen Qualifizierer verwendet werden. Siehe Abschnitt~\ref{htmlout} oder \texttt{help html} im Programm. + Diese Optionen aktivieren einen speziellen Modus von \texttt{show statement}, der eine Webseite für die Anweisung erstellt. Sie dürfen nicht zusammen mit einem anderen Qualifizierer verwendet werden. Siehe Abschnitt~\ref{htmlout} oder \texttt{help html} im Programm. \subsection{\texttt{search}-Befehl}\index{\texttt{search}-Befehl} @@ -7337,7 +7338,7 @@ \subsection{\texttt{search}-Befehl}\index{\texttt{search}-Befehl} \texttt{\char`\"}{\em symbol-match}\texttt{\char`\"} [\texttt{/all}] [\texttt{/comments}] [\texttt{/join}] -Dieser Befehl durchsucht alle \texttt{\$a}- und \texttt{\$p}-Anweisungen, die mit {\em label-match} übereinstimmen, nach Vorkommen von {\em symbol-match}. Ein \verb@*@ in {\em label-match} entspricht einem beliebigen Label-Zeichen. Ein \verb@$*@ in {\em symbol-match} passt auf eine beliebige Folge von Symbolen. Die Symbole in {\em symbol-match} müssen durch einen Whitespace getrennt sein. Die Anführungszeichen, die {\em symbol-match} umgeben, können einfache oder doppelte Anführungszeichen sein. Zum Beispiel listet \texttt{search b}\verb@* "-> $* ch"@ alle Anweisungen auf, deren Label mit \texttt{b} beginnen und die Symbole \verb@->@ und \texttt{ch} enthalten, die eine beliebige Symbolfolge umgeben (einschließlich keiner Symbolfolge). Die Platzhalter \texttt{?} und \texttt{\$?} sind auch verfügbar, um einzelne Zeichen in Labels bzw. Symbolen zu finden; siehe \texttt{help search} im Metamath-Programm für Details zu ihrer Verwendung. +Dieser Befehl durchsucht alle \texttt{\$a}- und \texttt{\$p}-Anweisungen, die mit {\em label-match} übereinstimmen, nach Vorkommen von {\em symbol-match}. Ein \verb@*@ in {\em label-match} entspricht einem beliebigen Label-Zeichen. Ein \verb@$*@ in {\em symbol-match} passt auf eine beliebige Folge von Symbolen. Die Symbole in {\em symbol-match} müssen durch einen Whitespace getrennt sein. Die Anführungszeichen, die {\em symbol-match} umgeben, können einfache oder doppelte Anführungszeichen sein. Zum Beispiel listet \texttt{search b}\verb@* "-> $* ch"@ alle Anweisungen auf, deren Label mit \texttt{b} beginnen und die Symbole \verb@->@ und \texttt{ch} enthalten, die eine beliebige Symbolfolge umgeben (einschließlich keiner Symbolfolge). Die Platzhalter \texttt{?} und \texttt{\$?} sind auch verfügbar, um einzelne Zeichen in Labels bzw. Symbolen zu finden; siehe \texttt{help search} im Metamath-Programm für Details zu ihrer Verwendung. Optionale Befehlszeilenparameter: @@ -7354,9 +7355,9 @@ \subsection{\texttt{show proof}-Befehl}\index{\texttt{show proof}-Befehl} Syntax: \texttt{show proof} {\em label-match} [{\em qualifiers} (siehe unten)] -Mit diesem Befehl wird der Beweis der angegebenen \texttt{\$p}-Anweisung\index{\texttt{\$p}-Anweisung} in verschiedenen Formaten angezeigt. Der Parameter {\em label-match} kann Platzhalterzeichen (\verb@$*@) enthalten, um mehrere Anweisungen anzuzeigen. Ohne Optionen ({\em qualifiers}) werden nur die logischen Schritte in einem eingerückten Format angezeigt (d.h. die Syntaxkonstruktionsschritte werden weggelassen). +Mit diesem Befehl wird der Beweis der angegebenen \texttt{\$p}-Anweisung\index{\texttt{\$p}-Anweisung} in verschiedenen Formaten angezeigt. Der Parameter {\em label-match} kann Platzhalterzeichen (\verb@$*@) enthalten, um mehrere Anweisungen anzuzeigen. Ohne Optionen ({\em qualifiers}) werden nur die logischen Schritte in einem eingerückten Format angezeigt (d.h. die Syntaxkonstruktionsschritte werden weggelassen). -In den meisten Fällen werden Sie \texttt{show proof} {\em label} verwenden, um nur die Beweisschritte zu sehen, die logischen Schlussfolgerungen entsprechen. +In den meisten Fällen werden Sie \texttt{show proof} {\em label} verwenden, um nur die Beweisschritte zu sehen, die logischen Schlussfolgerungen entsprechen. Optionale Befehlszeilenparameter: @@ -7397,17 +7398,17 @@ \subsection{\texttt{show usage}-Befehl}\index{\texttt{show usage}-Befehl} Optionaler Befehlszeilenparameter: - \texttt{/recursive} - Dazu gehören auch Anweisungen, deren Beweise letztlich von der angegebenen Anweisung abhängen. + \texttt{/recursive} - Dazu gehören auch Anweisungen, deren Beweise letztlich von der angegebenen Anweisung abhängen. \subsection{\texttt{show trace\_back}-Befehl}\index{\texttt{show trace{\char`\_}back}-Befehl} - + Syntax: \texttt{show trace{\char`\_}back} {\em label-match} [\texttt{/essential}] [\texttt{/axioms}] [\texttt{/tree}] {\\} [\texttt{/depth} {\em number}] -Dieser Befehl listet alle Anweisungen auf, von denen der Beweis der durch {\em label-match} angegebenen Anweisung(en) abhängt. - +Dieser Befehl listet alle Anweisungen auf, von denen der Beweis der durch {\em label-match} angegebenen Anweisung(en) abhängt. + Optionale Befehlszeilenparameter: \texttt{/essential} - Beschränkt die Rückverfolgung auf \texttt{\$e}\index{\texttt{\$e}-Anweisung}-Hypothesen von Beweisbäumen. @@ -7418,20 +7419,20 @@ \subsection{\texttt{show trace\_back}-Befehl}\index{\texttt{show \texttt{/depth} {\em number} - Schränkt die \texttt{/tree}-Rückverfolgung auf die angegebene Einrückungstiefe ein. - \texttt{/count{\char`\_}steps} - Zählt die Anzahl der Schritte, die der Beweis bis zu den Axiomen zurückführt. Wenn \texttt{/essential} angegeben ist, werden Expansionen von Hypothesen vom Variablentyp (Syntaxkonstruktionen) nicht gezählt. + \texttt{/count{\char`\_}steps} - Zählt die Anzahl der Schritte, die der Beweis bis zu den Axiomen zurückführt. Wenn \texttt{/essential} angegeben ist, werden Expansionen von Hypothesen vom Variablentyp (Syntaxkonstruktionen) nicht gezählt. \subsection{\texttt{verify proof}-Befehl}\index{\texttt{verify proof}-Befehl} Syntax: \texttt{verify proof} {\em label-match} [\texttt{/syntax{\char`\_}only}] -Mit diesem Befehl werden die Beweise der angegebenen Aussagen überprüft. Die Option {\em label-match} kann Platzhalterzeichen (\texttt{*}) enthalten, um mehr als einen Beweis zu überprüfen; zum Beispiel wird \verb/*abc*def/ auf alle Labels passen, die \texttt{abc} enthalten und mit \texttt{def} enden. Der Befehl \texttt{verify proof *} prüft alle Beweise in der Datenbasis. +Mit diesem Befehl werden die Beweise der angegebenen Aussagen überprüft. Die Option {\em label-match} kann Platzhalterzeichen (\texttt{*}) enthalten, um mehr als einen Beweis zu überprüfen; zum Beispiel wird \verb/*abc*def/ auf alle Labels passen, die \texttt{abc} enthalten und mit \texttt{def} enden. Der Befehl \texttt{verify proof *} prüft alle Beweise in der Datenbasis. Optionaler Befehlszeilenparameter: \texttt{/syntax{\char`\_}only} - Mit dieser Option wird nur auf Syntax- und RPN-Stack-Verletzungen geprüft. Es wird nicht geprüft, ob der Beweis korrekt ist. Diese Option ist nützlich um schnell festzustellen, welche Beweise unvollständig sind (d.h. in der Entwicklung sind und \texttt{?}'s in ihnen enthalten sind). -{\em Anmerkung:} \texttt{read}, gefolgt von \texttt{verify proof *}, stellt sicher, dass die Datenbasis frei von Fehlern in der Metamath-Sprache ist, überprüft aber nicht die Auszeichnungsnotation in Kommentaren. Sie können die Auszeichnungsnotation auch überprüfen, indem Sie \texttt{verify markup *} ausführen, wie in Abschnitt~\ref{verifymarkup} beschrieben; siehe auch die Diskussion über die Erzeugung von {\sc HTML} in Abschnitt~\ref{htmlout}. +{\em Anmerkung:} \texttt{read}, gefolgt von \texttt{verify proof *}, stellt sicher, dass die Datenbasis frei von Fehlern in der Metamath-Sprache ist, überprüft aber nicht die Auszeichnungsnotation in Kommentaren. Sie können die Auszeichnungsnotation auch überprüfen, indem Sie \texttt{verify markup *} ausführen, wie in Abschnitt~\ref{verifymarkup} beschrieben; siehe auch die Diskussion über die Erzeugung von {\sc HTML} in Abschnitt~\ref{htmlout}. \subsection{\texttt{verify markup}-Befehl}\index{\texttt{verify markup}-Befehl}\label{verifymarkup} @@ -7442,7 +7443,7 @@ \subsection{\texttt{verify markup}-Befehl}\index{\texttt{verify markup}-Befehl}\ [\texttt{/file{\char`\_}skip}] [\texttt{/verbose}] -Dieser Befehl überprüft Kommentarauszeichnungen und andere informelle Konventionen, die wir festgesetzt haben. Er prüft die latexdef-, htmldef- und althtmldef-Anweisungen in der \texttt{\$t}-Anweisung einer Metamath-Quelldatei auf Fehler. Es prüft alle \texttt{`}...\texttt{`}, \texttt{\char`\~}~\textit{Label} und bibliographischen Markierungen in Anweisungsbeschreibungen auf Fehler. Es wird geprüft, ob \texttt{\$p}- und \texttt{\$a}-Anweisungen den gleichen Inhalt haben, wenn ihre Labels mit "`ax"' bzw. "`ax-"' beginnen, aber ansonsten identisch sind, zum Beispiel ax4 und ax-4. Er überprüft auch die Datumsübereinstimmung von "`(Contributed by...)"', "`(Revised by...)"' und "`(Proof shortened by...)"' in dem Kommentar über jeder \texttt{\$a}- und \texttt{\$p}-Anweisung. +Dieser Befehl überprüft Kommentarauszeichnungen und andere informelle Konventionen, die wir festgesetzt haben. Er prüft die latexdef-, htmldef- und althtmldef-Anweisungen in der \texttt{\$t}-Anweisung einer Metamath-Quelldatei auf Fehler. Es prüft alle \texttt{`}...\texttt{`}, \texttt{\char`\~}~\textit{Label} und bibliographischen Markierungen in Anweisungsbeschreibungen auf Fehler. Es wird geprüft, ob \texttt{\$p}- und \texttt{\$a}-Anweisungen den gleichen Inhalt haben, wenn ihre Labels mit "`ax"' bzw. "`ax-"' beginnen, aber ansonsten identisch sind, zum Beispiel ax4 und ax-4. Er überprüft auch die Datumsübereinstimmung von "`(Contributed by...)"', "`(Revised by...)"' und "`(Proof shortened by...)"' in dem Kommentar über jeder \texttt{\$a}- und \texttt{\$p}-Anweisung. Optionale Befehlszeilenparameter: @@ -7460,7 +7461,7 @@ \subsection{\texttt{save proof}-Befehl}\index{\texttt{save proof}-Befehl} Syntax: \texttt{save proof} {\em label-match} [\texttt{/normal}] [\texttt{/compressed}] - Der Befehl \texttt{save proof} formatiert einen Beweis in einem von zwei Formaten neu und ersetzt den vorhandenen Beweis im Quellpuffer\index{Quellpuffer}. Er ist nützlich, um zwischen verschiedenen Formaten von Beweisen zu konvertieren. Beachten Sie, dass ein Beweis erst dann dauerhaft gespeichert wird, wenn Sie den Befehl \texttt{write source} ausführen. + Der Befehl \texttt{save proof} formatiert einen Beweis in einem von zwei Formaten neu und ersetzt den vorhandenen Beweis im Quellpuffer\index{Quellpuffer}. Er ist nützlich, um zwischen verschiedenen Formaten von Beweisen zu konvertieren. Beachten Sie, dass ein Beweis erst dann dauerhaft gespeichert wird, wenn Sie den Befehl \texttt{write source} ausführen. Optionale Befehlszeilenparameter: @@ -7478,13 +7479,13 @@ \section{Beweise erstellen}\label{pfcommands}\index{Beweis-Assistent} Um den Beweis-Assistenten aufzurufen, geben Sie \texttt{prove} {\em label} ein, z.B. \texttt{prove equid}. Metamath antwortet mit der Eingabeaufforderung \texttt{MM-PA>}. -Beweise werden ausgehend von der zu beweisenden Anweisung rückwärts erstellt, wobei hauptsächlich eine Reihe von \texttt{assign}-Befehlen verwendet wird. Ein Beweis ist vollständig, wenn allen Schritten Anweisungen zugewiesen sind und alle Schritte vereinheitlicht wurden und vollständig bekannt sind. Während der Erstellung eines Beweises lässt Metamath nur Operationen zu, die aufgrund der bis dahin bekannten Daten zulässig sind. So wird zum Beispiel kein \texttt{assign} mit einer Anweisung zugelassen, die nicht in den unbekannten Beweisschritt, für den die Zuweisung erfolgen soll, eingesetzt werden kann. +Beweise werden ausgehend von der zu beweisenden Anweisung rückwärts erstellt, wobei hauptsächlich eine Reihe von \texttt{assign}-Befehlen verwendet wird. Ein Beweis ist vollständig, wenn allen Schritten Anweisungen zugewiesen sind und alle Schritte vereinheitlicht wurden und vollständig bekannt sind. Während der Erstellung eines Beweises lässt Metamath nur Operationen zu, die aufgrund der bis dahin bekannten Daten zulässig sind. So wird zum Beispiel kein \texttt{assign} mit einer Anweisung zugelassen, die nicht in den unbekannten Beweisschritt, für den die Zuweisung erfolgen soll, eingesetzt werden kann. -{\em Wichtig:} Der Beweis-Assistent ist kein Werkzeug, das Ihnen hilft, Beweise zu finden. Er ist nur ein Hilfsmittel, das Ihnen hilft, Beweise zur Datenbasis hinzuzufügen. Eine Anleitung dazu finden Sie in Abschnitt~\ref{frstprf}. Um die Verwendung des Beweis-Assistenten zu üben, können Sie ein bestehendes Theorem mit \texttt{prove} bearbeiten, dann alle Schritte mit \texttt{delete all} löschen und den Bewqeis dann mit dem Beweis-Assistenten neu erstellen, während Sie den (vor dem Löschen) angezeigten Beweises betrachten. Es kann sinnvoll sein, die ersten Beweise vollständig selbst zu erarbeiten und von Hand aufzuschreiben, bevor Sie den Beweis-Assistenten benutzen, auch wenn das nicht für jeden geeignet ist. +{\em Wichtig:} Der Beweis-Assistent ist kein Werkzeug, das Ihnen hilft, Beweise zu finden. Er ist nur ein Hilfsmittel, das Ihnen hilft, Beweise zur Datenbasis hinzuzufügen. Eine Anleitung dazu finden Sie in Abschnitt~\ref{frstprf}. Um die Verwendung des Beweis-Assistenten zu üben, können Sie ein bestehendes Theorem mit \texttt{prove} bearbeiten, dann alle Schritte mit \texttt{delete all} löschen und den Bewqeis dann mit dem Beweis-Assistenten neu erstellen, während Sie den (vor dem Löschen) angezeigten Beweises betrachten. Es kann sinnvoll sein, die ersten Beweise vollständig selbst zu erarbeiten und von Hand aufzuschreiben, bevor Sie den Beweis-Assistenten benutzen, auch wenn das nicht für jeden geeignet ist. {\em Wichtig:} Der Befehl \texttt{undo} ist sehr hilfreich bei der Eingabe eines Beweises, da Sie damit einen zuvor eingegebenen Schritt rückgängig machen können. Außerdem empfehlen wir Ihnen, Ihre Arbeit in einer Protokolldatei (\texttt{open log}) festzuhalten und sie regelmäßig zu speichern (\texttt{save new{\char`\_}proof}, \texttt{write source}). Sie können \texttt{delete} verwenden, um ein \texttt{assign} rückgängig zu machen. Sie können auch \texttt{delete floating{\char`\_}hypotheses}, dann \texttt{initialize all} und dann \texttt{unify all /interactive} verwenden, um ungewollte Vereinheitlichungen, die versehentlich oder durch unpassende \texttt{assign}s gemacht wurden, zu reinitialisieren. Sie können ein \texttt{delete} nicht rückgängig machen, es sei denn, Sie verwenden ein entsprechendes \texttt{undo} oder \texttt{exit /force} und rufen dann den Beweis-Assistenten erneut auf, um den letzten \texttt{save new{\char`\_}proof} wiederherzustellen. -Die folgenden Befehle stehen im Proof-Assistenten (an der Eingabeaufforderung \texttt{MM-PA>}) zur Verfügung, um Sie bei der Erstellung Ihres Beweises zu unterstützen. Siehe die einzelnen Befehle für weitere Details. +Die folgenden Befehle stehen im Proof-Assistenten (an der Eingabeaufforderung \texttt{MM-PA>}) zur Verfügung, um Sie bei der Erstellung Ihres Beweises zu unterstützen. Siehe die einzelnen Befehle für weitere Details. \begin{itemize} \item[] @@ -7530,16 +7531,16 @@ \section{Beweise erstellen}\label{pfcommands}\index{Beweis-Assistent} \texttt{set empty{\char`\_}substitution} - Beachten Sie, dass der Standardwert \texttt{off} ist. \end{itemize} -Geben Sie \texttt{exit} ein, um die Eingabeaufforderung \texttt{MM-PA>} zu verlassen und zur Eingabeaufforderung \texttt{MM>} zurückzukehren. Ein weiteres \texttt{exit} beendet dann Metamath komplett. +Geben Sie \texttt{exit} ein, um die Eingabeaufforderung \texttt{MM-PA>} zu verlassen und zur Eingabeaufforderung \texttt{MM>} zurückzukehren. Ein weiteres \texttt{exit} beendet dann Metamath komplett. \subsection{\texttt{prove}-Befehl}\index{\texttt{prove}-Befehl} Syntax: \texttt{prove} {\em label} -Mit diesem Befehl wird der Beweis-Assistent aufgerufen, mit dem Sie den Beweis der angegebenen Aussage erstellen oder bearbeiten können. Die Eingabeaufforderung in der Befehlszeile ändert sich von \texttt{MM>} zu \texttt{MM-PA>}. +Mit diesem Befehl wird der Beweis-Assistent aufgerufen, mit dem Sie den Beweis der angegebenen Aussage erstellen oder bearbeiten können. Die Eingabeaufforderung in der Befehlszeile ändert sich von \texttt{MM>} zu \texttt{MM-PA>}. -Hinweis: In der aktuellen Version (0.177) von Metamath\index{Metamath!Limitationen der Version 0.177} prüft der Beweis-Assistent nicht, ob die Einschränkungen für \texttt{\$d}\index{\texttt{\$d}-Anweisung}-Anweisungen eingehalten werden, während ein Beweis erstellt wird. Nachdem Sie einen Beweis abgeschlossen haben, sollten Sie \texttt{save new{\char`\_}proof} gefolgt von \texttt{verify proof} {\em label} (wobei {\em label} die Anweisung ist, die Sie mit dem Befehl \texttt{prove} beweisen) eingeben, um die \texttt{\$d}-Einschränkungen zu überprüfen. +Hinweis: In der aktuellen Version (0.177) von Metamath\index{Metamath!Limitationen der Version 0.177} prüft der Beweis-Assistent nicht, ob die Einschränkungen für \texttt{\$d}\index{\texttt{\$d}-Anweisung}-Anweisungen eingehalten werden, während ein Beweis erstellt wird. Nachdem Sie einen Beweis abgeschlossen haben, sollten Sie \texttt{save new{\char`\_}proof} gefolgt von \texttt{verify proof} {\em label} (wobei {\em label} die Anweisung ist, die Sie mit dem Befehl \texttt{prove} beweisen) eingeben, um die \texttt{\$d}-Einschränkungen zu überprüfen. Siehe auch: \texttt{exit} @@ -7549,9 +7550,9 @@ \subsection{\texttt{set unification\_timeout}-Befehl}\index{\texttt{set Syntax: \texttt{set unification{\char`\_}timeout} {\em number} -(Dieser Befehl ist auch außerhalb des Beweis-Assistenten verfügbar, wirkt sich aber nur auf den Beweis-Assistenten\index{Beweis-Assistent} aus). +(Dieser Befehl ist auch außerhalb des Beweis-Assistenten verfügbar, wirkt sich aber nur auf den Beweis-Assistenten\index{Beweis-Assistent} aus). -Manchmal meldet der Beweis-Assistent, dass eine Zeitüberschreitung beim Vereinheitlichen aufgetreten ist. Dies kann passieren, wenn Sie versuchen, Formeln mit vielen temporären Variablen\index{temporäre Variable} (\texttt{\$1}, \texttt{\$2}, usw.) zu vereinheitlichen, da die Zeit für die Berechnung aller möglichen Vereinheitlichungen exponentiell mit der Anzahl der Variablen wachsen kann. Wenn Sie möchten, dass Metamath sich mehr Mühe gibt (und Sie bereit sind, länger zu warten), können Sie diesen Parameter erhöhen. \texttt{show settings} zeigt Ihnen den aktuellen Wert an. +Manchmal meldet der Beweis-Assistent, dass eine Zeitüberschreitung beim Vereinheitlichen aufgetreten ist. Dies kann passieren, wenn Sie versuchen, Formeln mit vielen temporären Variablen\index{temporäre Variable} (\texttt{\$1}, \texttt{\$2}, usw.) zu vereinheitlichen, da die Zeit für die Berechnung aller möglichen Vereinheitlichungen exponentiell mit der Anzahl der Variablen wachsen kann. Wenn Sie möchten, dass Metamath sich mehr Mühe gibt (und Sie bereit sind, länger zu warten), können Sie diesen Parameter erhöhen. \texttt{show settings} zeigt Ihnen den aktuellen Wert an. \subsection{\texttt{set empty\_substitution}-Befehl}\index{\texttt{set @@ -7564,28 +7565,28 @@ \subsection{\texttt{set empty\_substitution}-Befehl}\index{\texttt{set empty{\char`\_}substitution off} \end{flushleft} -(Dieser Befehl ist auch außerhalb des Proof-Assistenten verfügbar, wirkt sich aber nur auf den Beweis-Assistenten\index{Beweis-Assistent} aus). +(Dieser Befehl ist auch außerhalb des Proof-Assistenten verfügbar, wirkt sich aber nur auf den Beweis-Assistenten\index{Beweis-Assistent} aus). Die Metamath-Sprache erlaubt es, Variablen durch leere Symbolfolgen\index{leere Substitution} zu ersetzen\index{Substitution!Variable}\index{Variablensubstitution}. In vielen formalen Systemen\index{formales System} wird dies jedoch nie in einem gültigen Beweis vorkommen. Die Berücksichtigung dieser Möglichkeit erhöht die Wahrscheinlichkeit mehrdeutiger Vereinheitlichungen\index{mehrdeutige Vereinheitlichung}\index{Vereinheitlichung!mehrdeutig} während der Beweiserstellung. Standardmäßig sind leere Substitutionen nicht erlaubt; für formale Systeme, die sie erfordern, müssen Sie \texttt{set empty{\char`\_}substitution on} setzen. Ein Beispiel, bei dem dieser Parameter \texttt{on} sein muss, wäre ein System, das eine Deduktionsregel implementiert und in dem Deduktionen von leeren Annahmelisten zulässig wären. Das im Anhang~\ref{MIU} beschriebene MIU-System\index{MIU-System} ist ein weiteres Beispiel. -Es ist besser, diesen Befehl auszuschalten (auf \texttt{off} zu setzen oder zu belassen), wenn Sie mit \texttt{set.mm} arbeiten. Beachten Sie, dass dieser Befehl keinen Einfluss darauf hat, wie Beweise mit dem Befehl \texttt{verify proof} überprüft werden. Außerhalb des Beweis-Assistenten ist die Ersetzung von leeren Sequenzen für mathematische Symbole immer erlaubt. +Es ist besser, diesen Befehl auszuschalten (auf \texttt{off} zu setzen oder zu belassen), wenn Sie mit \texttt{set.mm} arbeiten. Beachten Sie, dass dieser Befehl keinen Einfluss darauf hat, wie Beweise mit dem Befehl \texttt{verify proof} überprüft werden. Außerhalb des Beweis-Assistenten ist die Ersetzung von leeren Sequenzen für mathematische Symbole immer erlaubt. \subsection{\texttt{set search\_limit}-Befehl}\index{\texttt{set -search{\char`\_}limit}-Befehl} +search{\char`\_}limit}-Befehl} Syntax: \texttt{set search{\char`\_}limit} {\em number} -(Dieser Befehl ist auch außerhalb des Proof-Assistenten verfügbar, wirkt sich aber nur auf den Beweis-Assistenten\index{Beweis-Assistent} aus). +(Dieser Befehl ist auch außerhalb des Proof-Assistenten verfügbar, wirkt sich aber nur auf den Beweis-Assistenten\index{Beweis-Assistent} aus). -Dieser Befehl legt einen Parameter fest, der bestimmt, wann der Befehl \texttt{improve} im Modus Beweis-Assistent seine Suche nach Vereinheitlichungen beendet. Wenn Sie möchten, dass \texttt{improve} intensiver sucht, können Sie den Wert erhöhen. Der Befehl \texttt{show settings} zeigt Ihnen den aktuellen Wert an. +Dieser Befehl legt einen Parameter fest, der bestimmt, wann der Befehl \texttt{improve} im Modus Beweis-Assistent seine Suche nach Vereinheitlichungen beendet. Wenn Sie möchten, dass \texttt{improve} intensiver sucht, können Sie den Wert erhöhen. Der Befehl \texttt{show settings} zeigt Ihnen den aktuellen Wert an. \subsection{\texttt{show new\_proof}-Befehl}\index{\texttt{show new{\char`\_}proof}-Befehl} Syntax: \texttt{show new{\char`\_}proof} [{\em Optionen} (siehe unten)] -Dieser Befehl (nur im Modus Beweis-Assistent verfügbar) zeigt den aktuellen Beweis an. Er ist identisch mit dem Befehl \texttt{show proof} mit dem Unterschied, dass es kein Argument für die Aussage gibt (da es sich um die zu beweisende Aussage handelt). Außerdem sind die folgenden Optionen nicht verfügbar: +Dieser Befehl (nur im Modus Beweis-Assistent verfügbar) zeigt den aktuellen Beweis an. Er ist identisch mit dem Befehl \texttt{show proof} mit dem Unterschied, dass es kein Argument für die Aussage gibt (da es sich um die zu beweisende Aussage handelt). Außerdem sind die folgenden Optionen nicht verfügbar: \texttt{/statement{\char`\_}summary} @@ -7610,13 +7611,13 @@ \subsection{\texttt{assign}-Befehl}\index{\texttt{assign}-Befehl} und: \texttt{assign last} {\em label} -Dieser Befehl, der nur im Beweis-Assistenten verfügbar ist, ordnet einem unbekannten (d.h. noch nicht zugeordneten) Schritt (einen mit \texttt{?} in der Auflistung \texttt{show new{\char`\_}proof}) die durch {\em label} angegebene Anweisung zu. Die Zuordnung wird nicht zugelassen, wenn die Anweisung nicht mit dem Schritt vereinheitlicht werden kann. +Dieser Befehl, der nur im Beweis-Assistenten verfügbar ist, ordnet einem unbekannten (d.h. noch nicht zugeordneten) Schritt (einen mit \texttt{?} in der Auflistung \texttt{show new{\char`\_}proof}) die durch {\em label} angegebene Anweisung zu. Die Zuordnung wird nicht zugelassen, wenn die Anweisung nicht mit dem Schritt vereinheitlicht werden kann. -Wenn \texttt{last} anstelle der {\em step}-Nummer angegeben wird, wird der letzte Schritt, der von \texttt{show new{\char`\_}proof /unknown} angezeigt wird, verwendet. Dies kann für die Erstellung eines Beweises mit einer Befehlsdatei nützlich sein (siehe \texttt{help submit}). Es beschleunigt auch das Erstellen von Beweisen, wenn Sie die Zuordnung für den letzten Schritt kennen. +Wenn \texttt{last} anstelle der {\em step}-Nummer angegeben wird, wird der letzte Schritt, der von \texttt{show new{\char`\_}proof /unknown} angezeigt wird, verwendet. Dies kann für die Erstellung eines Beweises mit einer Befehlsdatei nützlich sein (siehe \texttt{help submit}). Es beschleunigt auch das Erstellen von Beweisen, wenn Sie die Zuordnung für den letzten Schritt kennen. -Wenn \texttt{first} anstelle der {\em step}-Nummer angegeben wird, wird der erste Schritt verwendet, der durch \texttt{show new{\char`\_}proof /unknown} angezeigt wird. +Wenn \texttt{first} anstelle der {\em step}-Nummer angegeben wird, wird der erste Schritt verwendet, der durch \texttt{show new{\char`\_}proof /unknown} angezeigt wird. -Wenn {\em step} 0 oder negativ ist, wird der -{\em step}-te von dem letzten unbekannten Schritt, wie durch \texttt{show new{\char`\_}proof /unknown} gezeigt, verwendet. \texttt{assign -1} {\em label} weist den vorletzten unbekannten Schritt zu, \texttt{assign -2} {\em label} den vorvorletzten, und \texttt{assign 0} {\em label} ist dasselbe wie \texttt{assign last} {\em label}. +Wenn {\em step} 0 oder negativ ist, wird der -{\em step}-te von dem letzten unbekannten Schritt, wie durch \texttt{show new{\char`\_}proof /unknown} gezeigt, verwendet. \texttt{assign -1} {\em label} weist den vorletzten unbekannten Schritt zu, \texttt{assign -2} {\em label} den vorvorletzten, und \texttt{assign 0} {\em label} ist dasselbe wie \texttt{assign last} {\em label}. Optionaler Befehlszeilenparameter: @@ -7631,7 +7632,7 @@ \subsection{\texttt{match}-Befehl}\index{\texttt{match}-Befehl} und: \texttt{match all} [\texttt{/essential}] [\texttt{/max{\char`\_}essential{\char`\_}hyp} {\em number}] -Dieser Befehl, der nur im Beweis-Assistenten verfügbar ist, zeigt an, welche Anweisungen mit dem/den angegebenen Schritt(en) vereinigt werden können. {\em Hinweis:} In seiner jetzigen Form ist dieser Befehl nicht sehr nützlich, da er eine große Anzahl von Übereinstimmungen anzeigt. Er kann in Zukunft verbessert werden. In der Zwischenzeit kann der Befehl \texttt{search} oft eine bessere Möglichkeit für das Auffinden von Theoremen von Interesse bieten. +Dieser Befehl, der nur im Beweis-Assistenten verfügbar ist, zeigt an, welche Anweisungen mit dem/den angegebenen Schritt(en) vereinigt werden können. {\em Hinweis:} In seiner jetzigen Form ist dieser Befehl nicht sehr nützlich, da er eine große Anzahl von Übereinstimmungen anzeigt. Er kann in Zukunft verbessert werden. In der Zwischenzeit kann der Befehl \texttt{search} oft eine bessere Möglichkeit für das Auffinden von Theoremen von Interesse bieten. Optionale Befehlszeilenparameter: @@ -7646,7 +7647,7 @@ \subsection{\texttt{let}-Befehl}\index{\texttt{let}-Befehl} und: \texttt{let step} {\em step} = \texttt{\char`\"}{\em symbol-sequence}\texttt{\char`\"} -Diese Befehle, die nur im Beweis-Assistenten\index{Beweis-Assistent} verfügbar sind, weisen einer temporären Variable\index{temporäre Variable} oder einem unbekannten Schritt eine bestimmte Symbolfolge zu. Sie sind während der Erstellung eines Beweises nützlich, wenn Sie wissen, was in dem Beweisschritt enthalten sein soll, der Vereinheitlichungsalgorithmus aber noch nicht genügend Informationen hat, um die temporären Variablen vollständig zu ermitteln. Eine "`temporäre Variable"' ist eine Variable, die in der Beweisanzeige die Form \texttt{\$}{\em nn} hat, wie z.B. \texttt{\$1}, \texttt{\$2}, usw. Die {\em Symbolfolge} kann auch andere unbekannte Variablen enthalten, falls gewünscht. Beispiele: +Diese Befehle, die nur im Beweis-Assistenten\index{Beweis-Assistent} verfügbar sind, weisen einer temporären Variable\index{temporäre Variable} oder einem unbekannten Schritt eine bestimmte Symbolfolge zu. Sie sind während der Erstellung eines Beweises nützlich, wenn Sie wissen, was in dem Beweisschritt enthalten sein soll, der Vereinheitlichungsalgorithmus aber noch nicht genügend Informationen hat, um die temporären Variablen vollständig zu ermitteln. Eine "`temporäre Variable"' ist eine Variable, die in der Beweisanzeige die Form \texttt{\$}{\em nn} hat, wie z.B. \texttt{\$1}, \texttt{\$2}, usw. Die {\em Symbolfolge} kann auch andere unbekannte Variablen enthalten, falls gewünscht. Beispiele: \verb/let variable $32 = "A = B"/ @@ -7656,14 +7657,14 @@ \subsection{\texttt{let}-Befehl}\index{\texttt{let}-Befehl} \verb/let step -2 = "|- ( $7 = ph )"/ -Für den Befehl \texttt{let variable} wird jede beliebige Symbolfolge akzeptiert. Für \texttt{let step} werden nur solche Symbolfolgen akzeptiert, die mit dem Schritt vereinheitlicht werden können. +Für den Befehl \texttt{let variable} wird jede beliebige Symbolfolge akzeptiert. Für \texttt{let step} werden nur solche Symbolfolgen akzeptiert, die mit dem Schritt vereinheitlicht werden können. Die \texttt{let}-Befehle "`knallen"' Informationen in den Beweis, die nur verifiziert werden können, wenn der Beweis weiter aufgebaut wird. Wenn Sie einen \mbox{Fehler} machen, kann die Befehlssequenz \texttt{delete floating{\char`\_}hypotheses}, -\texttt{initialize all} und \texttt{unify all /interactive} eine falsche \texttt{let}-Zuweisung rückgängig machen. +\texttt{initialize all} und \texttt{unify all /interactive} eine falsche \texttt{let}-Zuweisung rückgängig machen. -Wenn {\em step} 0 oder negativ ist, wird der -{\em step}-te vom letzten unbekannten Schritt, wie durch \texttt{show new{\char`\_}proof /unknown} gezeigt, verwendet. Der Befehl \texttt{let step 0} = \texttt{\char`\"}{\em symbol-sequence}\texttt{\char`\"} verwendet den letzten unbekannten Schritt, \texttt{let step -1} = \texttt{\char`\"}{\em symbol-sequence}\texttt{\char`\"} den vorletzten, usw. Wenn {\em step} positiv ist, kann \texttt{let step} verwendet werden, um sowohl bekannte (im Sinne von zuvor mit \texttt{assign} ein Label zugewiesen) als auch unbekannte Schritte zuzuweisen. +Wenn {\em step} 0 oder negativ ist, wird der -{\em step}-te vom letzten unbekannten Schritt, wie durch \texttt{show new{\char`\_}proof /unknown} gezeigt, verwendet. Der Befehl \texttt{let step 0} = \texttt{\char`\"}{\em symbol-sequence}\texttt{\char`\"} verwendet den letzten unbekannten Schritt, \texttt{let step -1} = \texttt{\char`\"}{\em symbol-sequence}\texttt{\char`\"} den vorletzten, usw. Wenn {\em step} positiv ist, kann \texttt{let step} verwendet werden, um sowohl bekannte (im Sinne von zuvor mit \texttt{assign} ein Label zugewiesen) als auch unbekannte Schritte zuzuweisen. -Einfache oder doppelte Anführungszeichen können {\em symbol-sequence} um\-ge\-ben, solange sie sich von allen Anführungszeichen innerhalb einer {\em symbol-sequence} unterscheiden. Wenn {\em symbol-sequence} beide Arten von Anführungs\-zeichen enthält: siehe die Anweisungen am Ende von \texttt{help let} im Metamath-Programm. +Einfache oder doppelte Anführungszeichen können {\em symbol-sequence} um\-ge\-ben, solange sie sich von allen Anführungszeichen innerhalb einer {\em symbol-sequence} unterscheiden. Wenn {\em symbol-sequence} beide Arten von Anführungs\-zeichen enthält: siehe die Anweisungen am Ende von \texttt{help let} im Metamath-Programm. \subsection{\texttt{unify}-Befehl}\index{\texttt{unify}-Befehl} @@ -7672,13 +7673,13 @@ \subsection{\texttt{unify}-Befehl}\index{\texttt{unify}-Befehl} und: \texttt{unify all} [\texttt{/interactive}] -Diese Befehle, die nur im Beweis-Assistenten verfügbar sind, vereinheitlichen die Quelle und das Ziel des/der angegebenen Schrittes/Schritte. Wenn Sie einen bestimmten Schritt angeben, werden Sie aufgefordert, eine der möglichen Vereinheitlichungen auszuwählen. Wenn Sie \texttt{all} angeben, werden nur die Schritte mit eindeutigen Vereinheitlichungen vereinheitlicht. +Diese Befehle, die nur im Beweis-Assistenten verfügbar sind, vereinheitlichen die Quelle und das Ziel des/der angegebenen Schrittes/Schritte. Wenn Sie einen bestimmten Schritt angeben, werden Sie aufgefordert, eine der möglichen Vereinheitlichungen auszuwählen. Wenn Sie \texttt{all} angeben, werden nur die Schritte mit eindeutigen Vereinheitlichungen vereinheitlicht. Optionaler Befehlszeilenparameter für \texttt{unify all}: \texttt{/interactive} - Sie werden aufgefordert, eine der möglichen Vereinheitlichungen für alle Schritte auszuwählen, die keine eindeutigen Vereinheitlichungen haben. (Andernfalls wird \texttt{unify all} diese Schritte übergehen). -Siehe auch \texttt{set unification{\char`\_}timeout}. Der Standardwert ist 100000, aber eine Erhöhung auf 1000000 kann in problematischen Fällen helfen. Die manuelle Zuweisung einiger oder aller unbekannten Variablen mit dem Befehl \texttt{let variable} hilft ebenfalls in schwierigen Fällen. +Siehe auch \texttt{set unification{\char`\_}timeout}. Der Standardwert ist 100000, aber eine Erhöhung auf 1000000 kann in problematischen Fällen helfen. Die manuelle Zuweisung einiger oder aller unbekannten Variablen mit dem Befehl \texttt{let variable} hilft ebenfalls in schwierigen Fällen. \subsection{\texttt{initialize}-Befehl}\index{\texttt{initialize}-Befehl} @@ -7702,11 +7703,11 @@ \subsection{\texttt{delete}-Befehl}\index{\texttt{delete}-Befehl} Diese Befehle sind nur im Beweis-Assistenten verfügbar. -Der Befehl \texttt{delete step} löscht den Abschnitt des Beweisbaums, der von dem angegebenen Schritt abzweigt, und lässt den Schritt unbekannt werden. \texttt{delete all} ist äquivalent zu \texttt{delete step} {\em step}, wobei {\em step} der letzte Schritt im Beweis ist (d.h. \ der Anfang des Beweisbaums). +Der Befehl \texttt{delete step} löscht den Abschnitt des Beweisbaums, der von dem angegebenen Schritt abzweigt, und lässt den Schritt unbekannt werden. \texttt{delete all} ist äquivalent zu \texttt{delete step} {\em step}, wobei {\em step} der letzte Schritt im Beweis ist (d.h. \ der Anfang des Beweisbaums). -In den meisten Fällen ist der Befehl \texttt{undo} die beste Methode, um einen vorherigen Schritt rückgängig zu machen. Eine Alternative ist, den letzten Beweis zu speichern, indem Sie den Beweis-Assistenten verlassen und erneut aufrufen. Damit dies funktioniert, sollten Sie eine Protokolldatei öffnen, um Ihre Arbeit zu protokollieren, und den Befehl \texttt{save new{\char`\_}proof} häufig ausführen, insbesondere vor \texttt{delete}. +In den meisten Fällen ist der Befehl \texttt{undo} die beste Methode, um einen vorherigen Schritt rückgängig zu machen. Eine Alternative ist, den letzten Beweis zu speichern, indem Sie den Beweis-Assistenten verlassen und erneut aufrufen. Damit dies funktioniert, sollten Sie eine Protokolldatei öffnen, um Ihre Arbeit zu protokollieren, und den Befehl \texttt{save new{\char`\_}proof} häufig ausführen, insbesondere vor \texttt{delete}. -\texttt{delete floating{\char`\_}hypotheses} löscht alle Abschnitte des Beweises, die von \texttt{\$f}\index{\texttt{\$f}-Anweisung}-Anweisungen abzweigen. Es ist manchmal nützlich, dies vor einem \texttt{initialize}-Befehl zu tun, um einen Fehler zu beheben. Sobald ein Beweis\-schritt mit einer \texttt{\$f}-Hypothese als Ziel vollständig bekannt ist, kann der Befehl \texttt{improve} normalerweise den Beweis für diesen Schritt ausfüllen. Im Gegensatz zum Löschen von logischen Schritten ist \texttt{delete} \texttt{floating{\char`\_}hypotheses} ein relativ sicherer Befehl, nach dem der Beweis normalerweise leicht wiederhergestellt werden kann. +\texttt{delete floating{\char`\_}hypotheses} löscht alle Abschnitte des Beweises, die von \texttt{\$f}\index{\texttt{\$f}-Anweisung}-Anweisungen abzweigen. Es ist manchmal nützlich, dies vor einem \texttt{initialize}-Befehl zu tun, um einen Fehler zu beheben. Sobald ein Beweis\-schritt mit einer \texttt{\$f}-Hypothese als Ziel vollständig bekannt ist, kann der Befehl \texttt{improve} normalerweise den Beweis für diesen Schritt ausfüllen. Im Gegensatz zum Löschen von logischen Schritten ist \texttt{delete} \texttt{floating{\char`\_}hypotheses} ein relativ sicherer Befehl, nach dem der Beweis normalerweise leicht wiederhergestellt werden kann. \subsection{\texttt{improve}-Befehl}\index{\texttt{improve}-Befehl} @@ -7724,17 +7725,17 @@ \subsection{\texttt{improve}-Befehl}\index{\texttt{improve}-Befehl} und: \texttt{improve all} [\texttt{/depth} {\em number}] [\texttt{/no{\char`\_}distinct}] -Diese Befehle, die nur im Beweis-Assistenten\index{Beweis-Assistent} verfügbar sind, versuchen, automatisch Beweise für unbekannte Schritte zu finden, deren Symbolfolgen vollständig bekannt sind. Sie sind in erster Linie zum Ausfüllen von Beweisen für \texttt{\$f}\index{\texttt{\$f}-Anweisung}-Hypothesen nützlich. Die Suche wird auf Anweisungen beschränkt, die keine \texttt{\$e}\index{\texttt{\$e}-Anweisung}-Hypothesen enthalten. +Diese Befehle, die nur im Beweis-Assistenten\index{Beweis-Assistent} verfügbar sind, versuchen, automatisch Beweise für unbekannte Schritte zu finden, deren Symbolfolgen vollständig bekannt sind. Sie sind in erster Linie zum Ausfüllen von Beweisen für \texttt{\$f}\index{\texttt{\$f}-Anweisung}-Hypothesen nützlich. Die Suche wird auf Anweisungen beschränkt, die keine \texttt{\$e}\index{\texttt{\$e}-Anweisung}-Hypothesen enthalten. \begin{sloppypar} % narrow -Hinweis: Wenn der Speicher begrenzt ist, kann \texttt{improve all} bei einem großen Beweis den Speicher überlaufen lassen. Wenn Sie \texttt{set unification{\char`\_}timeout 1} vor \texttt{improve all} verwenden, wird in der Regel eine ausreichende Verbesserung erzielt, um den Beweis später auf einem größeren Computer leicht wiederherzustellen und mittels \texttt{improve} zu vervollständigen. Warnung: Wenn der Speicher einmal übergelaufen ist, gibt es keine Möglichkeit für eine Wiederherstellung mehr. Speichern Sie im Zweifelsfall den Zwischenbeweis (\texttt{save new{\char`\_}proof} und danach \texttt{write source}) vor \texttt{improve all}. +Hinweis: Wenn der Speicher begrenzt ist, kann \texttt{improve all} bei einem großen Beweis den Speicher überlaufen lassen. Wenn Sie \texttt{set unification{\char`\_}timeout 1} vor \texttt{improve all} verwenden, wird in der Regel eine ausreichende Verbesserung erzielt, um den Beweis später auf einem größeren Computer leicht wiederherzustellen und mittels \texttt{improve} zu vervollständigen. Warnung: Wenn der Speicher einmal übergelaufen ist, gibt es keine Möglichkeit für eine Wiederherstellung mehr. Speichern Sie im Zweifelsfall den Zwischenbeweis (\texttt{save new{\char`\_}proof} und danach \texttt{write source}) vor \texttt{improve all}. \end{sloppypar} -Wenn \texttt{last} anstelle von {\em step} number angegeben wird, wird der letzte Schritt, der durch \texttt{show new{\char`\_}proof /unknown} angezeigt wird, verwendet. +Wenn \texttt{last} anstelle von {\em step} number angegeben wird, wird der letzte Schritt, der durch \texttt{show new{\char`\_}proof /unknown} angezeigt wird, verwendet. -Wenn \texttt{first} anstelle der {\em step} Nummer angegeben wird, wird der erste Schritt verwendet, der durch \texttt{show new{\char`\_}proof /unknown} angezeigt wird. +Wenn \texttt{first} anstelle der {\em step} Nummer angegeben wird, wird der erste Schritt verwendet, der durch \texttt{show new{\char`\_}proof /unknown} angezeigt wird. -Wenn {\em step} 0 oder negativ ist, wird der -{\em step}-te von dem letzten unbekannten Schritt, wie durch \texttt{show new{\char`\_}proof /unknown} gezeigt, verwendet. \texttt{improve -1} verwendet den vorletzten unbekannten Schritt, \texttt{improve -2} {\em label} den vorvorletzten, und \texttt{improve 0} ist dasselbe wie \texttt{improve last}. +Wenn {\em step} 0 oder negativ ist, wird der -{\em step}-te von dem letzten unbekannten Schritt, wie durch \texttt{show new{\char`\_}proof /unknown} gezeigt, verwendet. \texttt{improve -1} verwendet den vorletzten unbekannten Schritt, \texttt{improve -2} {\em label} den vorvorletzten, und \texttt{improve 0} ist dasselbe wie \texttt{improve last}. Optionaler Befehlszeilenparameter: @@ -7750,9 +7751,9 @@ \subsection{\texttt{save new\_proof}-Befehl}\index{\texttt{save Syntax: \texttt{save new{\char`\_}proof} {\em label} [\texttt{/normal}] [\texttt{/compressed}] -Der Befehl \texttt{save new{\char`\_}proof} ist nur im Beweis-Assistenten verfügbar. Er speichert den laufenden Beweis in den Quellpuffer\index{Quellpuffer}. \texttt{save new{\char`\_}proof} kann verwendet werden, um einen fertigen Beweis zu speichern, oder um einen sich in Bearbeitung befindenden Beweis zu speichern, um ihn später weiter zu bearbeiten. Wenn ein unvollständiger Beweis gespeichert wird, gehen alle Benutzerzuweisungen mit \texttt{let step} oder \texttt{let variable} verloren, ebenso wie alle mehrdeutigen Vereinheitlichungen\index{mehrdeutige Vereinheitlichung}\index{Vereinheitlichung!mehrdeutig}, die manuell aufgelöst wurden. Um die Wiederherstellung zu erleichtern, kann es hilfreich sein, \texttt{improve all} vor \texttt{save new{\char`\_}proof} zu verwenden, damit der unvollständige Beweis so viele Informationen wie möglich enthält. +Der Befehl \texttt{save new{\char`\_}proof} ist nur im Beweis-Assistenten verfügbar. Er speichert den laufenden Beweis in den Quellpuffer\index{Quellpuffer}. \texttt{save new{\char`\_}proof} kann verwendet werden, um einen fertigen Beweis zu speichern, oder um einen sich in Bearbeitung befindenden Beweis zu speichern, um ihn später weiter zu bearbeiten. Wenn ein unvollständiger Beweis gespeichert wird, gehen alle Benutzerzuweisungen mit \texttt{let step} oder \texttt{let variable} verloren, ebenso wie alle mehrdeutigen Vereinheitlichungen\index{mehrdeutige Vereinheitlichung}\index{Vereinheitlichung!mehrdeutig}, die manuell aufgelöst wurden. Um die Wiederherstellung zu erleichtern, kann es hilfreich sein, \texttt{improve all} vor \texttt{save new{\char`\_}proof} zu verwenden, damit der unvollständige Beweis so viele Informationen wie möglich enthält. -Beachten Sie, dass der Beweis erst dann dauerhaft gespeichert wird, wenn der Befehl \texttt{write source} aufgwerufen wird. +Beachten Sie, dass der Beweis erst dann dauerhaft gespeichert wird, wenn der Befehl \texttt{write source} aufgwerufen wird. Optionale Befehlszeilenparameter: @@ -7763,9 +7764,9 @@ \subsection{\texttt{save new\_proof}-Befehl}\index{\texttt{save \section{Erstellen von \LaTeX-Ausgaben}\label{texout}\index{latex@{\LaTeX}} -Sie können \LaTeX-Ausgaben anhand der Informationen in einer Datenbasis erzeugen. Die Datenbasis muss bereits die erforderlichen Schriftsatzinformationen enthalten (siehe Abschnitt \ref{tcomment} für die Bereitstellung dieser Informationen). +Sie können \LaTeX-Ausgaben anhand der Informationen in einer Datenbasis erzeugen. Die Datenbasis muss bereits die erforderlichen Schriftsatzinformationen enthalten (siehe Abschnitt \ref{tcomment} für die Bereitstellung dieser Informationen). -Die Befehle \texttt{show statement} und \texttt{show proof} haben jeweils einen spe\-zi\-el\-len \texttt{/tex} Befehlszeilenparameter, der eine \LaTeX-Ausgabe erzeugt (Der Befehl \texttt{show statement} verfügt auch über die Option \texttt{/simple{\char`\_}tex} für eine Ausgabe, die leichter von Hand zu bearbeiten ist). Bevor Sie diese Befehle verwenden können, müssen Sie eine \LaTeX-Datei öffnen, an die Sie ihre Ausgabe senden können. Eine typische vollständige Sitzung verwendet diese Abfolge von Metamath-Befehlen: +Die Befehle \texttt{show statement} und \texttt{show proof} haben jeweils einen spe\-zi\-el\-len \texttt{/tex} Befehlszeilenparameter, der eine \LaTeX-Ausgabe erzeugt (Der Befehl \texttt{show statement} verfügt auch über die Option \texttt{/simple{\char`\_}tex} für eine Ausgabe, die leichter von Hand zu bearbeiten ist). Bevor Sie diese Befehle verwenden können, müssen Sie eine \LaTeX-Datei öffnen, an die Sie ihre Ausgabe senden können. Eine typische vollständige Sitzung verwendet diese Abfolge von Metamath-Befehlen: \begin{verbatim} read set.mm @@ -7777,9 +7778,9 @@ \section{Erstellen von \LaTeX-Ausgaben}\label{texout}\index{latex@{\LaTeX}} close tex \end{verbatim} -Siehe Abschnitt~\ref{mathcomments} für Informationen über Kommentarauszeichnungen und Anhang~\ref{ASCII} für Informationen darüber, wie die Übersetzung von mathematischen Symbolen angegeben wird. +Siehe Abschnitt~\ref{mathcomments} für Informationen über Kommentarauszeichnungen und Anhang~\ref{ASCII} für Informationen darüber, wie die Übersetzung von mathematischen Symbolen angegeben wird. -Um den \LaTeX-Quelltext zu formatieren und zu drucken, benötigen Sie das Programm \LaTeX\, das auf den meisten Linux-Installationen standardmäßig vorhanden und für Windows verfügbar ist. Um unter Linux eine pdf-Datei zu erstellen, geben Sie normalerweise an der Shell-Eingabeaufforderung Folgendes ein +Um den \LaTeX-Quelltext zu formatieren und zu drucken, benötigen Sie das Programm \LaTeX\, das auf den meisten Linux-Installationen standardmäßig vorhanden und für Windows verfügbar ist. Um unter Linux eine pdf-Datei zu erstellen, geben Sie normalerweise an der Shell-Eingabeaufforderung Folgendes ein \begin{verbatim} $ pdflatex example.tex \end{verbatim} @@ -7788,9 +7789,9 @@ \subsection{\texttt{open tex}-Befehl}\index{\texttt{open tex}-Befehl} Syntax: \texttt{open tex} {\em Dateiname} [\texttt{/no{\char`\_}header}] -Dieser Befehl öffnet eine Datei zum Schreiben von \LaTeX-Quelltext\index{latex@{\LaTeX}} und schreibt einen \LaTeX-Header in die Datei. \LaTeX-Quelltext kann mit den Befehlen \texttt{show proof}, \texttt{show new{\char`\_}proof} und \texttt{show statement} unter Verwendung der Option \texttt{/tex} geschrieben werden. +Dieser Befehl öffnet eine Datei zum Schreiben von \LaTeX-Quelltext\index{latex@{\LaTeX}} und schreibt einen \LaTeX-Header in die Datei. \LaTeX-Quelltext kann mit den Befehlen \texttt{show proof}, \texttt{show new{\char`\_}proof} und \texttt{show statement} unter Verwendung der Option \texttt{/tex} geschrieben werden. -Die Zuordnung zu \LaTeX-Symbolen wird in einem speziellen Kommentar definiert, der ein \texttt{\$t}-Token enthält, so wie im Anhang~\ref{ASCII} beschrieben. +Die Zuordnung zu \LaTeX-Symbolen wird in einem speziellen Kommentar definiert, der ein \texttt{\$t}-Token enthält, so wie im Anhang~\ref{ASCII} beschrieben. Es gibt einen optionalen Befehlszeilenparameter: @@ -7801,43 +7802,43 @@ \subsection{\texttt{close tex}-Befehl}\index{\texttt{close tex}-Befehl} Syntax: \texttt{close tex} -Dieser Befehl schreibt einen Trailer in jede \LaTeX-Datei\index{latex@{\LaTeX}}, die mit \texttt{open tex} geöffnet wurde (sofern nicht \texttt{/no{\char`\_}header} mit \texttt{open tex} verwendet wurde) und schließt die \LaTeX-Datei. +Dieser Befehl schreibt einen Trailer in jede \LaTeX-Datei\index{latex@{\LaTeX}}, die mit \texttt{open tex} geöffnet wurde (sofern nicht \texttt{/no{\char`\_}header} mit \texttt{open tex} verwendet wurde) und schließt die \LaTeX-Datei. \section{Erstellen von {\sc HTML}-Ausgaben}\label{htmlout} -Sie können anhand der Informationen in einer Datenbasis Webseiten generieren. Die Datenbasis muss bereits die notwendigen Schriftsatzinformationen enthalten (siehe Abschnitt \ref{tcomment}, wie man diese Informationen bereitstellt). Die Fähigkeit, {\sc html}-Webseiten zu erzeugen, wurde in Metamath Version 0.07.30 hinzugefügt. +Sie können anhand der Informationen in einer Datenbasis Webseiten generieren. Die Datenbasis muss bereits die notwendigen Schriftsatzinformationen enthalten (siehe Abschnitt \ref{tcomment}, wie man diese Informationen bereitstellt). Die Fähigkeit, {\sc html}-Webseiten zu erzeugen, wurde in Metamath Version 0.07.30 hinzugefügt. Um (eine) {\sc html} Ausgabedatei(en) für \texttt{\$a}- oder \texttt{\$p}-Anweisung(en) zu erstellen, verwenden Sie \begin{quote} \texttt{show statement} {\em label-match} \texttt{/html} \end{quote} Die Ausgabedatei erhält für jede Übereinstimmung den Namen\linebreak -{\em label-match}\texttt{.html}. Wenn {\em label-match} Platzhalterzeichen (\texttt{*}) enthält, werden für alle Anweisungen mit übereinstimmenden Labels {\sc html}-Dateien erzeugt. Wenn {\em label-match} einen Platzhalter (\texttt{*}) enthält, werden außerdem zwei zusätzliche Dateien, \texttt{mmdefinitions.html} und \texttt{mmascii.html}, erzeugt. Um nur diese beiden zusätzlichen Dateien zu erzeugen, können Sie anstelle von {\em label-match} \texttt{?*} verwenden, das mit keinem Label einer Anweisung übereinstimmt. +{\em label-match}\texttt{.html}. Wenn {\em label-match} Platzhalterzeichen (\texttt{*}) enthält, werden für alle Anweisungen mit übereinstimmenden Labels {\sc html}-Dateien erzeugt. Wenn {\em label-match} einen Platzhalter (\texttt{*}) enthält, werden außerdem zwei zusätzliche Dateien, \texttt{mmdefinitions.html} und \texttt{mmascii.html}, erzeugt. Um nur diese beiden zusätzlichen Dateien zu erzeugen, können Sie anstelle von {\em label-match} \texttt{?*} verwenden, das mit keinem Label einer Anweisung übereinstimmt. -Es gibt drei weitere Optionen für \texttt{show statement}, die ebenfalls {\sc HTML}-Code erzeugen. Diese sind \texttt{/alt{\char`\_}html}, \texttt{/brief{\char`\_}html} und \texttt{/brief{\char`\_}alt{\char`\_}html}, welche im nächsten Abschnitt beschrieben werden. +Es gibt drei weitere Optionen für \texttt{show statement}, die ebenfalls {\sc HTML}-Code erzeugen. Diese sind \texttt{/alt{\char`\_}html}, \texttt{/brief{\char`\_}html} und \texttt{/brief{\char`\_}alt{\char`\_}html}, welche im nächsten Abschnitt beschrieben werden. -Der Befehl +Der Befehl \begin{quote} \texttt{show statement} {\em label-match} \texttt{/alt{\char`\_}html} \end{quote} -bewirkt das Gleiche wie \texttt{show statement} {\em label-match} \texttt{/html}, außer dass der {\sc html}-Code für die Symbole aus \texttt{althtmldef}-Anweisungen anstelle von \texttt{htmldef}-Anweisungen im \texttt{\$t}-Kommentar entnommen wird. +bewirkt das Gleiche wie \texttt{show statement} {\em label-match} \texttt{/html}, außer dass der {\sc html}-Code für die Symbole aus \texttt{althtmldef}-Anweisungen anstelle von \texttt{htmldef}-Anweisungen im \texttt{\$t}-Kommentar entnommen wird. -Der Befehl -\begin{verbatim} -show statement * /brief_html -\end{verbatim} -ruft einen speziellen Modus auf, der nur Definitions- und Theoremlisten zusammen mit den zugehörigen Symbolen in einem Format ausgibt, das sich zum Kopieren und Einfügen in eine andere Webseite eignet (z. B. in die Tutorial-Seiten auf der Metamath-Website). +Der Befehl +\begin{verbatim} +show statement * /brief_html +\end{verbatim} +ruft einen speziellen Modus auf, der nur Definitions- und Theoremlisten zusammen mit den zugehörigen Symbolen in einem Format ausgibt, das sich zum Kopieren und Einfügen in eine andere Webseite eignet (z. B. in die Tutorial-Seiten auf der Metamath-Website). -Der Befehl +Der Befehl \begin{verbatim} -show statement * /brief_alt_html +show statement * /brief_alt_html \end{verbatim} -bewirkt schließlich dasselbe wie \texttt{show statement * / brief{\char`\_}html} für die alternative {\sc html} Darstellung des Symbols. +bewirkt schließlich dasselbe wie \texttt{show statement * / brief{\char`\_}html} für die alternative {\sc html} Darstellung des Symbols. -Der Kommentar einer Anweisung kann eine spezielle Notation enthalten, die eine gewisse Kontrolle über die {\sc HTML}-Version des Kommentars bietet. Siehe Abschnitt~\ref{mathcomments} (p.~\pageref{mathcomments}) für die Kommentarauszeichnungsfunktionen. +Der Kommentar einer Anweisung kann eine spezielle Notation enthalten, die eine gewisse Kontrolle über die {\sc HTML}-Version des Kommentars bietet. Siehe Abschnitt~\ref{mathcomments} (p.~\pageref{mathcomments}) für die Kommentarauszeichnungsfunktionen. -Die Befehle \texttt{write theorem{\char`\_}list} und \texttt{write bibliography}, die im Folgenden beschrieben werden, bieten als Nebeneffekt eine vollständige Fehlerprüfung für alle in diesem Abschnitt beschriebenen Funktionen.\index{Fehlerprüfung} +Die Befehle \texttt{write theorem{\char`\_}list} und \texttt{write bibliography}, die im Folgenden beschrieben werden, bieten als Nebeneffekt eine vollständige Fehlerprüfung für alle in diesem Abschnitt beschriebenen Funktionen.\index{Fehlerprüfung} \subsection{\texttt{write theorem\_list} -Befehl}\index{\texttt{write theorem{\char`\_}list}-Befehl} @@ -7845,13 +7846,13 @@ \subsection{\texttt{write theorem\_list} Syntax: \texttt{write theorem{\char`\_}list} [\texttt{/theorems{\char`\_}per{\char`\_}page} {\em number}] -Dieser Befehl schreibt eine Liste aller \texttt{\$a}- und \texttt{\$p}-Anweisungen in der Datenbasis in eine Webseitendatei namens \texttt{mmtheorems.html}. Wenn weitere Dateien benötigt werden, heißen sie \texttt{mmtheorems2.html}, \texttt{mmtheorems3.html}, usw. +Dieser Befehl schreibt eine Liste aller \texttt{\$a}- und \texttt{\$p}-Anweisungen in der Datenbasis in eine Webseitendatei namens \texttt{mmtheorems.html}. Wenn weitere Dateien benötigt werden, heißen sie \texttt{mmtheorems2.html}, \texttt{mmtheorems3.html}, usw. Optionaler Befehlszeilenparameter: \texttt{/theorems{\char`\_}per{\char`\_}page} {\em number} - Diese Option gibt die Anzahl der Anweisungen an, die pro Webseite geschrieben werden sollen. Der Standardwert ist 100. -{\em Anmerkung:} In Version 0.177\index{Metamath!Limitationen der Version 0.177} von Metamath setzen die "`Nearby theorems"'-Links auf den einzelnen Webseiten 100 Theoreme pro Seite voraus, wenn sie auf eine Seite mit einer Theoremliste verweisen. Daher führt die Option \texttt{/theorems{\char`\_}per{\char`\_}page}, wenn sie eine andere Zahl als 100 angibt, dazu, dass die einzelnen Webseiten nicht mehr synchron sind, und sollte nicht verwendet werden, um die Haupttheoremliste für die Website zu erzeugen. Dieses Problem wird möglicherweise in einer zukünftigen Version behoben. +{\em Anmerkung:} In Version 0.177\index{Metamath!Limitationen der Version 0.177} von Metamath setzen die "`Nearby theorems"'-Links auf den einzelnen Webseiten 100 Theoreme pro Seite voraus, wenn sie auf eine Seite mit einer Theoremliste verweisen. Daher führt die Option \texttt{/theorems{\char`\_}per{\char`\_}page}, wenn sie eine andere Zahl als 100 angibt, dazu, dass die einzelnen Webseiten nicht mehr synchron sind, und sollte nicht verwendet werden, um die Haupttheoremliste für die Website zu erzeugen. Dieses Problem wird möglicherweise in einer zukünftigen Version behoben. \subsection{\texttt{write bibliography}\label{wrbib} @@ -7859,9 +7860,9 @@ \subsection{\texttt{write bibliography}\label{wrbib} Syntax: \texttt{write bibliography} {\em filename} -Dieser Befehl liest eine bestehende bibliografische Querverweisdatei ein, die normalerweise \texttt{mmbiblio.html} heißt, und aktualisiert sie anhand der bibliografischen Links in den Datenbasiskommentaren. Die Datei wird zwischen den {\sc html} Kommentarzeilen \texttt{} und \texttt{} aktualisiert. Die ursprüngliche Eingabedatei wird in {\em Dateiname}\texttt{{\char`\~}1} umbenannt. +Dieser Befehl liest eine bestehende bibliografische Querverweisdatei ein, die normalerweise \texttt{mmbiblio.html} heißt, und aktualisiert sie anhand der bibliografischen Links in den Datenbasiskommentaren. Die Datei wird zwischen den {\sc html} Kommentarzeilen \texttt{} und \texttt{} aktualisiert. Die ursprüngliche Eingabedatei wird in {\em Dateiname}\texttt{{\char`\~}1} umbenannt. -Ein bibliografischer Verweis wird mit dem Namen der Referenz in Klammern angegeben, z. B. \texttt{Theorem 3.1 aus [Monk] S.\ 22}. Siehe Abschnitt~\ref{htmlout} (p.~\pageref{htmlout}) für Einzelheiten zur Syntax. +Ein bibliografischer Verweis wird mit dem Namen der Referenz in Klammern angegeben, z. B. \texttt{Theorem 3.1 aus [Monk] S.\ 22}. Siehe Abschnitt~\ref{htmlout} (p.~\pageref{htmlout}) für Einzelheiten zur Syntax. \subsection{\texttt{write recent\_additions} @@ -7870,7 +7871,7 @@ \subsection{\texttt{write recent\_additions} Syntax: \texttt{write recent{\char`\_}additions} {\em filename} [\texttt{/limit} {\em number}] -Dieser Befehl liest eine vorhandene Datei "`Recent Additions"' {\sc html} ein, die normalerweise \texttt{mmrecent.html} heißt, und aktualisiert sie mit den Beschreibungen der Theoreme, die der Datenbasis zuletzt hinzugefügt wurden. Die Datei wird zwischen den {\sc html} Kommentarzeilen \texttt{} und \texttt{} aktualisiert. Die ursprüngliche Eingabedatei wird in {\em Dateiname}\texttt{{\char`\~}1} umbenannt. +Dieser Befehl liest eine vorhandene Datei "`Recent Additions"' {\sc html} ein, die normalerweise \texttt{mmrecent.html} heißt, und aktualisiert sie mit den Beschreibungen der Theoreme, die der Datenbasis zuletzt hinzugefügt wurden. Die Datei wird zwischen den {\sc html} Kommentarzeilen \texttt{} und \texttt{} aktualisiert. Die ursprüngliche Eingabedatei wird in {\em Dateiname}\texttt{{\char`\~}1} umbenannt. Optionaler Befehlszeilenparameter: @@ -7883,16 +7884,16 @@ \subsection{\texttt{tools}-Befehl}\index{\texttt{tools}-Befehl} Syntax: \texttt{tools} -Dieser Befehl ruft ein einfach zu bedienendes, universelles Dienstprogramm zur Bearbeitung des Inhalts von Textdateien auf. Nach der Eingabe von \texttt{tools} ändert sich die Eingabeaufforderung in \texttt{TOOLS>}, bis Sie \texttt{exit} eingeben. Mit den \texttt{tools}-Befehlen können Sie einfache, globale Änderungen an einer Ein-/Ausgabedatei vornehmen, z. B. eine Zeichenkettenersetzung in jeder Zeile vornehmen, eine Zeichenkette zu jeder Zeile hinzufügen usw. Eine typische Verwendung dieses Dienstprogramms ist die Erstellung einer \texttt{submit}-Eingabedatei, um eine allgemeine Operation an einer Liste von Anweisungen durchzuführen, die mittels \texttt{show label} oder \texttt{show usage} erzeugt wurde. +Dieser Befehl ruft ein einfach zu bedienendes, universelles Dienstprogramm zur Bearbeitung des Inhalts von Textdateien auf. Nach der Eingabe von \texttt{tools} ändert sich die Eingabeaufforderung in \texttt{TOOLS>}, bis Sie \texttt{exit} eingeben. Mit den \texttt{tools}-Befehlen können Sie einfache, globale Änderungen an einer Ein-/Ausgabedatei vornehmen, z. B. eine Zeichenkettenersetzung in jeder Zeile vornehmen, eine Zeichenkette zu jeder Zeile hinzufügen usw. Eine typische Verwendung dieses Dienstprogramms ist die Erstellung einer \texttt{submit}-Eingabedatei, um eine allgemeine Operation an einer Liste von Anweisungen durchzuführen, die mittels \texttt{show label} oder \texttt{show usage} erzeugt wurde. -Die Aktionen der meisten \texttt{tools}-Befehle können auch mit äquivalenten (und leistungsfähigeren) Unix-Shell-Befehlen ausgeführt werden, und manche Benutzer finden diese vielleicht effizienter. Aber für Windows-Benutzer oder Benutzer, die mit Unix nicht vertraut sind, bietet \texttt{tools} eine leicht zu erlernende Alternative, die für die meisten Aufgaben der Skripterstellung ausreicht, die für die effektive Nutzung des Metamath-Programms erforderlich sind. +Die Aktionen der meisten \texttt{tools}-Befehle können auch mit äquivalenten (und leistungsfähigeren) Unix-Shell-Befehlen ausgeführt werden, und manche Benutzer finden diese vielleicht effizienter. Aber für Windows-Benutzer oder Benutzer, die mit Unix nicht vertraut sind, bietet \texttt{tools} eine leicht zu erlernende Alternative, die für die meisten Aufgaben der Skripterstellung ausreicht, die für die effektive Nutzung des Metamath-Programms erforderlich sind. \subsection{\texttt{help}-Befehl (in \texttt{tools})} Syntax: \texttt{help} -Der Befehl \texttt{help} listet die im Dienstprogramm \texttt{tools} verfügbaren Befehle zusammen mit einer kurzen Beschreibung auf. Für jeden Befehl gibt es wiederum eine eigene Hilfe, wie z. B. \texttt{help add}. Wie bei der \texttt{MM>}-Eingabeaufforderung von Metamath kann ein kompletter Befehl auf einmal eingegeben werden, oder es kann nur das Befehlswort eingegeben werden, woraufhin das Programm nach jedem Argument fragt. +Der Befehl \texttt{help} listet die im Dienstprogramm \texttt{tools} verfügbaren Befehle zusammen mit einer kurzen Beschreibung auf. Für jeden Befehl gibt es wiederum eine eigene Hilfe, wie z. B. \texttt{help add}. Wie bei der \texttt{MM>}-Eingabeaufforderung von Metamath kann ein kompletter Befehl auf einmal eingegeben werden, oder es kann nur das Befehlswort eingegeben werden, woraufhin das Programm nach jedem Argument fragt. \vskip 1ex \noindent Befehle für eine zeilenweise Bearbeitung: @@ -7954,14 +7955,14 @@ \subsection{\texttt{help}-Befehl (in \texttt{tools})} \subsection{Verwendung von \texttt{tools} zur Erstellung von Metamath \texttt{submit}-Skripten} -Der Befehl \texttt{break} Befehl wird normalerweise verwendet, um eine Reihe von Anweisungs-Labels, wie z.B. die Ausgabe von Metamaths \texttt{show usage}, in ein Label pro Zeile aufzubrechen. Die anderen \texttt{tools}-Befehle können dann verwendet werden, um Zeichenketten vor und nach jedem Label einer Anweisung hinzuzufügen, um Befehle anzugeben, die für die Anweisung ausgeführt werden sollen. Der Befehl \texttt{parallel} ist nützlich, wenn ein Label für eine Anweisung mehr als einmal in einer Zeile erwähnt werden muss. +Der Befehl \texttt{break} Befehl wird normalerweise verwendet, um eine Reihe von Anweisungs-Labels, wie z.B. die Ausgabe von Metamaths \texttt{show usage}, in ein Label pro Zeile aufzubrechen. Die anderen \texttt{tools}-Befehle können dann verwendet werden, um Zeichenketten vor und nach jedem Label einer Anweisung hinzuzufügen, um Befehle anzugeben, die für die Anweisung ausgeführt werden sollen. Der Befehl \texttt{parallel} ist nützlich, wenn ein Label für eine Anweisung mehr als einmal in einer Zeile erwähnt werden muss. -Sehr oft erfordert ein Skript für Metamath mehrere Befehlszeilen für jede zu verarbeitende Anweisung. Sie möchten zum Beispiel den Beweis-Assistenten starten, \texttt{minimize{\char`\_}with} für Ihren zuletzt bearbeitetes Theorem ausführen, mit \texttt{save} den neuen Beweis speichern und mit \texttt{exit} den Beweis-Assistenten beenden. Um dies zu erreichen, können Sie eine Datei mit diesen vier Befehlen für jede Anweisung in einer einzigen Zeile erstellen und jeden Befehl durch ein bestimmtes Zeichen wie \texttt{@} abtrennen. Am Ende können Sie dann jedes \texttt{@} mit \texttt{{\char`\\}n} ersetzen, um die Zeilen in einzelne Befehlszeilen aufzulösen (siehe \texttt{help substitute}). +Sehr oft erfordert ein Skript für Metamath mehrere Befehlszeilen für jede zu verarbeitende Anweisung. Sie möchten zum Beispiel den Beweis-Assistenten starten, \texttt{minimize{\char`\_}with} für Ihren zuletzt bearbeitetes Theorem ausführen, mit \texttt{save} den neuen Beweis speichern und mit \texttt{exit} den Beweis-Assistenten beenden. Um dies zu erreichen, können Sie eine Datei mit diesen vier Befehlen für jede Anweisung in einer einzigen Zeile erstellen und jeden Befehl durch ein bestimmtes Zeichen wie \texttt{@} abtrennen. Am Ende können Sie dann jedes \texttt{@} mit \texttt{{\char`\\}n} ersetzen, um die Zeilen in einzelne Befehlszeilen aufzulösen (siehe \texttt{help substitute}). \subsection{Beispiel für eine \texttt{tools}-Sitzung} -Um Ihnen ein schnelles Gefühl für das Dienstprogramm \texttt{tools} zu vermitteln, zeigen wir eine einfache Sitzung, in der wir eine Datei \texttt{n.txt} mit 3 Zeilen erstellen, Zeichenketten vor und nach jeder Zeile hinzufügen und die Zeilen auf dem Bildschirm anzeigen. Sie können mit den verschiedenen Befehlen experimentieren, um Erfahrungen mit dem Dienstprogramm \texttt{tools} zu sammeln. +Um Ihnen ein schnelles Gefühl für das Dienstprogramm \texttt{tools} zu vermitteln, zeigen wir eine einfache Sitzung, in der wir eine Datei \texttt{n.txt} mit 3 Zeilen erstellen, Zeichenketten vor und nach jeder Zeile hinzufügen und die Zeilen auf dem Bildschirm anzeigen. Sie können mit den verschiedenen Befehlen experimentieren, um Erfahrungen mit dem Dienstprogramm \texttt{tools} zu sammeln. \begin{verbatim} MM> tools @@ -7995,11 +7996,11 @@ \subsection{Beispiel für eine \texttt{tools}-Sitzung} \chapter{Beispielhafte Darstellungen} \label{ASCII} -Dieser Anhang enthält eine Auswahl von {\sc ASCII}-Darstellungen, die ent\-spre\-chen\-den traditionellen mathematischen Symbole und eine Erläuterung ihrer Bedeutungen in der Datenbasis \texttt{set.mm}. Die Symbole sind in der Reihenfolge ihres Auftretens aufgeführt. Dies ist nur eine unvollständige Liste, und es werden laufend neue Definitionen hinzugefügt. Eine vollständige Liste finden Sie unter \url{http://metamath.org}. +Dieser Anhang enthält eine Auswahl von {\sc ASCII}-Darstellungen, die ent\-spre\-chen\-den traditionellen mathematischen Symbole und eine Erläuterung ihrer Bedeutungen in der Datenbasis \texttt{set.mm}. Die Symbole sind in der Reihenfolge ihres Auftretens aufgeführt. Dies ist nur eine unvollständige Liste, und es werden laufend neue Definitionen hinzugefügt. Eine vollständige Liste finden Sie unter \url{http://metamath.org}. -Diese {\sc ASCII}-Darstellungen sowie Informationen zu ihrer Anzeige werden in der Datenbasisdatei \texttt{set.mm} in einem speziellen Kommentar namens \texttt{\$t} {\em comment}\index{\texttt{\$t}-Anweisung} oder {\em Schriftsatzkommentar} definiert. Ein Schriftsatzkommentar ist durch die zweistellige Zeichenfolge \texttt{\$t} am Anfang des Kommentars gekennzeichnet. Weitere Informationen finden Sie in Abschnitt~\ref{tcomment}, S.~\pageref{tcomment}. +Diese {\sc ASCII}-Darstellungen sowie Informationen zu ihrer Anzeige werden in der Datenbasisdatei \texttt{set.mm} in einem speziellen Kommentar namens \texttt{\$t} {\em comment}\index{\texttt{\$t}-Anweisung} oder {\em Schriftsatzkommentar} definiert. Ein Schriftsatzkommentar ist durch die zweistellige Zeichenfolge \texttt{\$t} am Anfang des Kommentars gekennzeichnet. Weitere Informationen finden Sie in Abschnitt~\ref{tcomment}, S.~\pageref{tcomment}. -In der folgenden Tabelle zeigt die Spalte "`{\sc ASCII}"' die {\sc ASCII}-Darstellung, "`Symbol"' die mathematisch-symbolische Darstellung, die dieser {\sc ASCII}-Dar\-stel\-lung entspricht, "`Labels"' die Schlüssel-Labels, die die Darstellung de\-fi\-nie\-ren, und "`Beschreibung"' liefert eine Beschreibung des Symbols. Wie üblich ist "`gdw"' die Abkürzung für "`genau dann, wenn"' oder "`dann und nur dann, wenn"'. \index{gdw} In den meisten Fällen zeigt die Spalte "`{\sc ASCII}"' nur das Schlüssel-Token an, aber manchmal wird auch eine Folge von Token angezeigt, wenn dies für die Verständlichkeit notwendig ist. +In der folgenden Tabelle zeigt die Spalte "`{\sc ASCII}"' die {\sc ASCII}-Darstellung, "`Symbol"' die mathematisch-symbolische Darstellung, die dieser {\sc ASCII}-Dar\-stel\-lung entspricht, "`Labels"' die Schlüssel-Labels, die die Darstellung de\-fi\-nie\-ren, und "`Beschreibung"' liefert eine Beschreibung des Symbols. Wie üblich ist "`gdw"' die Abkürzung für "`genau dann, wenn"' oder "`dann und nur dann, wenn"'. \index{gdw} In den meisten Fällen zeigt die Spalte "`{\sc ASCII}"' nur das Schlüssel-Token an, aber manchmal wird auch eine Folge von Token angezeigt, wenn dies für die Verständlichkeit notwendig ist. {\setlength{\extrarowsep}{4pt} % Keep rows from being too close together \begin{longtabu} { @{} c c l X } @@ -8010,9 +8011,9 @@ \chapter{Beispielhafte Darstellungen} \texttt{ph} & $\varphi$ & \texttt{wph} & Die (boolesche) wff-Variable Phi, üblicherweise die erste wff-Variable. \\ \texttt{ps} & $\psi$ & \texttt{wps} & -Die (boolesche) wff-Variable Psi, üblicherweise die zweite wff-Variable. \\ +Die (boolesche) wff-Variable Psi, üblicherweise die zweite wff-Variable. \\ \texttt{ch} & $\chi$ & \texttt{wch} & -Die (boolesche) wff-Variable Chi, üblicherweise die dritte wff-Variable. \\ +Die (boolesche) wff-Variable Chi, üblicherweise die dritte wff-Variable. \\ \texttt{-.} & $\lnot$ & \texttt{wn} & Logisch nicht. Wenn z.B. $\varphi$ wahr ist, dann ist $\lnot \varphi$ falsch. \\ \texttt{->} & $\rightarrow$ & \texttt{wi} & @@ -8036,9 +8037,9 @@ \chapter{Beispielhafte Darstellungen} Es existiert; die wff $\exists x \varphi$ ist wahr, wenn es mindestens ein $x$ gibt, für das $\varphi$ wahr ist. \\ \texttt{[ y / x ]} & $[ y / x ]$ & \hyperref[df-sb]{\texttt{df-sb}} & -Die wff $[ y / x ] \varphi$ ist das Ergebnis, wenn $y$ in $\varphi$ echt durch $x$ ersetzt wird ($y$ ersetzt $x$). -% Dies ist elsb4 -% ( [ x / y ] z e. y <-> z e. x ) +Die wff $[ y / x ] \varphi$ ist das Ergebnis, wenn $y$ in $\varphi$ echt durch $x$ ersetzt wird ($y$ ersetzt $x$). +% Dies ist elsb4 +% ( [ x / y ] z e. y <-> z e. x ) Zum Beispiel ist $[ x / y ] z \in y$ das Gleiche wie $z \in x$. \\ \texttt{E!} & $\exists !$ & \hyperref[df-eu]{\texttt{df-eu}} & @@ -8097,11 +8098,11 @@ \chapter{Beispielhafte Darstellungen} \chapter{Komprimierte Beweise} \label{compressed}\index{komprimierter Beweis}\index{Beweis!komprimiert} -Die Beweise in der Mengenlehre-Datenbasis \texttt{set.mm} werden aus Effizienzgründen in einem komprimierten Format gespeichert. Normalerweise brau\-chen Sie sich nicht um das komprimierte Format zu kümmern, da Sie es mit den üblichen Werkzeugen zur Anzeige von Beweisen im Metamath-Programm (\texttt{show proof}\ldots) anzeigen oder in das normale RPN-Beweisformat konvertieren können, so wie in Abschnitt~\ref{proof} beschrieben (mit \texttt{save proof} {\em label} \texttt{/normal}). Der Vollständigkeit halber beschreiben wir hier jedoch das Format und zeigen, wie es auf das normale RPN-Beweisformat abgebildet wird. +Die Beweise in der Mengenlehre-Datenbasis \texttt{set.mm} werden aus Effizienzgründen in einem komprimierten Format gespeichert. Normalerweise brau\-chen Sie sich nicht um das komprimierte Format zu kümmern, da Sie es mit den üblichen Werkzeugen zur Anzeige von Beweisen im Metamath-Programm (\texttt{show proof}\ldots) anzeigen oder in das normale RPN-Beweisformat konvertieren können, so wie in Abschnitt~\ref{proof} beschrieben (mit \texttt{save proof} {\em label} \texttt{/normal}). Der Vollständigkeit halber beschreiben wir hier jedoch das Format und zeigen, wie es auf das normale RPN-Beweisformat abgebildet wird. Ein komprimierter Beweis, der sich zwischen den Schlüsselwörtern \texttt{\$=} und \texttt{\$.}\ befindet, besteht aus einer linken Klammer, einer Folge von Anweisungs-Labels, einer rechten Klammer und einer Folge von Großbuchstaben \texttt{A} bis \texttt{Z} (mit optionalem Whitespace dazwischen). Die Klammern und die Labels müssen von Whitespace umgeben sein. Die linke Klammer sagt Metamath, dass ein komprimierter Beweis folgt (Ein normaler RPN-Beweis besteht nur aus einer Folge von Labels, und eine Klammer ist kein zulässiges Zeichen in einem Label). -Die Folge von Großbuchstaben entspricht einer Folge von ganzen Zahlen mit der folgenden Zuordnung. Jede ganze Zahl entspricht einem Beweisschritt, wie später beschrieben. +Die Folge von Großbuchstaben entspricht einer Folge von ganzen Zahlen mit der folgenden Zuordnung. Jede ganze Zahl entspricht einem Beweisschritt, wie später beschrieben. \begin{center} \texttt{A} = 1 \\ \texttt{B} = 2 \\ @@ -8122,20 +8123,20 @@ \chapter{Komprimierte Beweise} etc. \end{center} -Mit anderen Worten: \texttt{A} bis \texttt{T} stehen für die niedrigstwertige Ziffer zur Basis 20, und \texttt{U} bis \texttt{Y} stehen für null oder mehr höchstwertige Ziffern zur Basis 5, wobei die Ziffern bei 1 anstelle der üblichen 0 beginnen. Bei diesem Schema brauchen wir keinen Whitespace zwischen diesen "`Ziffern"'. +Mit anderen Worten: \texttt{A} bis \texttt{T} stehen für die niedrigstwertige Ziffer zur Basis 20, und \texttt{U} bis \texttt{Y} stehen für null oder mehr höchstwertige Ziffern zur Basis 5, wobei die Ziffern bei 1 anstelle der üblichen 0 beginnen. Bei diesem Schema brauchen wir keinen Whitespace zwischen diesen "`Ziffern"'. (Beim Entwurf des komprimierten Beweisformats wurden nur Großbuchstaben gewählt, im Gegensatz zu allen druckbaren nicht-Whitespace {\sc ascii}-Zeichen außer %\texttt{\$}, was chosen to make the compressed proof a little less %displeasing to the eye, at the expense of a typical 20\% compression -\texttt{\$}, um nicht mit der Suchfunktion der meisten Texteditorn in Konflikt zu geraten. Dadurch wird ein Kompressionsverlust von typischerweise 20\% i Kauf genommen. Die Gruppierung Basis 5/Basis 20 wurde gewählt, z.B. statt Basis 6/Basis 19, nachdem experimentell die Gruppierung ermittelt wurde, die in typischen Fällen die beste Kompression ergab). +\texttt{\$}, um nicht mit der Suchfunktion der meisten Texteditorn in Konflikt zu geraten. Dadurch wird ein Kompressionsverlust von typischerweise 20\% i Kauf genommen. Die Gruppierung Basis 5/Basis 20 wurde gewählt, z.B. statt Basis 6/Basis 19, nachdem experimentell die Gruppierung ermittelt wurde, die in typischen Fällen die beste Kompression ergab). -Der Buchstabe \texttt{Z} kennzeichnet ("`taggt"') einen Beweisschritt, der mit einem später im Beweis vorkommenden Schritt übereinstimmt; dadurch wird ein Beweis verkürzt, indem identische Beweisschritte nicht immer wieder erneut bewiesen werden müssen (was bei der Erstellung von wff's häufig vorkommt). Das \texttt{Z} wird unmittelbar nach der niedrigstwertigen Ziffer (Buchstaben \texttt{A} bis \texttt{T}) platziert, die die ganze Zahl beendet, die dem Schritt entspricht, auf den später verwiesen werden soll. +Der Buchstabe \texttt{Z} kennzeichnet ("`taggt"') einen Beweisschritt, der mit einem später im Beweis vorkommenden Schritt übereinstimmt; dadurch wird ein Beweis verkürzt, indem identische Beweisschritte nicht immer wieder erneut bewiesen werden müssen (was bei der Erstellung von wff's häufig vorkommt). Das \texttt{Z} wird unmittelbar nach der niedrigstwertigen Ziffer (Buchstaben \texttt{A} bis \texttt{T}) platziert, die die ganze Zahl beendet, die dem Schritt entspricht, auf den später verwiesen werden soll. -Die ganzen Zahlen, denen die Großbuchstaben entsprechen, werden wie folgt auf Labels abgebildet. Wenn die zu beweisende Aussage $m$ zwingende Hypothesen hat, entsprechen die ganzen Zahlen 1 bis $m$ den Labels dieser Hypothesen in der Reihenfolge, die durch den Befehl \texttt{show statement ... / full} angezeigt werden, d.h. der RPN-Reihenfolge\index{RPN-Reihenfolge} der zwingenden Hypothesen. Die ganzen Zahlen $m+1$ bis $m+n$ entsprechen den in den Klammern des komprimierten Beweises eingeschlossenen Labels, und zwar in der Reihenfolge ihres Auftretens, wobei $n$ die Anzahl dieser Labels ist. Ganze Zahlen ab $m+n+1$ entsprechen nicht direkt den Labels der Anweisung, sondern verweisen auf Beweisschritte, die mit dem Buchstaben \texttt{Z} gekennzeichnet sind, so dass auf diese Beweisschritte später im Beweis Bezug genommen werden kann. Die ganze Zahl $m+n+1$ entspricht dem ersten Schritt, der mit einem \texttt{Z} gekennzeichnet ist, $m+n+2$ dem zweiten Schritt, der mit einem \texttt{Z} gekennzeichnet ist, usw. Wenn der komprimierte Beweis in einen normalen Beweis umgewandelt wird, ersetzt der gesamte Teilbeweis eines mit \texttt{Z} gekennzeichneten Schritts die Referenz auf diesen Schritt. +Die ganzen Zahlen, denen die Großbuchstaben entsprechen, werden wie folgt auf Labels abgebildet. Wenn die zu beweisende Aussage $m$ zwingende Hypothesen hat, entsprechen die ganzen Zahlen 1 bis $m$ den Labels dieser Hypothesen in der Reihenfolge, die durch den Befehl \texttt{show statement ... / full} angezeigt werden, d.h. der RPN-Reihenfolge\index{RPN-Reihenfolge} der zwingenden Hypothesen. Die ganzen Zahlen $m+1$ bis $m+n$ entsprechen den in den Klammern des komprimierten Beweises eingeschlossenen Labels, und zwar in der Reihenfolge ihres Auftretens, wobei $n$ die Anzahl dieser Labels ist. Ganze Zahlen ab $m+n+1$ entsprechen nicht direkt den Labels der Anweisung, sondern verweisen auf Beweisschritte, die mit dem Buchstaben \texttt{Z} gekennzeichnet sind, so dass auf diese Beweisschritte später im Beweis Bezug genommen werden kann. Die ganze Zahl $m+n+1$ entspricht dem ersten Schritt, der mit einem \texttt{Z} gekennzeichnet ist, $m+n+2$ dem zweiten Schritt, der mit einem \texttt{Z} gekennzeichnet ist, usw. Wenn der komprimierte Beweis in einen normalen Beweis umgewandelt wird, ersetzt der gesamte Teilbeweis eines mit \texttt{Z} gekennzeichneten Schritts die Referenz auf diesen Schritt. -Aus Effizienzgründen arbeitet Metamath direkt mit komprimierten Beweisen, ohne sie intern in normale Beweise umzuwandeln. Zusätzlich zur üblichen Fehlerprüfung wird eine Fehlermeldung ausgegeben, wenn (1) ein Label in der Label-Liste in Klammern nicht auf eine vorherige \texttt{\$p}- oder \texttt{\$a}-Anweisung oder eine nicht zwingende Hypothese der zu beweisenden Anweisung verweist und (2) ein mit \texttt{Z} markierter Beweisschritt vor dem mit \texttt{Z} markierten Schritt referenziert wird. +Aus Effizienzgründen arbeitet Metamath direkt mit komprimierten Beweisen, ohne sie intern in normale Beweise umzuwandeln. Zusätzlich zur üblichen Fehlerprüfung wird eine Fehlermeldung ausgegeben, wenn (1) ein Label in der Label-Liste in Klammern nicht auf eine vorherige \texttt{\$p}- oder \texttt{\$a}-Anweisung oder eine nicht zwingende Hypothese der zu beweisenden Anweisung verweist und (2) ein mit \texttt{Z} markierter Beweisschritt vor dem mit \texttt{Z} markierten Schritt referenziert wird. -Wie bei einem normalen Beweis in der Entwicklung (Abschnitt~\ref{unknown}) kann jeder Schritt oder Teilbeweis, der noch nicht bekannt ist, mit einem einzigen \texttt{?} dargestellt werden. Zwischen dem \texttt{?}\ und den Großbuchstaben (oder anderen \texttt{?}'s), die den Rest des Beweises darstellen, muss kein Whitespace eingefügt sein. +Wie bei einem normalen Beweis in der Entwicklung (Abschnitt~\ref{unknown}) kann jeder Schritt oder Teilbeweis, der noch nicht bekannt ist, mit einem einzigen \texttt{?} dargestellt werden. Zwischen dem \texttt{?}\ und den Großbuchstaben (oder anderen \texttt{?}'s), die den Rest des Beweises darstellen, muss kein Whitespace eingefügt sein. % April 1, 2004 Appendix C has been added back in with corrections. % @@ -8310,16 +8311,16 @@ \section{Einführung} \flushright\sc Antoine de Saint-Exupery\footnote{Nach \cite[S.~3-25]{Campbell}.}\\ \end{quote}\index{de Saint-Exupery, Antoine} -Dieser Anhang beschreibt die Theorie hinter der Metamath-Sprache in einer abstrakten Form, die für Mathematiker gedacht ist. Konkret konstruieren wir zwei Mengen-theoretische Objekte: ein "`formales System"' (grob gesagt, eine Menge von Syntaxregeln, Axiomen und logischen Regeln) und sein "`Universum"' (grob gesagt, die Menge der Theoreme, die im formalen System ableitbar sind). Die Computersprache Metamath bietet uns eine Möglichkeit, bestimmte formale Systeme zu beschreiben und mit Hilfe eines vom Benutzer bereitgestellten Beweises zu überprüfen, ob gegebene Theoreme zu ihren Universen gehören. +Dieser Anhang beschreibt die Theorie hinter der Metamath-Sprache in einer abstrakten Form, die für Mathematiker gedacht ist. Konkret konstruieren wir zwei Mengen-theoretische Objekte: ein "`formales System"' (grob gesagt, eine Menge von Syntaxregeln, Axiomen und logischen Regeln) und sein "`Universum"' (grob gesagt, die Menge der Theoreme, die im formalen System ableitbar sind). Die Computersprache Metamath bietet uns eine Möglichkeit, bestimmte formale Systeme zu beschreiben und mit Hilfe eines vom Benutzer bereitgestellten Beweises zu überprüfen, ob gegebene Theoreme zu ihren Universen gehören. -Um diesen Anhang zu verstehen, benötigen Sie Grundkenntnisse der informellen Mengenlehre. Es sollte ausreichen, z.B. Kap.\ 1 von Munkres' {\em Topology} zu verstehen\cite{Munkres}\index{Munkres, James R.} oder das einführende Kapitel zur Mengenlehre in vielen Lehrbüchern, die in die abstrakte Mathematik einführen. (Beachten Sie, dass es zwischen den Autoren kleinere Unterschiede in der Schreibweise gibt; z.B. verwendet Munkres $\subset$ anstelle unseres $\subseteq$ für "`subset"'. Wir verwenden "`enthalten in"' für "`eine Teilmenge von"' und "`gehört zu"' oder "`ist enthalten in"' für "`ist ein Element von"'). Was wir hier als "`formale"' Beschreibung bezeichnen, ist anders als früher, eigentlich eine informelle Beschreibung in der gewöhnlichen Sprache der Mathematiker. Wir geben jedoch genügend Details an, so dass ein Mathematiker sie leicht formalisieren kann, sogar in der Sprache von Metamath selbst, falls gewünscht. Um die Logikbeispiele am Ende dieses Anhangs zu verstehen, wäre die Kenntnis eines einführenden Buches über mathematische Logik hilfreich. +Um diesen Anhang zu verstehen, benötigen Sie Grundkenntnisse der informellen Mengenlehre. Es sollte ausreichen, z.B. Kap.\ 1 von Munkres' {\em Topology} zu verstehen\cite{Munkres}\index{Munkres, James R.} oder das einführende Kapitel zur Mengenlehre in vielen Lehrbüchern, die in die abstrakte Mathematik einführen. (Beachten Sie, dass es zwischen den Autoren kleinere Unterschiede in der Schreibweise gibt; z.B. verwendet Munkres $\subset$ anstelle unseres $\subseteq$ für "`subset"'. Wir verwenden "`enthalten in"' für "`eine Teilmenge von"' und "`gehört zu"' oder "`ist enthalten in"' für "`ist ein Element von"'). Was wir hier als "`formale"' Beschreibung bezeichnen, ist anders als früher, eigentlich eine informelle Beschreibung in der gewöhnlichen Sprache der Mathematiker. Wir geben jedoch genügend Details an, so dass ein Mathematiker sie leicht formalisieren kann, sogar in der Sprache von Metamath selbst, falls gewünscht. Um die Logikbeispiele am Ende dieses Anhangs zu verstehen, wäre die Kenntnis eines einführenden Buches über mathematische Logik hilfreich. \section{Die formale Beschreibung} \subsection[Vorbereitende Maßnahmen]{Vorbereitende Maßnahmen\protect\footnotemark}% \footnotetext{Dieser Abschnitt ist größtenteils wörtlich von Tarski\cite[p.~63]{Tarski1965}\index{Tarski, Alfred} übernommen und frei übersetzt.} -Mit $\omega$ bezeichnen wir die Menge aller natürlichen Zahlen (nichtnegative ganze Zahlen). Jede natürliche Zahl $n$ wird mit der Menge aller kleineren Zahlen identifiziert: $n = \{ m | m < n \}$. Die Formel $m < n$ ist also äquivalent zu der Bedingung: $m \in n$ und $m,n \in \omega$. Insbesondere ist 0 die Zahl Null und zugleich die leere Menge $\varnothing$, $1=\{0\}$, $2=\{0,1\}$ usw. ${}^B A$ bezeichnet die Menge aller Funktionen von $B$ nach $A$ (d.h. \ mit dem Definitionsbereich $B$ und einem in $A$ enthaltenen Wertebereich). Die Elemente von ${}^\omega A$ sind so genannte {\em einfache unendliche Folgen},\index{einfache unendliche Folge} mit allen {\em Gliedern}\index{Glied} in $A$. Für den Fall $n \in \omega$ werden die Elemente von ${}^n A$ als {\em endliche $n$-gliedrige Folgen},\index{endliche $n$-gliedrige Folge} bezeichnet, wiederum mit Gliedern in $A$. Die aufeinanderfolgenden Glieder (Funktionswerte) einer endlichen oder unendlichen Folge $f$ werden mit $f_0, f_1, \ldots ,f_n,\ldots$ bezeichnet. Jede endliche Folge $f \in \bigcup _{n \in \omega} {}^n A$ bestimmt eindeutig die Zahl $n$, so dass $f \in {}^n A$; $n$ heißt die {\em Länge}\index{Länge einer Folge ({$"|\"|$})} von $f$ und wird mit $|f|$ bezeichnet. $\langle a \rangle$ ist die Folge $f$ mit $|f|=1$ und $f_0=a$; $\langle a,b \rangle$ ist die Folge $f$ mit $|f|=2$, $f_0=a$, $f_1=b$; usw. Für zwei gegebene endliche Folgen $f$ und $g$ bezeichnen wir mit $f\frown g$ ihre {\em Verkettung},\index{Verkettung} d.h. die endliche Folge $h$, die durch die folgende Bedingungen bestimmt ist: +Mit $\omega$ bezeichnen wir die Menge aller natürlichen Zahlen (nichtnegative ganze Zahlen). Jede natürliche Zahl $n$ wird mit der Menge aller kleineren Zahlen identifiziert: $n = \{ m | m < n \}$. Die Formel $m < n$ ist also äquivalent zu der Bedingung: $m \in n$ und $m,n \in \omega$. Insbesondere ist 0 die Zahl Null und zugleich die leere Menge $\varnothing$, $1=\{0\}$, $2=\{0,1\}$ usw. ${}^B A$ bezeichnet die Menge aller Funktionen von $B$ nach $A$ (d.h. \ mit dem Definitionsbereich $B$ und einem in $A$ enthaltenen Wertebereich). Die Elemente von ${}^\omega A$ sind so genannte {\em einfache unendliche Folgen},\index{einfache unendliche Folge} mit allen {\em Gliedern}\index{Glied} in $A$. Für den Fall $n \in \omega$ werden die Elemente von ${}^n A$ als {\em endliche $n$-gliedrige Folgen},\index{endliche $n$-gliedrige Folge} bezeichnet, wiederum mit Gliedern in $A$. Die aufeinanderfolgenden Glieder (Funktionswerte) einer endlichen oder unendlichen Folge $f$ werden mit $f_0, f_1, \ldots ,f_n,\ldots$ bezeichnet. Jede endliche Folge $f \in \bigcup _{n \in \omega} {}^n A$ bestimmt eindeutig die Zahl $n$, so dass $f \in {}^n A$; $n$ heißt die {\em Länge}\index{Länge einer Folge ({$"|\"|$})} von $f$ und wird mit $|f|$ bezeichnet. $\langle a \rangle$ ist die Folge $f$ mit $|f|=1$ und $f_0=a$; $\langle a,b \rangle$ ist die Folge $f$ mit $|f|=2$, $f_0=a$, $f_1=b$; usw. Für zwei gegebene endliche Folgen $f$ und $g$ bezeichnen wir mit $f\frown g$ ihre {\em Verkettung},\index{Verkettung} d.h. die endliche Folge $h$, die durch die folgende Bedingungen bestimmt ist: \begin{eqnarray*} & |h| = |f|+|g|;& \\ & h_n = f_n & \mbox{\ for\ } n < |f|; \\ @@ -8328,32 +8329,32 @@ \section{Die formale Beschreibung} \subsection{Konstanten, Variablen und Ausdrücke} -Ein formales System hat eine Menge von {\em Symbolen}\index{Symbol!in einem formalen System}, die mit $\mbox{\em SM}$ bezeichnet wird. Eine genaue mengentheoretische Definition dieser Menge ist unwichtig; ein Symbol kann als primitives oder atomares Element betrachtet werden, wenn man will. Wir nehmen an, dass diese Menge in zwei disjunkte Teilmengen unterteilt ist: eine Menge $\mbox{\em CN}$ von {\em Konstanten}\index{Konstante!in einem formalen System} und eine Menge $\mbox{\em VR}$ von {\em Variablen}\index{Variable!in einem formalen System}. $\mbox{\em CN}$ und $\mbox{\em VR}$ bestehen jeweils aus abzählbar vielen Symbolen, die in endlichen oder einfachen unendlichen Folgen $c_0, c_1, \ldots$ bzw. $v_0, v_1, \ldots$ ohne Wiederholumgen angeordnet werden können. Beliebige Symbole werden wir durch Metavariablen $\alpha$, $\beta$ usw. darstellen. +Ein formales System hat eine Menge von {\em Symbolen}\index{Symbol!in einem formalen System}, die mit $\mbox{\em SM}$ bezeichnet wird. Eine genaue mengentheoretische Definition dieser Menge ist unwichtig; ein Symbol kann als primitives oder atomares Element betrachtet werden, wenn man will. Wir nehmen an, dass diese Menge in zwei disjunkte Teilmengen unterteilt ist: eine Menge $\mbox{\em CN}$ von {\em Konstanten}\index{Konstante!in einem formalen System} und eine Menge $\mbox{\em VR}$ von {\em Variablen}\index{Variable!in einem formalen System}. $\mbox{\em CN}$ und $\mbox{\em VR}$ bestehen jeweils aus abzählbar vielen Symbolen, die in endlichen oder einfachen unendlichen Folgen $c_0, c_1, \ldots$ bzw. $v_0, v_1, \ldots$ ohne Wiederholumgen angeordnet werden können. Beliebige Symbole werden wir durch Metavariablen $\alpha$, $\beta$ usw. darstellen. {\footnotesize\begin{quotation} {\em Kommentar:} Die Variablen $v_0, v_1, \ldots$ unseres formalen Systems ent\-spre\-chen dem, was in der Literatur zu spezifischen formalen Systemen gewöhnlich als "`Metavariablen"' bezeichnet wird. Typischerweise wird bei der Beschreibung eines bestimmten formalen Systems in einem Buch eine Reihe von primitiven Objekten postuliert, die Variablen genannt werden, und dann werden deren Eigenschaften mit Hilfe von Metavariablen beschrieben, die sich über diese erstrecken, wobei die eigentlichen Variablen selbst nie wieder erwähnt werden. Unser formales System erwähnt diese primitiven, Variablen genannte Objekte überhaupt nicht, sondern befasst sich von Anfang an direkt mit Metavariablen als seine primitiven Objekten. Dies ist ein subtiler, aber wichtiger Unterschied, den man im Auge behalten sollte. Denn dadurch unterscheidet sich unsere Definition von "`formalem System"' etwas von denen, die man normalerweise in der Literatur findet. (So sind die oben genannten Metavariablen $\alpha$, $\beta$ usw.\ eigentlich "`Metametavariablen"', wenn sie zur Darstellung von $v_0, v_1, \ldots$ verwendet werden.) \end{quotation}} -Endliche Folgen, bei denen alle Glieder Symbole sind, heißen {\em-Ausdrücke}.\index{Ausdruck!in einem formalen System} $\mbox{\em EX}$ ist die Menge aller Ausdrücke; also +Endliche Folgen, bei denen alle Glieder Symbole sind, heißen {\em-Ausdrücke}.\index{Ausdruck!in einem formalen System} $\mbox{\em EX}$ ist die Menge aller Ausdrücke; also \begin{displaymath} \mbox{\em EX} = \bigcup _{n \in \omega} {}^n \mbox{\em SM}. \end{displaymath} -Ein {\em konstant-gepräfixter Ausdruck}\index{konstant-gepräfixter Ausdruck} ist ein Ausdruck der Länge ungleich Null, dessen erstes Glied eine Konstante ist. Wir bezeichnen die Menge aller konstant-gepräfixter Ausdrücke mit $\mbox{\em EX}_C = \{ e \in \mbox{\em EX} | ( |e| > 0 \wedge e_0 \in \mbox{\em CN} ) \}$. +Ein {\em konstant-gepräfixter Ausdruck}\index{konstant-gepräfixter Ausdruck} ist ein Ausdruck der Länge ungleich Null, dessen erstes Glied eine Konstante ist. Wir bezeichnen die Menge aller konstant-gepräfixter Ausdrücke mit $\mbox{\em EX}_C = \{ e \in \mbox{\em EX} | ( |e| > 0 \wedge e_0 \in \mbox{\em CN} ) \}$. -Ein {\em Konstante-Variable-Paar}\index{Konstante-Variable-Paar} ist ein Ausdruck der Länge 2, dessen erstes Glied eine Konstante ist und dessen zweites Glied eine Variable ist. Wir bezeichnen die Menge aller Konstanten-Variablen-Paare mit $\mbox{\em EX}_2 = \{ e \in \mbox{\em EX}_C | ( |e| = 2 \wedge e_1 \in \mbox{\em VR} ) \}$. +Ein {\em Konstante-Variable-Paar}\index{Konstante-Variable-Paar} ist ein Ausdruck der Länge 2, dessen erstes Glied eine Konstante ist und dessen zweites Glied eine Variable ist. Wir bezeichnen die Menge aller Konstanten-Variablen-Paare mit $\mbox{\em EX}_2 = \{ e \in \mbox{\em EX}_C | ( |e| = 2 \wedge e_1 \in \mbox{\em VR} ) \}$. {\footnotesize\begin{quotation} {\em Beziehung zu Metamath:} Im Allgemeinen entspricht die Menge $\mbox{\em SM}$ der Menge der deklarierten mathematischen Symbole in einer Metamath-Datenbasis, die Menge $\mbox{\em CN}$ denjenigen Symbolen, die mit \texttt{\$c}-Anweisungen deklariert sind, und die Menge $\mbox{\em VR}$ denjenigen Symbolen, die mit \texttt{\$v}-Anweisungen deklariert sind. Natürlich kann eine Metamath-Datenbasis nur eine endliche Anzahl von mathematischen Symbolen haben, während formale Systeme im Allgemeinen eine unendliche Anzahl haben können, obwohl die Anzahl der in Metamath verfügbaren mathematischen Symbole im Prinzip unbegrenzt ist. Die Menge $\mbox{\em EX}_C$ entspricht der Menge der zulässigen Ausdrücke für \texttt{\$e}-, \texttt{\$a}- und \texttt{\$p}-Anweisungen. Die Menge $\mbox{\em EX}_2$ entspricht der Menge der zulässigen Ausdrücke für \texttt{\$f}-Anweisungen. \end{quotation}} -Wir bezeichnen mit ${\cal V}(e)$ die Menge aller Variablen in einem Ausdruck $e \in \mbox{\em EX}$, d.h. die Menge aller $\alpha \in \mbox{\em VR}$, so dass $\alpha = e_n$ für mindestens ein $n < |e|$. Wir bezeichnen auch (unter Missbrauch der Notation) mit ${\cal V}(E)$ die Menge aller Variablen in einer Sammlung von Ausdrücken $E \subseteq \mbox{\em EX}$, d.h.\ $\bigcup _{e \in E} {\cal V}(e)$. +Wir bezeichnen mit ${\cal V}(e)$ die Menge aller Variablen in einem Ausdruck $e \in \mbox{\em EX}$, d.h. die Menge aller $\alpha \in \mbox{\em VR}$, so dass $\alpha = e_n$ für mindestens ein $n < |e|$. Wir bezeichnen auch (unter Missbrauch der Notation) mit ${\cal V}(E)$ die Menge aller Variablen in einer Sammlung von Ausdrücken $E \subseteq \mbox{\em EX}$, d.h.\ $\bigcup _{e \in E} {\cal V}(e)$. \subsection{Substitution} -Bei einer Funktion $F$ von $\mbox{\em VR}$ nach $\mbox{\em EX}$ bezeichnen wir mit $\sigma_{F}$ oder einfach $\sigma$ die Funktion von $\mbox{\em EX}$ nach $\mbox{\em EX}$, die rekursiv für nichtleere Folgen durch +Bei einer Funktion $F$ von $\mbox{\em VR}$ nach $\mbox{\em EX}$ bezeichnen wir mit $\sigma_{F}$ oder einfach $\sigma$ die Funktion von $\mbox{\em EX}$ nach $\mbox{\em EX}$, die rekursiv für nichtleere Folgen durch \begin{eqnarray*} & \sigma(<\alpha>) = F(\alpha) & \mbox{mit\ } \alpha \in \mbox{\em VR}; \\ & \sigma(<\alpha>) = <\alpha> & \mbox{mit\ } \alpha \not\in \mbox{\em VR}; \\ @@ -8362,28 +8363,28 @@ \subsection{Substitution} \end{eqnarray*} definiert ist. -Wir definieren außerdem $\sigma(\varnothing)=\varnothing$. Wir nennen $\sigma$ eine {\em simultane Substitution}\index{Substitution!Variable}\index{Variablensubstitution} (oder einfach {\em Substitution}) mit {\em Substitutionsabbildung}\index{Substitutionsabbildung} $F$. +Wir definieren außerdem $\sigma(\varnothing)=\varnothing$. Wir nennen $\sigma$ eine {\em simultane Substitution}\index{Substitution!Variable}\index{Variablensubstitution} (oder einfach {\em Substitution}) mit {\em Substitutionsabbildung}\index{Substitutionsabbildung} $F$. -Mit $\sigma(E)$ bezeichnen wir (unter Missbrauch der Notation) auch eine Substitution auf einer Sammlung von Ausdrücken $E \subseteq \mbox{\em EX}$, d.h. die Menge $\{ \sigma(e) | e \in E \}$. Die Sammlung $\sigma(E)$ kann natürlich weniger Ausdrücke als $E$ enthalten, weil durch die Substitution doppelte Ausdrücke entstehen könnten. +Mit $\sigma(E)$ bezeichnen wir (unter Missbrauch der Notation) auch eine Substitution auf einer Sammlung von Ausdrücken $E \subseteq \mbox{\em EX}$, d.h. die Menge $\{ \sigma(e) | e \in E \}$. Die Sammlung $\sigma(E)$ kann natürlich weniger Ausdrücke als $E$ enthalten, weil durch die Substitution doppelte Ausdrücke entstehen könnten. \subsection{Aussagen} -Wir bezeichnen mit $\mbox{\em DV}$ die Menge aller ungeordneten Paare $\{\alpha, \beta \} \subseteq \mbox{\em VR}$, so dass $\alpha \neq \beta$. $\mbox{\em DV}$ steht für "`unterscheidbare Variablen"'. +Wir bezeichnen mit $\mbox{\em DV}$ die Menge aller ungeordneten Paare $\{\alpha, \beta \} \subseteq \mbox{\em VR}$, so dass $\alpha \neq \beta$. $\mbox{\em DV}$ steht für "`unterscheidbare Variablen"'. Eine {\em Prä-Aussage}\index{Prä-Aussage!in einem formalen System} ist ein Quadrupel $\langle D,T,H,A \rangle$ derart, dass $D\subseteq \mbox{\em DV}$, $T\subseteq \mbox{\em EX}_2$, $H\subseteq \mbox{\em EX}_C$ und $H$ endlich ist, $A\in \mbox{\em EX}_C$, ${\cal V}(H\cup\{A\}) \subseteq {\cal V}(T)$, und $\forall e,f\in T {\ } {\cal V}(e) \neq {\cal V}(f)$ (oder äquivalent, $e_1 \ne f_1$), wann immer $e \neq f$. Die Terme des Quadrupels werden respektive {\em disjunkte Variableneinschränkungen},\index{disjunkte Variableneinschränkung!in einem formalen System}, {\em Variablentyp-Hypothesen},\index{Variablentyp-Hypothese!in einem formalen System}, -{\em logische Hypothesen},\index{logische Hypothese!in einem formalen System} und die +{\em logische Hypothesen},\index{logische Hypothese!in einem formalen System} und die {\em Behauptung}\index{Behauptung!in einem formalen System} genannt. -Wir bezeichnen mit $T_M$ ({\em obligatorische Variablentyp-Hypothesen}\index{obligatorische Variablentyp-Hypothese!in einem formalen System}) die Teilmenge von $T$, so dass ${\cal V}(T_M) ={\cal V}(H \cup \{A\})$. Wir bezeichnen mit $D_M=\{\{\alpha,\beta\}\in D|\{\alpha,\beta\}\subseteq {\cal V}(T_M)\}$ die {\em obligatorischen disjunkte Variableneinschränkung}\index{obligatorische disjunkte Variableneinschränkung!in einem formalen System} der Prä-Aussage. Die Menge der {\em obligatorischen Hypothesen}\index{obligatorische Hypothese!in einem formalen System} ist $T_M\cup H$. Wir nennen das Quadrupel $\langle D_M,T_M,H,A \rangle$ das {\em Redukt}\index{Redukt!in einem formalen System} der Prä-Aussage $\langle D,T,H,A \rangle$. +Wir bezeichnen mit $T_M$ ({\em obligatorische Variablentyp-Hypothesen}\index{obligatorische Variablentyp-Hypothese!in einem formalen System}) die Teilmenge von $T$, so dass ${\cal V}(T_M) ={\cal V}(H \cup \{A\})$. Wir bezeichnen mit $D_M=\{\{\alpha,\beta\}\in D|\{\alpha,\beta\}\subseteq {\cal V}(T_M)\}$ die {\em obligatorischen disjunkte Variableneinschränkung}\index{obligatorische disjunkte Variableneinschränkung!in einem formalen System} der Prä-Aussage. Die Menge der {\em obligatorischen Hypothesen}\index{obligatorische Hypothese!in einem formalen System} ist $T_M\cup H$. Wir nennen das Quadrupel $\langle D_M,T_M,H,A \rangle$ das {\em Redukt}\index{Redukt!in einem formalen System} der Prä-Aussage $\langle D,T,H,A \rangle$. -Eine {\em Aussage} ist das Redukt einer Prä-Aussage\index{Aussage!in einem formalen System}. Eine Aussage ist also eine besondere Art von Prä-Aussage; insbesondere ist eine Aussage das Redukt ihrer selbst. +Eine {\em Aussage} ist das Redukt einer Prä-Aussage\index{Aussage!in einem formalen System}. Eine Aussage ist also eine besondere Art von Prä-Aussage; insbesondere ist eine Aussage das Redukt ihrer selbst. {\footnotesize\begin{quotation} {\em Kommentar:} $T$ ist eine Menge von Ausdrücken der Länge 2, die eine Menge von Konstanten ("`Variablentypen"') mit einer Menge von Variablen verknüpfen. Die Bedingung ${\cal V}(H\cup\{A\}) \subseteq {\cal V}(T) $ bedeutet, dass jede Variable, die in den logischen Hypothesen oder Behauptungen einer Aussage vorkommt, eine zugehörige Variablentyp-Hypothese oder eine "`Typendeklaration"' haben muss, in Analogie zu einer Programmiersprache für Computer, in der eine Variable beispielsweise als String oder Integer deklariert werden muss. Die Anforderung, dass $\forall e,f\in T \, e_1 \ne f_1$ für $e\neq f$ bedeutet, dass jede Variable eindeutig einer Konstanten zugeordnet sein muss, die ihren Variablentyp bezeichnet; z.B. kann eine Variable ein "`wff"' oder ein "`set"' sein, aber nicht beides. -Disjunkte Variableneinschränkungen werden verwendet, um anzugeben, welche Variablensubstitutionen zulässig sind, damit die Anweisung gültig bleibt. In dem Theoremschema der Mengenlehre $\lnot\forall x\,x=y$ dürfen wir zum Beispiel nicht dieselbe Variable sowohl für $x$ als auch für $y$ einsetzen. Andererseits verlangt das Theoremschema $x=y\to y=x$ nicht, dass $x$ und $y$ verschieden sein müssen, so dass wir keine disjunkte Variableneinschränkungen brauchen, obwohl eine solche Einschränkung nur dazu führen würde, dass das Schema weniger allgemein wäre. +Disjunkte Variableneinschränkungen werden verwendet, um anzugeben, welche Variablensubstitutionen zulässig sind, damit die Anweisung gültig bleibt. In dem Theoremschema der Mengenlehre $\lnot\forall x\,x=y$ dürfen wir zum Beispiel nicht dieselbe Variable sowohl für $x$ als auch für $y$ einsetzen. Andererseits verlangt das Theoremschema $x=y\to y=x$ nicht, dass $x$ und $y$ verschieden sein müssen, so dass wir keine disjunkte Variableneinschränkungen brauchen, obwohl eine solche Einschränkung nur dazu führen würde, dass das Schema weniger allgemein wäre. Eine obligatorische Variablentyp-Hypothese ist eine, deren Variable in einer logischen Hypothese oder der Behauptung vorkommt. Eine beweisbare Prä-Aussage (siehe unten) kann nicht-obligatorische Variablentyp-Hypothe\-sen erfordern, die im Endeffekt "`Dummy"'-Variablen zur Verwendung in ihrem Beweis einführen. Jede mögliche Anzahl von Dummy-Variablen kann für einen bestimmten Beweis erforderlich sein; tatsächlich wurde von H.\ Andr\'{e}ka\index{Andr{\'{e}}ka, H.} \cite{Nemeti} gezeigt, dass es keine endliche Obergrenze für die Anzahl der Dummy-Variablen gibt, die benötigt werden, um einen beliebiges Theorem in der Logik erster Ordnung (mit Gleichheit) zu beweisen, der eine feste Anzahl $n>2$ von individuellen Variablen hat. (Siehe auch den Kommentar zu S.~\pageref{nodd}.) Aus diesem Grund setzen wir keine endliche Größenbeschränkung für die Sammlungen $D$ und $T$, obwohl diese in einer tatsächlichen Anwendung (Metamath-Datenbasis) natürlich endlich sein werden und deren Anzahl wenn nötig vergrößert werden muss, wenn mehr Beweise hinzugefügt werden. \end{quotation}} @@ -8397,11 +8398,11 @@ \subsection{Formale Systeme} Ein {\em formales System}\index{formales System} ist ein Tripel $\langle \mbox{\em CN},\mbox{\em VR},\Gamma\rangle$ wobei $\Gamma$ eine Menge von Aussagen ist. Die Elemente von $\Gamma$ werden {\em axiomatische Aussagen} genannt\index{axiomatische Aussagen!in einem formalen System}. Manchmal wird ein formales System nur mit $\Gamma$ bezeichnet, wenn $\mbox{\em CN}$ und $\mbox{\em VR}$ klar sind.\footnote{Anm. der Übersetzer: Üblicherweise ist ein {\em formales System}\index{formales System} ein Quadrupel $\langle \mbox{\em A},\mbox{\em B},\Gamma,\mbox{\em R}\rangle$ wobei $\mbox{\em A}$ ein Alphabet (hier also $\mbox{\em A} = \mbox{\em SM} = \mbox{\em CN}\cup \mbox{\em VR}$), $\mbox{\em B}$ eine Teilmenge aller Wörter, die sich über dem Alphabet $\mbox{\em A}$ bilden lassen, also die Menge aller "`wohlgeformten Formeln"' oder eine "`formale Sprache"' über dem Alphabet $\mbox{\em A}$, -$\Gamma$ eine Menge von Aussagen, die als "`Axiome"' aufgefasst werden (es gilt $\Gamma\subseteq\mbox{\em B}$) und +$\Gamma$ eine Menge von Aussagen, die als "`Axiome"' aufgefasst werden (es gilt $\Gamma\subseteq\mbox{\em B}$) und $\mbox{\em R}$ eine Menge von zwei- oder mehrstelligen Relationen über Wörtern aus $\mbox{\em B}$ (hier also die Substitution $\sigma$ als Funktion/zweistellige Releation) ist.} In einem formalen System $\Gamma$ ist der {\em Abschluss}\index{Abschluss}\footnote{Diese Definition des Abschlusses enthält eine Vereinfachung, die Josh Purinton zu verdanken ist.\index{Purinton, Josh}.} einer Prä-Aussage\linebreak -$\langle D,T,H,A \rangle$ die kleinste Menge $C$ von Ausdrücken, die so beschaffen ist, dass: +$\langle D,T,H,A \rangle$ die kleinste Menge $C$ von Ausdrücken, die so beschaffen ist, dass: \begin{list}{}{\itemsep 0.0pt} \item[1.] $T\cup H\subseteq C$ und \item[2.] Wenn für eine axiomatische Aussage @@ -8416,10 +8417,10 @@ \subsection{Formale Systeme} \end{enumerate} dann gilt $\sigma(A') \in C$. \end{list} -Eine Prä-Aussage $\langle D,T,H,A \rangle$ ist {\em beweisbar}\index{beweisbare Aussage!in einem formalen System}, wenn $A\in C$ d.h.\ wenn ihre Behauptung zu ihrem Abschluss gehört. Eine Aussage ist {\em beweisbar}, wenn sie das Redukt einer beweisbaren Prä-Aussage ist. Das {\em Universum}\index{Universum eines formalen Systems} eines formalen Systems ist die Sammlung aller seiner beweisbaren Aussagen. Man beachte, dass die Menge der axiomatischen Aussagen $\Gamma$ in einem formalen System eine Teilmenge seines Universums ist. +Eine Prä-Aussage $\langle D,T,H,A \rangle$ ist {\em beweisbar}\index{beweisbare Aussage!in einem formalen System}, wenn $A\in C$ d.h.\ wenn ihre Behauptung zu ihrem Abschluss gehört. Eine Aussage ist {\em beweisbar}, wenn sie das Redukt einer beweisbaren Prä-Aussage ist. Das {\em Universum}\index{Universum eines formalen Systems} eines formalen Systems ist die Sammlung aller seiner beweisbaren Aussagen. Man beachte, dass die Menge der axiomatischen Aussagen $\Gamma$ in einem formalen System eine Teilmenge seines Universums ist. {\footnotesize\begin{quotation} -{\em Kommentar:} Die erste Bedingung in der Definition des Abschlusses besagt einfach, dass die Hypothesen der Prä-Aussage in ihrem Abschluss enthalten sind. +{\em Kommentar:} Die erste Bedingung in der Definition des Abschlusses besagt einfach, dass die Hypothesen der Prä-Aussage in ihrem Abschluss enthalten sind. Bedingung 2(a) besagt, dass es eine Substitution gibt, die dafür sorgt, dass die obligatorischen Hypothesen einer axiomatischen Aussage genau mit mindestens einem Element des Abschlusses übereinstimmt. Dies zeigen wir explizit in einem Beweis mittels der Metamath-Sprache. @@ -8437,7 +8438,7 @@ \subsection{Formale Systeme} \end{quotation}} {\footnotesize\begin{quotation} -{\em Beziehung zu Metamath:} Axiomatische Aussagen und beweisbare Aussagen in einem formalen System entsprechen den Frames für \texttt{\$a}- bzw. \texttt{\$p}-Aussagen in einer Metamath-Datenbasis. Die Menge der axiomatischen Aussagen ist eine Teilmenge der Menge der beweisbaren Aussagen in einem formalen System, obwohl in einer Metamath-Datenbasis eine \texttt{\$a}-Aussage dadurch gekennzeichnet ist, dass sie keinen Beweis hat. Ein Beweis in der Metamath-Sprache für eine \texttt{\$p}-Anweisung sagt dem Computer, wie er explizit eine Folge von Elementen des Abschlusses konstruieren soll, was schließlich zu dem Nachweis führt, dass die zu beweisende Behauptung in dem Abschluss enthalten ist. Der tatsächliche Abschluss enthält normalerweise eine unendliche Anzahl von Ausdrücken. Ein formales System selbst hat kein explizites Objekt, das als "`Beweis"' bezeichnet wird, sondern die Existenz eines Beweises wird indirekt durch die Zugehörigkeit einer Behauptung zum Abschluss einer beweisbaren Ausage impliziert. Wir tun dies, um das formale System leichter in der Sprache der Mengenlehre beschreiben zu können. +{\em Beziehung zu Metamath:} Axiomatische Aussagen und beweisbare Aussagen in einem formalen System entsprechen den Frames für \texttt{\$a}- bzw. \texttt{\$p}-Aussagen in einer Metamath-Datenbasis. Die Menge der axiomatischen Aussagen ist eine Teilmenge der Menge der beweisbaren Aussagen in einem formalen System, obwohl in einer Metamath-Datenbasis eine \texttt{\$a}-Aussage dadurch gekennzeichnet ist, dass sie keinen Beweis hat. Ein Beweis in der Metamath-Sprache für eine \texttt{\$p}-Anweisung sagt dem Computer, wie er explizit eine Folge von Elementen des Abschlusses konstruieren soll, was schließlich zu dem Nachweis führt, dass die zu beweisende Behauptung in dem Abschluss enthalten ist. Der tatsächliche Abschluss enthält normalerweise eine unendliche Anzahl von Ausdrücken. Ein formales System selbst hat kein explizites Objekt, das als "`Beweis"' bezeichnet wird, sondern die Existenz eines Beweises wird indirekt durch die Zugehörigkeit einer Behauptung zum Abschluss einer beweisbaren Ausage impliziert. Wir tun dies, um das formale System leichter in der Sprache der Mengenlehre beschreiben zu können. Wir weisen auch darauf hin, dass eine einmal als beweisbar nachgewiesene Aussage denselben Status wie eine axiomatische Aussage erhält, denn wenn die Menge der axiomatischen Aussagen um eine beweisbare Aussage erweitert wird, bleibt das Universum des formalen Systems unverändert (vorausgesetzt, dass $\mbox{\em VR}$ unendlich ist). In der Praxis bedeutet dies, dass wir eine Hierarchie von beweisbaren Aussagen aufbauen können, um effizienter weitere beweisbare Aussagen zu ermitteln. Genau das tun wir in Metamath, wenn wir zulassen, dass Beweise auf vorherige \texttt{\$p}-Anweisungen sowie auf vorherige \texttt{\$a}-Anweisungen verweisen. \end{quotation}} @@ -8451,7 +8452,7 @@ \section{Beispiele für formale Systeme} \subsection{Beispiel~1 --- Aussagenlogik}\index{Aussagenlogik} -Die klassische Aussagenlogik kann durch das folgende formale System beschrieben werden. Wir nehmen an, dass die Menge der Variablen unendlich ist. Anstatt die Konstanten und Variablen mit $c_0, c_1, \ldots$ und $v_0, v_1, \ldots$ zu bezeichnen, werden wir aus Gründen der Lesbarkeit stattdessen gängigere Symbole verwenden, wobei wir natürlich davon ausgehen, dass sie unterschiedliche primitive Objekte bezeichnen. Der Lesbarkeit halber können wir auch Kommas zwischen aufeinanderfolgenden Glieder einer Folge weglassen; so steht $\langle \mbox{wff\ } \varphi\rangle$ für $\langle \mbox{wff}, \varphi\rangle$. +Die klassische Aussagenlogik kann durch das folgende formale System beschrieben werden. Wir nehmen an, dass die Menge der Variablen unendlich ist. Anstatt die Konstanten und Variablen mit $c_0, c_1, \ldots$ und $v_0, v_1, \ldots$ zu bezeichnen, werden wir aus Gründen der Lesbarkeit stattdessen gängigere Symbole verwenden, wobei wir natürlich davon ausgehen, dass sie unterschiedliche primitive Objekte bezeichnen. Der Lesbarkeit halber können wir auch Kommas zwischen aufeinanderfolgenden Glieder einer Folge weglassen; so steht $\langle \mbox{wff\ } \varphi\rangle$ für $\langle \mbox{wff}, \varphi\rangle$. Sei \begin{itemize} @@ -8486,7 +8487,7 @@ \subsection{Beispiel~1 --- Aussagenlogik}\index{Aussagenlogik} \langle\vdash\psi\rangle\rangle$ \end{itemize} -\noindent Zum Beispiel ist das Redukt von $\langle\varnothing,T,\varnothing, \langle \mbox{wff\ }(\varphi\to\psi)\rangle\rangle$ +\noindent Zum Beispiel ist das Redukt von $\langle\varnothing,T,\varnothing, \langle \mbox{wff\ }(\varphi\to\psi)\rangle\rangle$ \begin{itemize} \item[] $\langle\varnothing, \{\langle \mbox{wff\ } \varphi\rangle, @@ -8504,13 +8505,13 @@ \subsection{Beispiel~1 --- Aussagenlogik}\index{Aussagenlogik} \end{itemize} welches die erste und die vierte axiomatischen Aussagen sind. -Wir nennen die Elemente von $\mbox{\em VR}$ {\em wff-Variablen} oder (im Kontext der Logik erster Ordnung, die wir gleich beschreiben werden) {\em wff-Metavariablen}. Man beachte, dass die Symbole $\phi$, $\psi$ usw.\ tatsächliche spezifische Elemente der Menge $\mbox{\em VR}$ bezeichnen; sie sind keine Metavariablen unserer Beschreibungssprache (die wir mit $\alpha$, $\beta$ usw. bezeichnen), sondern sind stattdessen (meta)konstante Symbole (Elemente der Menge $\mbox{\em SM}$) aus der Sicht unserer Beschreibungssprache. Das in \cite{Tarski1965} beschriebene äquivalente System der Aussagenlogik verwendet ebenfalls die Symbole $\phi$, $\psi$ usw.\, um wff-Metavariablen zu bezeichnen, aber in \cite{Tarski1965} sind dies im Gegensatz zu hier Metavariablen der Beschreibungssprache und keine primitiven Symbole des formalen Systems. +Wir nennen die Elemente von $\mbox{\em VR}$ {\em wff-Variablen} oder (im Kontext der Logik erster Ordnung, die wir gleich beschreiben werden) {\em wff-Metavariablen}. Man beachte, dass die Symbole $\phi$, $\psi$ usw.\ tatsächliche spezifische Elemente der Menge $\mbox{\em VR}$ bezeichnen; sie sind keine Metavariablen unserer Beschreibungssprache (die wir mit $\alpha$, $\beta$ usw. bezeichnen), sondern sind stattdessen (meta)konstante Symbole (Elemente der Menge $\mbox{\em SM}$) aus der Sicht unserer Beschreibungssprache. Das in \cite{Tarski1965} beschriebene äquivalente System der Aussagenlogik verwendet ebenfalls die Symbole $\phi$, $\psi$ usw.\, um wff-Metavariablen zu bezeichnen, aber in \cite{Tarski1965} sind dies im Gegensatz zu hier Metavariablen der Beschreibungssprache und keine primitiven Symbole des formalen Systems. -Die ersten beiden Aussagen definieren wffs: wenn $\varphi$ und $\psi$ wffs sind, dann ist $(\varphi \to \psi)$ auch eine wff; wenn $\varphi$ eine wff ist, dann ist $\lnot\varphi$ auch eine wff. Die nächsten drei sind die Axiome der Aussagenlogik: Wenn $\varphi$ und $\psi$ wffs sind, dann ist $\vdash (\varphi \to (\psi \to \varphi))$ ein (axiomatisches) Theorem; usw. Die letzte ist der Modus ponens: wenn $\varphi$ und $\psi$ wffs sind, und $\vdash (\varphi\to\psi)$ und $\vdash \varphi$ Theoreme sind, dann ist $\vdash \psi$ ein Theorem. +Die ersten beiden Aussagen definieren wffs: wenn $\varphi$ und $\psi$ wffs sind, dann ist $(\varphi \to \psi)$ auch eine wff; wenn $\varphi$ eine wff ist, dann ist $\lnot\varphi$ auch eine wff. Die nächsten drei sind die Axiome der Aussagenlogik: Wenn $\varphi$ und $\psi$ wffs sind, dann ist $\vdash (\varphi \to (\psi \to \varphi))$ ein (axiomatisches) Theorem; usw. Die letzte ist der Modus ponens: wenn $\varphi$ und $\psi$ wffs sind, und $\vdash (\varphi\to\psi)$ und $\vdash \varphi$ Theoreme sind, dann ist $\vdash \psi$ ein Theorem. -Die Entsprechung zur gewöhnlichen Aussagenlogik ist wie folgt. Wir betrachten nur beweisbare Aussagen der Form $\langle\varnothing, T,\varnothing,A\rangle$ mit $T$ definiert wie oben. Der erste Term der Behauptung $A$ einer solchen Aussage ist entweder "`wff"' oder "`$\vdash$"'. Eine Aussage, bei der der erste Term "`wff"' ist, ist eine {\em wff} der Aussagenlogik, und eine, bei der der erste Term "`$\vdash$"' ist, ist ein {\em Theorem (Schema)} der Aussagenlogik. +Die Entsprechung zur gewöhnlichen Aussagenlogik ist wie folgt. Wir betrachten nur beweisbare Aussagen der Form $\langle\varnothing, T,\varnothing,A\rangle$ mit $T$ definiert wie oben. Der erste Term der Behauptung $A$ einer solchen Aussage ist entweder "`wff"' oder "`$\vdash$"'. Eine Aussage, bei der der erste Term "`wff"' ist, ist eine {\em wff} der Aussagenlogik, und eine, bei der der erste Term "`$\vdash$"' ist, ist ein {\em Theorem (Schema)} der Aussagenlogik. -Das Universum dieses formalen Systems enthält auch viele andere beweisbare Aussagen. Diejenigen mit Beschränkungen für unterschiedliche Variablen sind irrelevant, da die Aussagenlogik keine Beschränkungen für Substitutionen kennt. Diejenigen, die logische Hypothesen haben, nennen wir {\em Inferenzen}\index{Inferenz}, wenn die logischen Hypothesen von der Form $\langle\vdash\rangle\frown w$ sind, wobei $w$ eine wff ist (wobei der führende konstante Term "`wff"' entfernt wurde). Inferenzen (mit Ausnahme des Modus ponens) sind kein eigentlicher Bestandteil der Aussagenlogik, lassen sich aber beim Aufbau einer Hierarchie von beweisbaren Aussagen gut verwenden. Eine beweisbare Aussage mit einer unsinnigen Hypothese wie $\langle \to,\vdash,\lnot\rangle$ und demselben Ausdruck als Behauptung betrachten wir als irrelevant; sie kann beim Beweis von Theoremen nicht verwendet werden, da es keine Möglichkeit gibt, die unsinnige Hypothese zu eliminieren. +Das Universum dieses formalen Systems enthält auch viele andere beweisbare Aussagen. Diejenigen mit Beschränkungen für unterschiedliche Variablen sind irrelevant, da die Aussagenlogik keine Beschränkungen für Substitutionen kennt. Diejenigen, die logische Hypothesen haben, nennen wir {\em Inferenzen}\index{Inferenz}, wenn die logischen Hypothesen von der Form $\langle\vdash\rangle\frown w$ sind, wobei $w$ eine wff ist (wobei der führende konstante Term "`wff"' entfernt wurde). Inferenzen (mit Ausnahme des Modus ponens) sind kein eigentlicher Bestandteil der Aussagenlogik, lassen sich aber beim Aufbau einer Hierarchie von beweisbaren Aussagen gut verwenden. Eine beweisbare Aussage mit einer unsinnigen Hypothese wie $\langle \to,\vdash,\lnot\rangle$ und demselben Ausdruck als Behauptung betrachten wir als irrelevant; sie kann beim Beweis von Theoremen nicht verwendet werden, da es keine Möglichkeit gibt, die unsinnige Hypothese zu eliminieren. {\footnotesize\begin{quotation} {\em Kommentar:} Unsere Verwendung von Klammern in der Definition einer wff zeigt, dass axiomatische Aussagegen sorgfältig so formuliert werden sollten, dass sie eindeutig mit den vom formalen System erlaubten Substitutionen zusammenpassen. Es gibt viele Möglichkeiten, wffs zu definieren - die polnische Präfix-Notation hätte es uns beispielsweise erlaubt, die Klammern ganz wegzulassen, was allerdings zu Lasten der Lesbarkeit gegangen wäre -, aber wir müssen sie auf eine Weise definieren, die eindeutig ist. Hätten wir z.B. die Klammern in der Definition von $(\varphi\to \psi)$ weggelassen, hätte die wff $\lnot\varphi\to \psi$ entweder als $\lnot(\varphi\to\psi)$ oder $(\lnot\varphi\to\psi)$ interpretiert werden können und hätte uns erlaubt, Unsinn zu beweisen. Es ist zu beachten, dass unser formales System kein Konzept der Vorrangigkeit von Operatoren enthält. @@ -8520,14 +8521,14 @@ \subsection{Beispiel~1 --- Aussagenlogik}\index{Aussagenlogik} \subsection{Beispiel~2 --- Prädikatenlogik mit Gleichheit}\index{Prädikatenlogik} \end{sloppy} -Hier erweitern wir Beispiel~1 um die Prädikatenlogik mit Gleichheit zu erhalten und veranschaulichen damit die Verwendung von disjunkte Variableneinschränkungen. Dieses System ist dasselbe wie Tarskis System $\mathfrak{S}_2$ in \cite{Tarski1965} (mit der Ausnahme, dass die Axiome der Aussagenlogik unterschiedlich, aber äquivalent sind, und dass ein redundantes Axiom weggelassen wird). Wir erweitern $\mbox{\em CN}$ um die Konstanten $\{\mbox{var},\forall,=\}$ und $\mbox{\em VR}$ um eine unendliche Menge von {\em individuelle Metavariablen}\index{individuelle Metavariable} $\{x,y,z,\ldots\}$ und bezeichnen diese Teilmenge als $\mbox{\em Vr}$. +Hier erweitern wir Beispiel~1 um die Prädikatenlogik mit Gleichheit zu erhalten und veranschaulichen damit die Verwendung von disjunkte Variableneinschränkungen. Dieses System ist dasselbe wie Tarskis System $\mathfrak{S}_2$ in \cite{Tarski1965} (mit der Ausnahme, dass die Axiome der Aussagenlogik unterschiedlich, aber äquivalent sind, und dass ein redundantes Axiom weggelassen wird). Wir erweitern $\mbox{\em CN}$ um die Konstanten $\{\mbox{var},\forall,=\}$ und $\mbox{\em VR}$ um eine unendliche Menge von {\em individuelle Metavariablen}\index{individuelle Metavariable} $\{x,y,z,\ldots\}$ und bezeichnen diese Teilmenge als $\mbox{\em Vr}$. Wir erweitern $\mbox{\em CN}$ auch um eine möglicherweise unendliche Menge $\mbox{\em Pr}$ von {\em Prädikaten} $\{R,S,\ldots\}$. Wir assoziieren mit $\mbox{\em Pr}$ eine Funktion $\mbox{rnk}$ von $\mbox{\em Pr}$ nach $\omega$, und für $\alpha\in \mbox{\em Pr}$ nennen wir $\mbox{rnk}(\alpha)$ den {\em Rang} des Prädikats $\alpha$, der einfach die Anzahl der "`Argumente"' ist, die das Prädikat hat. (Die meisten Anwendungen der Prädikatenlogik haben eine endliche Anzahl von Prädikaten; in der Mengenlehre gibt es z.B. ein einziges Prädikat mit zwei Argumenten (auch binäres Prädikat genannt) $\in$, das üblicherweise mit seinen Argumenten um das Prädikatssymbol herum geschrieben wird und nicht mit der Präfix-Notation, die wir für den allgemeinen Fall verwenden). -Um unsere Diskussion zu erleichtern sei $\mbox{\em Vs}$ eine beliebige feste injektive Funktion von $\omega$ nach $\mbox{\em Vr}$; somit ist $\mbox{\em Vs}$ eine beliebige einfache unendliche Folge von einzelnen Metavariablen ohne Wiederholungen. +Um unsere Diskussion zu erleichtern sei $\mbox{\em Vs}$ eine beliebige feste injektive Funktion von $\omega$ nach $\mbox{\em Vr}$; somit ist $\mbox{\em Vs}$ eine beliebige einfache unendliche Folge von einzelnen Metavariablen ohne Wiederholungen. -In diesem Beispiel verzichten wir auf die Funktionssymbole, die häufig Teil von Formalisierungen der Prädikatenlogik sind. Unter Verwendung metalogischer Argumente, die den Rahmen unserer Diskussion sprengen würden, kann gezeigt werden, dass unsere Formalisierung äquivalent ist, wenn Funktionen über geeignete Definitionen eingeführt werden. +In diesem Beispiel verzichten wir auf die Funktionssymbole, die häufig Teil von Formalisierungen der Prädikatenlogik sind. Unter Verwendung metalogischer Argumente, die den Rahmen unserer Diskussion sprengen würden, kann gezeigt werden, dass unsere Formalisierung äquivalent ist, wenn Funktionen über geeignete Definitionen eingeführt werden. -Wir erweitern die in Beispiel~1 definierte Menge $T$ um die Ausdrücke $\{\langle \mbox{var\ } x\rangle,$ $ \langle \mbox{var\ } y\rangle, \langle \mbox{var\ } z\rangle,\ldots\}$ und das obige $\Gamma$ um die axiomatischen Aussagen, die die Redukte der folgenden Prä-Aussagen sind: +Wir erweitern die in Beispiel~1 definierte Menge $T$ um die Ausdrücke $\{\langle \mbox{var\ } x\rangle,$ $ \langle \mbox{var\ } y\rangle, \langle \mbox{var\ } z\rangle,\ldots\}$ und das obige $\Gamma$ um die axiomatischen Aussagen, die die Redukte der folgenden Prä-Aussagen sind: \begin{list}{}{\itemsep 0.0pt} \item[] $\langle\varnothing,T,\varnothing, \langle \mbox{wff\ }\forall x\,\varphi\rangle\rangle$ @@ -8555,9 +8556,9 @@ \subsection{Beispiel~2 --- Prädikatenlogik mit Gleichheit}\index{Prädikatenlog \to(x=y\to x=z)) \rangle\rangle$ \end{list} -Dies sind die Axiome, die keine Prädikatssymbole beinhalten. Die ersten beiden Anweisungen erweitern die Definition einer wff. Die dritte ist die Regel der Verallgemeinerung. Die fünfte besagt: "`Für eine wff $\varphi$ und die Variable $x$ gilt: $\vdash(\varphi\to\forall x\,\varphi)$, sofern $x$ nicht in $\varphi$ vorkommt."' Die sechste lautet: "`Für die Variablen $x$ und $y$ gilt $\vdash\lnot\forall x\lnot x = y$, sofern $x$ und $y$ verschieden sind."' (Dieser Vorbehalt ist nicht notwendig, wurde aber von Tarski eingefügt, um das Axiom abzuschwächen und trotzdem zu zeigen, dass das System logisch vollständig ist.) +Dies sind die Axiome, die keine Prädikatssymbole beinhalten. Die ersten beiden Anweisungen erweitern die Definition einer wff. Die dritte ist die Regel der Verallgemeinerung. Die fünfte besagt: "`Für eine wff $\varphi$ und die Variable $x$ gilt: $\vdash(\varphi\to\forall x\,\varphi)$, sofern $x$ nicht in $\varphi$ vorkommt."' Die sechste lautet: "`Für die Variablen $x$ und $y$ gilt $\vdash\lnot\forall x\lnot x = y$, sofern $x$ und $y$ verschieden sind."' (Dieser Vorbehalt ist nicht notwendig, wurde aber von Tarski eingefügt, um das Axiom abzuschwächen und trotzdem zu zeigen, dass das System logisch vollständig ist.) -Schließlich fügen wir für jedes Prädikatssymbol $\alpha\in \mbox{\em Pr}$ eine axiomatische Aussage zu $\Gamma$ hinzu, die die Definition von wff erweitert und die das Redukt der folgenden Prä-Ausage ist: +Schließlich fügen wir für jedes Prädikatssymbol $\alpha\in \mbox{\em Pr}$ eine axiomatische Aussage zu $\Gamma$ hinzu, die die Definition von wff erweitert und die das Redukt der folgenden Prä-Ausage ist: \begin{displaymath} \langle\varnothing,T,\varnothing, \langle \mbox{wff},\alpha\rangle\ @@ -8576,7 +8577,7 @@ \subsection{Beispiel~2 --- Prädikatenlogik mit Gleichheit}\index{Prädikatenlog \mbox{\em Vs}\restriction(\mbox{rnk}(\alpha)\setminus(n+1))\frown \langle),)\rangle\rangle \end{eqnarray*} -wobei $\restriction$ die Einschränkung des Definitionsbereichs und $\setminus$ die Mengendifferenz bezeichnet. Erinnern Sie sich daran, dass ein tiefgestellter Index in $\mbox{\em Vs}$ einen seiner Terme kennzeichnet. (In den beiden obigen axiomatischen Aussagen werden Kommas zwischen aufeinanderfolgende Terme von Sequenzen gesetzt, um Mehrdeutigkeit zu vermeiden, und wenn Sie sie genau betrachten, werden Sie in der Lage sein, die Klammern, die konstante Symbole bezeichnen, von den Klammern unserer Beschreibungssprache, die Funktionsargumente abgrenzen, zu unterscheiden. Es wäre vielleicht besser gewesen, unsere primitiven Symbole fett zu schreiben, aber leider waren nicht für alle Zeichen in dem \LaTeX-System, das für den Schriftsatz dieses Textes verwendet wurde, Fettschrift verfügbar). Diese scheinbar verbotenen Axiome lassen sich in Analogie zur Verkettung von Teilzeichenfolgen in einer Computersprache verstehen. Tatsächlich sind sie für jeden spezifischen Fall relativ einfach und werden deutlicher, wenn man den Spezialfall eines binären Prädikats $\alpha = R$ betrachtet, bei dem $\mbox{rnk}(R)=2$ ist. Wenn $\mbox{\em Vs}$ die Folge $\langle x,y,z,\ldots\rangle$ ist, wären die Axiome, die wir für diesen Fall zu $\Gamma$ hinzufügen würden, die wff-Erweiterung und zwei Gleichheitsaxiome, die die Redukte der folgenden Aussagen sind: +wobei $\restriction$ die Einschränkung des Definitionsbereichs und $\setminus$ die Mengendifferenz bezeichnet. Erinnern Sie sich daran, dass ein tiefgestellter Index in $\mbox{\em Vs}$ einen seiner Terme kennzeichnet. (In den beiden obigen axiomatischen Aussagen werden Kommas zwischen aufeinanderfolgende Terme von Sequenzen gesetzt, um Mehrdeutigkeit zu vermeiden, und wenn Sie sie genau betrachten, werden Sie in der Lage sein, die Klammern, die konstante Symbole bezeichnen, von den Klammern unserer Beschreibungssprache, die Funktionsargumente abgrenzen, zu unterscheiden. Es wäre vielleicht besser gewesen, unsere primitiven Symbole fett zu schreiben, aber leider waren nicht für alle Zeichen in dem \LaTeX-System, das für den Schriftsatz dieses Textes verwendet wurde, Fettschrift verfügbar). Diese scheinbar verbotenen Axiome lassen sich in Analogie zur Verkettung von Teilzeichenfolgen in einer Computersprache verstehen. Tatsächlich sind sie für jeden spezifischen Fall relativ einfach und werden deutlicher, wenn man den Spezialfall eines binären Prädikats $\alpha = R$ betrachtet, bei dem $\mbox{rnk}(R)=2$ ist. Wenn $\mbox{\em Vs}$ die Folge $\langle x,y,z,\ldots\rangle$ ist, wären die Axiome, die wir für diesen Fall zu $\Gamma$ hinzufügen würden, die wff-Erweiterung und zwei Gleichheitsaxiome, die die Redukte der folgenden Aussagen sind: \begin{list}{}{\itemsep 0.0pt} \item[] $\langle\varnothing,T,\varnothing, \langle \mbox{wff\ }R x y\rangle\rangle$ @@ -8589,11 +8590,11 @@ \subsection{Beispiel~2 --- Prädikatenlogik mit Gleichheit}\index{Prädikatenlog \to(R x y \to R x z)) \rangle\rangle$ \end{list} -Studieren Sie diese sorgfältig, um zu sehen, wie sie aus den obigen allgemeinen Axiome entstehen. In der Praxis werden typischerweise nur wenige Spezialfälle wie dieser benötigt, und in jedem Fall erlaubt uns die Metamath-Sprache nur die Beschreibung einer endlichen Anzahl von Prädikaten, im Gegensatz zu der unendlichen Anzahl, die das formale System erlaubt. (Sollte aus irgendeinem Grund eine unendliche Anzahl benötigt werden, könnten wir das formale System nicht direkt in der Metamath-Sprache definieren, sondern könnten es stattdessen metalogisch unter der Mengenlehre definieren, wie wir es in diesem Anhang tun, und nur die zugrunde liegende Mengenlehre mit ihrem einzigen binären Prädikat würde direkt in der Metamath-Sprache definiert). +Studieren Sie diese sorgfältig, um zu sehen, wie sie aus den obigen allgemeinen Axiome entstehen. In der Praxis werden typischerweise nur wenige Spezialfälle wie dieser benötigt, und in jedem Fall erlaubt uns die Metamath-Sprache nur die Beschreibung einer endlichen Anzahl von Prädikaten, im Gegensatz zu der unendlichen Anzahl, die das formale System erlaubt. (Sollte aus irgendeinem Grund eine unendliche Anzahl benötigt werden, könnten wir das formale System nicht direkt in der Metamath-Sprache definieren, sondern könnten es stattdessen metalogisch unter der Mengenlehre definieren, wie wir es in diesem Anhang tun, und nur die zugrunde liegende Mengenlehre mit ihrem einzigen binären Prädikat würde direkt in der Metamath-Sprache definiert). {\footnotesize\begin{quotation} -{\em Kommentar:} Wie bereits erwähnt, handelt es sich bei den spezifischen Variablen, die durch die Symbole $x,y,z,\ldots\in \mbox{\em Vr}\subseteq \mbox{\em VR}\subseteq \mbox{\em SM}$ in Beispiel~2 dargestellt werden, nicht um die eigentlichen Variablen der gewöhnlichen Prädikatenlogik, sondern sie sind als Metavariablen zu betrachten, die sich über diese erstrecken. Zum Beispiel wäre eine disjunkte Variableneinschränkung für eigentliche Variablen der gewöhnlichen Prädikatenlogik bedeutungslos, da zwei verschiedene eigentliche Variablen per Definition unterschiedlich sind. Und wenn wir über einen beliebigen Repräsentanten $\alpha\in \mbox{\em Vr}$ sprechen, ist $\alpha$ eine Metavariable (in unserer Erklärungssprache), die sich über Metavariablen erstreckt (die Primitive unseres formalen Systems sind), von denen sich jede über die einzelnen eigentlichen Variablen der Prädikatenlogik erstreckt (die in unserem formalen System nie erwähnt werden). +{\em Kommentar:} Wie bereits erwähnt, handelt es sich bei den spezifischen Variablen, die durch die Symbole $x,y,z,\ldots\in \mbox{\em Vr}\subseteq \mbox{\em VR}\subseteq \mbox{\em SM}$ in Beispiel~2 dargestellt werden, nicht um die eigentlichen Variablen der gewöhnlichen Prädikatenlogik, sondern sie sind als Metavariablen zu betrachten, die sich über diese erstrecken. Zum Beispiel wäre eine disjunkte Variableneinschränkung für eigentliche Variablen der gewöhnlichen Prädikatenlogik bedeutungslos, da zwei verschiedene eigentliche Variablen per Definition unterschiedlich sind. Und wenn wir über einen beliebigen Repräsentanten $\alpha\in \mbox{\em Vr}$ sprechen, ist $\alpha$ eine Metavariable (in unserer Erklärungssprache), die sich über Metavariablen erstreckt (die Primitive unseres formalen Systems sind), von denen sich jede über die einzelnen eigentlichen Variablen der Prädikatenlogik erstreckt (die in unserem formalen System nie erwähnt werden). Die oben genannte Konstante "`var"' heißt in der \texttt{set.mm}-Datenbasis \texttt{setvar}, aber sie bedeutet dasselbe. Ich war der Meinung, dass "`var"' im Kontext der Prädikatenlogik, deren Verwendung nicht auf die Mengenlehre beschränkt ist, ein sinnvollerer Name ist. Aus Gründen der Konsistenz bleiben wir in diesem Anhang bei dem Namen "`var"', auch nachdem die Mengenlehre eingeführt wurde. \end{quotation}} @@ -8602,15 +8603,15 @@ \subsection{Freie Variablen und echte Substitution}\index{freie Variable} \index{echte Substitution}\index{Substitution!echte} Typische Darstellungen mathematischer Axiome verwenden Konzepte wie "`freie Variable"', "`gebundene Variable"' und "`echte Substitution"' als primitive Begriffe. Eine freie Variable ist eine Variable, die kein Parameter eines Containerausdrucks ist. Eine gebundene Variable ist das Gegenteil einer freien Variable; sie ist eine Variable, die in einem Containerausdruck gebunden wurde. Zum Beispiel ist in dem Ausdruck $\forall x \varphi$ (für alle $x$ ist $\varphi$ wahr) die Variable $x$ in dem "`für alle"'-Ausdruck ($\forall$) gebunden. Es ist möglich, eine Variable durch eine andere zu ersetzen, und diesen Vorgang nennt man "`echte Substitution"'. In den meisten Büchern hat die echte Substitution eine etwas komplizierte rekursive Definition mit mehreren Fällen, die auf dem Vorkommen von freien und gebundenen Variablen basieren. -Sie können in \cite[ch.\ 3--4]{Hamilton}\index{Hamilton, Alan G.} (sowie in vielen anderen Texten) für weitere formale Details zu diesen Begriffen nachschauen. +Sie können in \cite[ch.\ 3--4]{Hamilton}\index{Hamilton, Alan G.} (sowie in vielen anderen Texten) für weitere formale Details zu diesen Begriffen nachschauen. -Die Verwendung dieser Konzepte als \texttt{primitives} schafft Komplikationen für Computerimplementierungen. +Die Verwendung dieser Konzepte als \texttt{primitives} schafft Komplikationen für Computerimplementierungen. -In dem System von Beispiel~2 gibt es keine primitiven Begriffe für freie Variablen und die echten Substitution. Tarski \cite{Tarski1965} zeigt, dass dieses System logisch äquivalent zu den typischeren Lehrbuchsystemen ist, die diese primitiven Begriffe haben, wenn wir diese Begriffe mit geeigneten Definitionen und Metalogik einführen. Wir könnten auch direkt Axiome für solche Systeme definieren, obwohl die rekursiven Definitionen der freien Variablen und der echten Substitution unübersichtlich und umständlich zu handhaben wären. Stattdessen weisen wir auf zwei Hilfsmittel hin, die in der Praxis verwendet werden können, um diese Begriffe zu imitieren. (1) Anstatt eine spezielle Notation einzuführen, um (als logische Hypothese) "`wobei $x$ nicht frei in $\varphi$ ist"' auszudrücken, können wir die logische Hypothese $\vdash(\varphi\to\forall x\,\varphi)$ verwenden.\label{effectivelybound}\index{effektiv nicht frei}\footnote{Dies ist eine etwas schwächere Anforderung als "`wobei $x$ nicht frei in $\varphi$ ist"'. Ersetzen wir $\varphi$ durch $x=x$, so haben wir den Satz $(x=x\to\forall x\,x=x)$, der die Hypothese erfüllt, obwohl $x$ in $x=x$ frei ist. In einem solchen Fall sagen wir, dass $x$ {\em effektiv nicht frei}\index{effektiv nicht frei} in $x=x$ ist, da $x=x$ logisch äquivalent zu $\forall x\,x=x$ ist, in dem $x$ gebunden ist.} (2) Es kann gezeigt werden, dass die wff $((x=y\to\varphi)\wedge\exists x(x=y\wedge\varphi))$ (mit den üblichen Definitionen von $\wedge$ und $\exists$; siehe Beispiel~4 unten) logisch äquivalent ist zu "`die wff, die sich aus der echten Substitutiong von $y$ für $x$ in $\varphi$ ergibt"'. Das funktioniert unabhängig davon, ob $x$ und $y$ verschieden sind oder nicht. +In dem System von Beispiel~2 gibt es keine primitiven Begriffe für freie Variablen und die echten Substitution. Tarski \cite{Tarski1965} zeigt, dass dieses System logisch äquivalent zu den typischeren Lehrbuchsystemen ist, die diese primitiven Begriffe haben, wenn wir diese Begriffe mit geeigneten Definitionen und Metalogik einführen. Wir könnten auch direkt Axiome für solche Systeme definieren, obwohl die rekursiven Definitionen der freien Variablen und der echten Substitution unübersichtlich und umständlich zu handhaben wären. Stattdessen weisen wir auf zwei Hilfsmittel hin, die in der Praxis verwendet werden können, um diese Begriffe zu imitieren. (1) Anstatt eine spezielle Notation einzuführen, um (als logische Hypothese) "`wobei $x$ nicht frei in $\varphi$ ist"' auszudrücken, können wir die logische Hypothese $\vdash(\varphi\to\forall x\,\varphi)$ verwenden.\label{effectivelybound}\index{effektiv nicht frei}\footnote{Dies ist eine etwas schwächere Anforderung als "`wobei $x$ nicht frei in $\varphi$ ist"'. Ersetzen wir $\varphi$ durch $x=x$, so haben wir den Satz $(x=x\to\forall x\,x=x)$, der die Hypothese erfüllt, obwohl $x$ in $x=x$ frei ist. In einem solchen Fall sagen wir, dass $x$ {\em effektiv nicht frei}\index{effektiv nicht frei} in $x=x$ ist, da $x=x$ logisch äquivalent zu $\forall x\,x=x$ ist, in dem $x$ gebunden ist.} (2) Es kann gezeigt werden, dass die wff $((x=y\to\varphi)\wedge\exists x(x=y\wedge\varphi))$ (mit den üblichen Definitionen von $\wedge$ und $\exists$; siehe Beispiel~4 unten) logisch äquivalent ist zu "`die wff, die sich aus der echten Substitutiong von $y$ für $x$ in $\varphi$ ergibt"'. Das funktioniert unabhängig davon, ob $x$ und $y$ verschieden sind oder nicht. \subsection{Metalogische Vollständigkeit}\index{metalogische Vollständigkeit} -In dem System von Beispiel~2 sind die folgenden Prä-Aussagen beweisbar (und ihre Redukte sind beweisbare Aussagen): +In dem System von Beispiel~2 sind die folgenden Prä-Aussagen beweisbar (und ihre Redukte sind beweisbare Aussagen): \begin{eqnarray*} & \langle\{\{x,y\}\},T,\varnothing, \langle \vdash\lnot\forall x\lnot x=y @@ -8619,23 +8620,23 @@ \subsection{Metalogische Vollständigkeit}\index{metalogische Vollständigkeit} \langle \vdash\lnot\forall x\lnot x=x \rangle\rangle & \end{eqnarray*} -wohingegen die folgende Prä-Aussage meines Wissens nach nicht beweisbar ist (aber wir werden in der folgenden Diskussion so tun, als ob sie es nicht wäre: +wohingegen die folgende Prä-Aussage meines Wissens nach nicht beweisbar ist (aber wir werden in der folgenden Diskussion so tun, als ob sie es nicht wäre: \begin{eqnarray*} & \langle\varnothing,T,\varnothing, \langle \vdash\lnot\forall x\lnot x=y \rangle\rangle & \end{eqnarray*} -Mit anderen Worten, wir können "`$\lnot\forall x\lnot x=y$, wobei $x$ und $y$ verschieden sind"' und separat "`$\lnot\forall x\lnot x=x$"' beweisen, aber wir können den kombinierten allgemeinen Fall "`$\lnot\forall x\lnot x=y$"' nicht beweisen, der keine zusätzlich Bedingung hat. Dies beeinträchtigt jedoch nicht die logische Vollständigkeit, da die Variablen wirklich Metavariablen sind und die beiden beweisbaren Fälle zusammen alle möglichen Fälle abdecken. Der dritte Fall kann als ein Metatheorem betrachtet werden, dessen direkter Beweis mit dem System von Beispiel~2 außerhalb der Möglichkeiten des formalen Systems liegt. +Mit anderen Worten, wir können "`$\lnot\forall x\lnot x=y$, wobei $x$ und $y$ verschieden sind"' und separat "`$\lnot\forall x\lnot x=x$"' beweisen, aber wir können den kombinierten allgemeinen Fall "`$\lnot\forall x\lnot x=y$"' nicht beweisen, der keine zusätzlich Bedingung hat. Dies beeinträchtigt jedoch nicht die logische Vollständigkeit, da die Variablen wirklich Metavariablen sind und die beiden beweisbaren Fälle zusammen alle möglichen Fälle abdecken. Der dritte Fall kann als ein Metatheorem betrachtet werden, dessen direkter Beweis mit dem System von Beispiel~2 außerhalb der Möglichkeiten des formalen Systems liegt. -Außerdem ist im System von Beispiel~2 die folgende Anweisung meines Wissens nicht beweisbar (wiederum eine Vermutung, die wir als wahr unterstellen werden): +Außerdem ist im System von Beispiel~2 die folgende Anweisung meines Wissens nicht beweisbar (wiederum eine Vermutung, die wir als wahr unterstellen werden): \begin{eqnarray*} & \langle\varnothing,T,\varnothing, \langle \vdash(\forall x\, \varphi\to\varphi) \rangle\rangle & \end{eqnarray*} -Stattdessen können wir nur spezielle Fälle von $\varphi$ mit individuellen Metavariablen beweisen und durch Induktion über die Formellänge die obige allgemeine Anweisung als Metatheorem außerhalb unseres formalen Systems beweisen. Die Einzelheiten dieses Beweises finden sich in \cite{Kalish}. +Stattdessen können wir nur spezielle Fälle von $\varphi$ mit individuellen Metavariablen beweisen und durch Induktion über die Formellänge die obige allgemeine Anweisung als Metatheorem außerhalb unseres formalen Systems beweisen. Die Einzelheiten dieses Beweises finden sich in \cite{Kalish}. -Es gibt jedoch ein System der Prädikatenlogik, in dem alle derartigen "`einfachen Metatheoreme"' wie die obigen direkt bewiesen werden können, und wir stellen es in Beispiel~3 vor. Ein {\em einfaches Metatheorem}\index{einfaches Metatheorem} ist jede Aussage des formalen Systems aus Beispiel~2, in dem alle disjukte Variableneinschränkung entweder aus zwei individuellen Metavariablen oder einer individuellen Metavariablen und einer wff-Metavariablen bestehen, und die durch Kombination von Fällen außerhalb des Systems wie oben bewiesen werden kann. Ein System ist {\em metalogisch vollständig}\index{metalogische Vollständigkeit}, wenn alle seine einfachen Metatheoreme (direkt) beweisbare Aussagen sind. Die genaue Definition von "`einfachem Metatheorem"' und der Beweis der "`metalogischen Vollständigkeit"' von Beispiel~3 findet sich in Bemerkung 9.6 und Theorem 9.7 von \cite{Megill}.\index{Megill, Norman} +Es gibt jedoch ein System der Prädikatenlogik, in dem alle derartigen "`einfachen Metatheoreme"' wie die obigen direkt bewiesen werden können, und wir stellen es in Beispiel~3 vor. Ein {\em einfaches Metatheorem}\index{einfaches Metatheorem} ist jede Aussage des formalen Systems aus Beispiel~2, in dem alle disjukte Variableneinschränkung entweder aus zwei individuellen Metavariablen oder einer individuellen Metavariablen und einer wff-Metavariablen bestehen, und die durch Kombination von Fällen außerhalb des Systems wie oben bewiesen werden kann. Ein System ist {\em metalogisch vollständig}\index{metalogische Vollständigkeit}, wenn alle seine einfachen Metatheoreme (direkt) beweisbare Aussagen sind. Die genaue Definition von "`einfachem Metatheorem"' und der Beweis der "`metalogischen Vollständigkeit"' von Beispiel~3 findet sich in Bemerkung 9.6 und Theorem 9.7 von \cite{Megill}.\index{Megill, Norman} \begin{sloppy} \subsection{Beispiel~3 --- Metalogisch vollständige Prädikatenlogik mit Gleichheit} @@ -8734,13 +8735,13 @@ \subsection{Beispiel~3 --- Metalogisch vollständige Prädikatenlogik mit Gleich \end{itemize} \end{itemize} -Es ist zwar bekannt, dass diese Axiome "`metalogisch vollständig"' sind, aber es ist nicht bekannt, ob sie im metalogischen Sinne unabhängig sind (d.h. keines ist redundant); insbesondere, ob irgendein Axiom (möglicherweise mit zusätzlichen optionalen disjunkte Variableneinschränkungen zur Verwendung von beliebigen Dummy-Variablen in seinem Beweis) aus den anderen beweisbar ist. Beachten Sie, dass metalogische Unabhängigkeit eine schwächere Anforderung ist als Unabhängigkeit im üblichen logischen Sinne. Nicht alle der oben genannten Axiome sind logisch unabhängig: beispielsweise kann C9$'$ als Metatheorem aus den anderen bewiesen werden, und zwar außerhalb des formalen Systems, indem die möglichen Fälle von unterscheidbaren Variablen kombiniert werden. +Es ist zwar bekannt, dass diese Axiome "`metalogisch vollständig"' sind, aber es ist nicht bekannt, ob sie im metalogischen Sinne unabhängig sind (d.h. keines ist redundant); insbesondere, ob irgendein Axiom (möglicherweise mit zusätzlichen optionalen disjunkte Variableneinschränkungen zur Verwendung von beliebigen Dummy-Variablen in seinem Beweis) aus den anderen beweisbar ist. Beachten Sie, dass metalogische Unabhängigkeit eine schwächere Anforderung ist als Unabhängigkeit im üblichen logischen Sinne. Nicht alle der oben genannten Axiome sind logisch unabhängig: beispielsweise kann C9$'$ als Metatheorem aus den anderen bewiesen werden, und zwar außerhalb des formalen Systems, indem die möglichen Fälle von unterscheidbaren Variablen kombiniert werden. \subsection{Beispiel~4 --- Hinzufügen von Definitionen}\index{Definition} -Es gibt mehrere Möglichkeiten, einem formalen System Definitionen hinzuzu\-fügen. Der wahrscheinlich beste Weg ist, Definitionen überhaupt nicht als Teil des formalen Systems zu betrachten, sondern als Abkürzungen, die Teil der erklärenden Metalogik außerhalb des formalen Systems sind. Der Einfachheit halber können wir jedoch das formale System selbst verwenden, um Definitionen einzubeziehen, indem wir sie als axiomatische Erweiterungen zum System hinzufügen. Dies könnte durch das Hinzufügen einer Konstante geschehen, die den Begriff "`ist definiert als"' zusammen mit Axiomen für diesen Begriff repräsentiert. Aber es gibt einen schöneren Weg, zumindest meiner Meinung nach, der Definitionen als direkte Erweiterungen der Sprache und nicht als extralogische primitive Begriffe einführt. Wir führen zusätzliche logische Junktoren ein und stellen Axiome für sie bereit. Für Logiksysteme wie die Beispiele 1 bis 3 müssen die zusätzlichen Axiome in dem Sinne konservativ sein, dass keine wff des ursprünglichen Systems, das kein Theorem war (wenn der ursprüngliche Begriff "`wff"' natürlich durch "`$\vdash$"' ersetzt wird), zu einem Theorem des erweiterten Systems wird. In diesem Beispiel erweitern wir Beispiel~3 (oder 2) mit Standardabkürzungen der Logik. +Es gibt mehrere Möglichkeiten, einem formalen System Definitionen hinzuzu\-fügen. Der wahrscheinlich beste Weg ist, Definitionen überhaupt nicht als Teil des formalen Systems zu betrachten, sondern als Abkürzungen, die Teil der erklärenden Metalogik außerhalb des formalen Systems sind. Der Einfachheit halber können wir jedoch das formale System selbst verwenden, um Definitionen einzubeziehen, indem wir sie als axiomatische Erweiterungen zum System hinzufügen. Dies könnte durch das Hinzufügen einer Konstante geschehen, die den Begriff "`ist definiert als"' zusammen mit Axiomen für diesen Begriff repräsentiert. Aber es gibt einen schöneren Weg, zumindest meiner Meinung nach, der Definitionen als direkte Erweiterungen der Sprache und nicht als extralogische primitive Begriffe einführt. Wir führen zusätzliche logische Junktoren ein und stellen Axiome für sie bereit. Für Logiksysteme wie die Beispiele 1 bis 3 müssen die zusätzlichen Axiome in dem Sinne konservativ sein, dass keine wff des ursprünglichen Systems, das kein Theorem war (wenn der ursprüngliche Begriff "`wff"' natürlich durch "`$\vdash$"' ersetzt wird), zu einem Theorem des erweiterten Systems wird. In diesem Beispiel erweitern wir Beispiel~3 (oder 2) mit Standardabkürzungen der Logik. -Wir erweitern $\mbox{\em CN}$ aus Beispiel~3 um neue Konstanten $\{\leftrightarrow, \wedge,\vee,\exists\}$, die der logischen Äquivalenz\index{logische Äquivalenz ($\leftrightarrow$)}\index{Bikonditional ($\leftrightarrow$)}, Konjunktion\index{Konjunktion ($\wedge$)}, Disjunktion\index{Disjunktion ($\vee$)} und dem Existenzquantor\index{Existenzquantor ($\exists$)} entsprechen. Wir erweitern $\Gamma$ um die axiomatischen Ausagen, die die Redukte der folgenden Prä-Aussagen sind: +Wir erweitern $\mbox{\em CN}$ aus Beispiel~3 um neue Konstanten $\{\leftrightarrow, \wedge,\vee,\exists\}$, die der logischen Äquivalenz\index{logische Äquivalenz ($\leftrightarrow$)}\index{Bikonditional ($\leftrightarrow$)}, Konjunktion\index{Konjunktion ($\wedge$)}, Disjunktion\index{Disjunktion ($\vee$)} und dem Existenzquantor\index{Existenzquantor ($\exists$)} entsprechen. Wir erweitern $\Gamma$ um die axiomatischen Ausagen, die die Redukte der folgenden Prä-Aussagen sind: \begin{list}{}{\itemsep 0.0pt} \item[] $\langle\varnothing,T,\varnothing, \langle \mbox{wff\ }(\varphi\leftrightarrow\psi)\rangle\rangle$ @@ -8770,14 +8771,14 @@ \subsection{Beispiel~4 --- Hinzufügen von Definitionen}\index{Definition} \langle\vdash (\exists x \,\varphi\leftrightarrow \lnot \forall x \lnot \varphi)\rangle\rangle$ \end{list} -Die ersten drei logischen Axiome (Aussagen, die "`$\vdash$"' enthalten) führen die logische Äquivalenz, "`$\leftrightarrow$"', ein und definieren sie effektiv. Die letzten drei verwenden "`$\leftrightarrow$"' effektiv in der bedeutung von "`ist definiert als"'. +Die ersten drei logischen Axiome (Aussagen, die "`$\vdash$"' enthalten) führen die logische Äquivalenz, "`$\leftrightarrow$"', ein und definieren sie effektiv. Die letzten drei verwenden "`$\leftrightarrow$"' effektiv in der bedeutung von "`ist definiert als"'. \subsection{Beispiel~5 --- ZFC Mengenlehre}\index{ZFC-Mengenlehre} -Hier fügen wir dem System in Beispiel~4 die Axiome der Zermelo--Fraenkel-Mengenlehre mit Auswahlaxionm hinzu. Der Einfachheit halber verwenden wir die Definitionen aus Beispiel~4. +Hier fügen wir dem System in Beispiel~4 die Axiome der Zermelo--Fraenkel-Mengenlehre mit Auswahlaxionm hinzu. Der Einfachheit halber verwenden wir die Definitionen aus Beispiel~4. -In der $\mbox{\em CN}$ aus Beispiel~4 (die Beispiel~3 erweitert), ersetzen wir das Symbol $R$ durch das Symbol $\in$. Genauer gesagt, wir entfernen aus $\Gamma$ aus Beispiel~4 die drei axiomatischen Aussagegen, die $R$ enthalten, und ersetzen sie durch die Redukte der folgenden: +In der $\mbox{\em CN}$ aus Beispiel~4 (die Beispiel~3 erweitert), ersetzen wir das Symbol $R$ durch das Symbol $\in$. Genauer gesagt, wir entfernen aus $\Gamma$ aus Beispiel~4 die drei axiomatischen Aussagegen, die $R$ enthalten, und ersetzen sie durch die Redukte der folgenden: \begin{list}{}{\itemsep 0.0pt} \item[] $\langle\varnothing,T,\varnothing, \langle \mbox{wff\ }x\in y\rangle\rangle$ @@ -8788,14 +8789,14 @@ \subsection{Beispiel~5 --- ZFC Mengenlehre}\index{ZFC-Mengenlehre} \varnothing, \langle \vdash(x=y\to(z\in x\to z\in y))\rangle\rangle$ \end{list} -Unter der Annahme, dass $D=\{\{\alpha,\beta\}\in \mbox{\em DV}\,|\alpha,\beta\in \mbox{\em Vr}\}$ (mit anderen Worten müssen alle einzelnen Variablen verschieden sein), erweitern wir $\Gamma$ um die ZFC-Axiome, genannt +Unter der Annahme, dass $D=\{\{\alpha,\beta\}\in \mbox{\em DV}\,|\alpha,\beta\in \mbox{\em Vr}\}$ (mit anderen Worten müssen alle einzelnen Variablen verschieden sein), erweitern wir $\Gamma$ um die ZFC-Axiome, genannt Extensionalität\index{Extensionalitätsaxiom}, Ersetzung\index{Ersetzungsaxiom}, Vereinigung\index{Vereinigungsaxiom}, Potenzmenge\index{Potenzmengenaxiom}, Regelmäßigkeit\index{Fundierungsaxiom}, Unendlichkeit\index{Unendlichkeitsaxiom} und -dem Auswahlaxiom\index{Auswahlaxiom}, die die Redukte der folgenden Prä-Aussagen sind: +dem Auswahlaxiom\index{Auswahlaxiom}, die die Redukte der folgenden Prä-Aussagen sind: \begin{list}{}{\itemsep 0.0pt} \item[Ext] $\langle D,T, \varnothing, @@ -8837,15 +8838,15 @@ \subsection{Beispiel~6 --- Begriff der Klasse in der Mengenlehre}\label{class} Ein leistungsfähiges Hilfsmittel, das die Mengenlehre vereinfacht (und das wir die ganze Zeit in unserer informellen Beschreibungssprache verwendet haben), ist die Notation der {\em Klassenabstraktion}\index{Klassenabstraktion}\index{Abstraktionsklasse}. Die von uns eingeführten Definitionen werden von Takeuti und Zaring \cite{Takeuti}\index{Takeuti, Gaisi} oder Quine \cite{Quine}\index{Quine, Willard Van Orman} rigoros als konservativ nachgewiesen. Die Schlüsselidee ist die Einführung der Notation $\{x|\mbox{---}\}$ für Abstraktionsklassen, was "`die Klasse aller $x$, so dass ---"' bedeutet, und die Einführung von (Meta-)Variablen, die sich über sie erstrecken. Eine Abstraktionsklasse kann eine Menge sein oder auch nicht, je nachdem, ob sie (als Menge) existiert. Eine Klasse, die nicht (als Menge) existiert, nennt man eine {\em echte Klasse}\index{echte Klasse}\index{Klasse!echte}. -Zur Veranschaulichung der Verwendung von Abstraktionsklassen geben wir einige Beispiele für Definitionen, die von ihnen Gebrauch machen: die leere Menge, die Klassenvereinigung und das ungeordnete Paar. Viele weitere derartige Definitionen finden sich in der Metamath-Datenbasis für Mengenlehre, \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})}. +Zur Veranschaulichung der Verwendung von Abstraktionsklassen geben wir einige Beispiele für Definitionen, die von ihnen Gebrauch machen: die leere Menge, die Klassenvereinigung und das ungeordnete Paar. Viele weitere derartige Definitionen finden sich in der Metamath-Datenbasis für Mengenlehre, \texttt{set.mm}\index{Mengenlehre-Datenbasis (\texttt{set.mm})}. % We intentionally break up the sequence of math symbols here % because otherwise the overlong line goes beyond the page in narrow mode. -Wir erweitern $\mbox{\em CN}$ aus Beispiel~5 um neue Symbole $\{$ $\mbox{class},$ $\{,$ $|,$ $\},$ $\varnothing,$ $\cup,$ $,$ $\}$, wobei die inneren Klammern und das letzte Komma konstante Symbole sind. (Wie zuvor sollte unsere doppelte Verwendung einiger mathematischer Symbole sowohl für unsere Beschreibungssprache als auch als Primitive des formalen Systems aus dem Kontext heraus klar sein). +Wir erweitern $\mbox{\em CN}$ aus Beispiel~5 um neue Symbole $\{$ $\mbox{class},$ $\{,$ $|,$ $\},$ $\varnothing,$ $\cup,$ $,$ $\}$, wobei die inneren Klammern und das letzte Komma konstante Symbole sind. (Wie zuvor sollte unsere doppelte Verwendung einiger mathematischer Symbole sowohl für unsere Beschreibungssprache als auch als Primitive des formalen Systems aus dem Kontext heraus klar sein). -Wir erweitern $\mbox{\em VR}$ aus Beispiel~5 mit einer Menge von {\em Klassenvariablen}\index{Klassenvariable} $\{A,B,C,\ldots\}$. Wir erweitern das $T$ aus Beispiel~5 mit $\{\langle \mbox{class\ } A\rangle, \langle \mbox{class\ }B\rangle,$ $\langle \mbox{class\ } C\rangle, \ldots\}$. +Wir erweitern $\mbox{\em VR}$ aus Beispiel~5 mit einer Menge von {\em Klassenvariablen}\index{Klassenvariable} $\{A,B,C,\ldots\}$. Wir erweitern das $T$ aus Beispiel~5 mit $\{\langle \mbox{class\ } A\rangle, \langle \mbox{class\ }B\rangle,$ $\langle \mbox{class\ } C\rangle, \ldots\}$. -Um unsere Definitionen einzuführen, fügen wir zu $\Gamma$ aus Beispiel~5 die axiomatischen Aussagen hinzu, die die Redukte der folgenden Prä-Aussagen sind: +Um unsere Definitionen einzuführen, fügen wir zu $\Gamma$ aus Beispiel~5 die axiomatischen Aussagen hinzu, die die Redukte der folgenden Prä-Aussagen sind: \begin{list}{}{\itemsep 0.0pt} \item[] $\langle\varnothing,T,\varnothing, \langle \mbox{class\ }x\rangle\rangle$ @@ -8869,9 +8870,9 @@ \subsection{Beispiel~6 --- Begriff der Klasse in der Mengenlehre}\label{class} ( x = A \wedge x \in B ) ) \rangle\rangle$ \end{list} -Hier sagen wir, dass eine individuelle Variable eine Klasse ist; $\{x|\varphi\}$ ist eine Klasse; und wir erweitern die Definition einer wff, um Klassengleichheit und -zugehörigkeit einzuschließen. Axiom Ab definiert die Zugehörigkeit einer Variablen zu einer Klassenabstraktion; die rechte Seite kann gelesen werden als "`die wff, die sich aus der echten Substitution von $y$ für $x$ in $\varphi$ ergibt."'\footnote{Anmerkung: Diese Definition macht die Einführung einer separaten Notation ähnlich $\varphi(x|y)$ für die echte Substitution überflüssig, obwohl wir dies aus Gründen der Konvention tun könnten. Übrigens wäre $\varphi(x|y)$ in seiner jetzigen Form in den formalen Systemen unserer Beispiele mehrdeutig, da wir nicht wissen würden, ob $\lnot(\varphi(x|y)$ entweder $\lnot(\varphi(x|y))$ oder $(\lnot\varphi)(x|y)$ bedeutet. Stattdessen müssten wir eine eindeutige Variante wie $(\varphi\, x|y)$ verwenden.} Die Axiome Eq und El erweitern die Bedeutung des bestehenden Gleichheitszeichens und des Elementprädikats. Dies ist potenziell gefährlich und muss sorgfältig begründet werden. Zum Beispiel können wir aus Eq das Extensionalitätsaxiom allein mit Prädikatenlogik ableiten; daher sollten wir das Extensionalitätsaxiom im Prinzip als logische Hypothese aufnehmen. Wir machen uns jedoch nicht die Mühe, dies zu tun, da wir dieses Axiom bereits vorher vorausgesetzt haben. Die disjunkte Variableneinschränkungen sollten verstanden werden als: "`wobei $x$ nicht in $A$ oder $B$ vorkommt."' Wir tun dies typischerweise, wenn die rechte Seite einer Definition eine individuelle Variable beinhaltet, die nicht in dem zu definierenden Ausdruck vorkommt; dies geschieht, damit die rechte Seite unabhängig von der speziellen "`Dummy'-Variable bleibt, die wir verwenden. +Hier sagen wir, dass eine individuelle Variable eine Klasse ist; $\{x|\varphi\}$ ist eine Klasse; und wir erweitern die Definition einer wff, um Klassengleichheit und -zugehörigkeit einzuschließen. Axiom Ab definiert die Zugehörigkeit einer Variablen zu einer Klassenabstraktion; die rechte Seite kann gelesen werden als "`die wff, die sich aus der echten Substitution von $y$ für $x$ in $\varphi$ ergibt."'\footnote{Anmerkung: Diese Definition macht die Einführung einer separaten Notation ähnlich $\varphi(x|y)$ für die echte Substitution überflüssig, obwohl wir dies aus Gründen der Konvention tun könnten. Übrigens wäre $\varphi(x|y)$ in seiner jetzigen Form in den formalen Systemen unserer Beispiele mehrdeutig, da wir nicht wissen würden, ob $\lnot(\varphi(x|y)$ entweder $\lnot(\varphi(x|y))$ oder $(\lnot\varphi)(x|y)$ bedeutet. Stattdessen müssten wir eine eindeutige Variante wie $(\varphi\, x|y)$ verwenden.} Die Axiome Eq und El erweitern die Bedeutung des bestehenden Gleichheitszeichens und des Elementprädikats. Dies ist potenziell gefährlich und muss sorgfältig begründet werden. Zum Beispiel können wir aus Eq das Extensionalitätsaxiom allein mit Prädikatenlogik ableiten; daher sollten wir das Extensionalitätsaxiom im Prinzip als logische Hypothese aufnehmen. Wir machen uns jedoch nicht die Mühe, dies zu tun, da wir dieses Axiom bereits vorher vorausgesetzt haben. Die disjunkte Variableneinschränkungen sollten verstanden werden als: "`wobei $x$ nicht in $A$ oder $B$ vorkommt."' Wir tun dies typischerweise, wenn die rechte Seite einer Definition eine individuelle Variable beinhaltet, die nicht in dem zu definierenden Ausdruck vorkommt; dies geschieht, damit die rechte Seite unabhängig von der speziellen "`Dummy'-Variable bleibt, die wir verwenden. -Wir fügen $\Gamma$ weiterhin die folgenden Definitionen (d.h. die Reduktionen der folgenden Prä-Aussagen) für die leere Menge,\index{leere Menge}, die Klassenvereinigung,\index{Vereinigung} und das ungeordnete Paar\index{ungeordnetes Paar} hinzu. Sie sollten selbsterklärend sein. Analog zu unserer Verwendung von "`$\leftrightarrow$"' zur Definition neuer wffs in Beispiel~4, verwenden wir "`$=$"' zur Definition neuer Abstraktionsbegriffe, und beide können in diesem Zusammenhang informell als "`ist definiert als"' gelesen werden. +Wir fügen $\Gamma$ weiterhin die folgenden Definitionen (d.h. die Reduktionen der folgenden Prä-Aussagen) für die leere Menge,\index{leere Menge}, die Klassenvereinigung,\index{Vereinigung} und das ungeordnete Paar\index{ungeordnetes Paar} hinzu. Sie sollten selbsterklärend sein. Analog zu unserer Verwendung von "`$\leftrightarrow$"' zur Definition neuer wffs in Beispiel~4, verwenden wir "`$=$"' zur Definition neuer Abstraktionsbegriffe, und beide können in diesem Zusammenhang informell als "`ist definiert als"' gelesen werden. \begin{list}{}{\itemsep 0.0pt} \item[] $\langle\varnothing,T,\varnothing, \langle \mbox{class\ }\varnothing\rangle\rangle$ @@ -8894,17 +8895,17 @@ \section{Metamath als formales System}\label{theorymm} Dieser Abschnitt setzt die Kenntnis der Computersprache Metamath voraus. -Unsere Theorie beschreibt formale Systeme und ihre Universen. Die Metamath-Sprache bietet eine Möglichkeit, diese mengentheoretischen Objekte auf einem Computer darzustellen. Eine Metamath-Datenbasis, die aus einer endlichen Menge von {\sc ascii}-Zeichen besteht, kann in der Regel nur eine Teilmenge eines formalen Systems und seines Universums, die normalerweise unendlich sind, beschreiben. Allerdings kann die Datenbasis eine beliebig große endliche Teilmenge des formalen Systems und seines Universums enthalten. (Natürlich kann eine Metamath-Mengenlehre-Datenbasis im Prinzip indirekt ein ganzes unendliches formales System beschreiben, indem sie die Beschreibungssprache in diesem Anhang formalisiert). +Unsere Theorie beschreibt formale Systeme und ihre Universen. Die Metamath-Sprache bietet eine Möglichkeit, diese mengentheoretischen Objekte auf einem Computer darzustellen. Eine Metamath-Datenbasis, die aus einer endlichen Menge von {\sc ascii}-Zeichen besteht, kann in der Regel nur eine Teilmenge eines formalen Systems und seines Universums, die normalerweise unendlich sind, beschreiben. Allerdings kann die Datenbasis eine beliebig große endliche Teilmenge des formalen Systems und seines Universums enthalten. (Natürlich kann eine Metamath-Mengenlehre-Datenbasis im Prinzip indirekt ein ganzes unendliches formales System beschreiben, indem sie die Beschreibungssprache in diesem Anhang formalisiert). -Für unsere Diskussion gehen wir davon aus, dass die Metamath-Datenbasis die auf S.~\pageref{framelist} beschriebene einfache Form hat, die aus allen Konstanten- und Variablendeklarationen am Anfang besteht, gefolgt von einer Folge erweiterter Frames, die jeweils durch \texttt{\$\char`\{} und \texttt{\$\char`\}} begrenzt sind. Jede Metamath-Datenbasis kann in diese Form konvertiert werden, wie auf S.~\pageref{frameconvert} beschrieben. +Für unsere Diskussion gehen wir davon aus, dass die Metamath-Datenbasis die auf S.~\pageref{framelist} beschriebene einfache Form hat, die aus allen Konstanten- und Variablendeklarationen am Anfang besteht, gefolgt von einer Folge erweiterter Frames, die jeweils durch \texttt{\$\char`\{} und \texttt{\$\char`\}} begrenzt sind. Jede Metamath-Datenbasis kann in diese Form konvertiert werden, wie auf S.~\pageref{frameconvert} beschrieben. -Die mathematischen Symbol-Token einer Metamath-Quelldatei, die mit den Anweisungen \texttt{\$c} und \texttt{\$v} deklariert werden, sind Namen, die wir den Repräsentanten von $\mbox{\em CN}$ und $\mbox{\em VR}$ zuweisen. Der Eindeutigkeit halber könnten wir annehmen, dass das erste mathematische Symbol, das als Variable deklariert wird, $v_0$ entspricht, das zweite $v_1$ usw., obwohl die gewählte Zuordnung nicht von bedeutung ist. +Die mathematischen Symbol-Token einer Metamath-Quelldatei, die mit den Anweisungen \texttt{\$c} und \texttt{\$v} deklariert werden, sind Namen, die wir den Repräsentanten von $\mbox{\em CN}$ und $\mbox{\em VR}$ zuweisen. Der Eindeutigkeit halber könnten wir annehmen, dass das erste mathematische Symbol, das als Variable deklariert wird, $v_0$ entspricht, das zweite $v_1$ usw., obwohl die gewählte Zuordnung nicht von bedeutung ist. -In der Metamath-Sprache entspricht jede \texttt{\$d}-, \texttt{\$f}- und \texttt{\$e}-Quellanweisung in einem erweiterten Rahmen (Abschnitt~\ref{frames}) jeweils einem Element der Sammlungen $D$, $T$ und $H$ in einer Aussage $\langle D_M,T_M,H,A\rangle$ des formalen Systems. Die auf diese Metamath-Schlüsselwörter folgenden Zeichenketten mit mathematischen Symbolen entsprechen einem Variablenpaar (im Fall von \texttt{\$d}) oder einem Ausdruck (für die beiden anderen Schlüsselwörter). Die mathematische Symbolkette nach einer \texttt{\$a}-Quellanweisung entspricht dem Ausdruck $A$ in einer axiomatischen Aussage des formalen Systems; die nach einer \texttt{\$p}-Quellanweisung entspricht $A$ in einer beweisbaren Aussage, die nicht axiomatisch ist. Mit anderen Worten: Jeder erweiterte Rahmen in einer Metamath-Datenbasis entspricht einer Prä-Aussage des formalen Systems, und ein Rahmen entspricht einer Aussage des formalen Systems\footnote{Anm. der Übersetzer: Im englischen Originaltext folgt hier ein Hinweis auf die doppelte Bedeutung des Wortes "`statement"', was wir durch die unterschiedliche Übersetzung ("`Aussage"' im formalen System, "`Anweisung"' in der Metamath-Datenbasis) vermieden haben.}. +In der Metamath-Sprache entspricht jede \texttt{\$d}-, \texttt{\$f}- und \texttt{\$e}-Quellanweisung in einem erweiterten Rahmen (Abschnitt~\ref{frames}) jeweils einem Element der Sammlungen $D$, $T$ und $H$ in einer Aussage $\langle D_M,T_M,H,A\rangle$ des formalen Systems. Die auf diese Metamath-Schlüsselwörter folgenden Zeichenketten mit mathematischen Symbolen entsprechen einem Variablenpaar (im Fall von \texttt{\$d}) oder einem Ausdruck (für die beiden anderen Schlüsselwörter). Die mathematische Symbolkette nach einer \texttt{\$a}-Quellanweisung entspricht dem Ausdruck $A$ in einer axiomatischen Aussage des formalen Systems; die nach einer \texttt{\$p}-Quellanweisung entspricht $A$ in einer beweisbaren Aussage, die nicht axiomatisch ist. Mit anderen Worten: Jeder erweiterte Rahmen in einer Metamath-Datenbasis entspricht einer Prä-Aussage des formalen Systems, und ein Rahmen entspricht einer Aussage des formalen Systems\footnote{Anm. der Übersetzer: Im englischen Originaltext folgt hier ein Hinweis auf die doppelte Bedeutung des Wortes "`statement"', was wir durch die unterschiedliche Übersetzung ("`Aussage"' im formalen System, "`Anweisung"' in der Metamath-Datenbasis) vermieden haben.}. -Damit der Computer überprüfen kann, ob eine Aussage des formalen Systems beweisbar ist, wird jede entsprechende Anweisung von einem Beweis begleitet. Der Beweis hat jedoch keine Entsprechung im formalen System, sondern ist lediglich eine Möglichkeit, dem Computer die für seine Verifikation benötigten Informationen mitzuteilen. Der Beweis sagt dem Computer, {\em wie} er bestimmte Glieder des Abschlusses der Prä-Aussage des formalen Systems konstruieren soll, die dem erweiterten Rahmen der \texttt{\$p}-Anweisung entspricht. Das Endergebnis der Konstruktion ist das Element des Abschlusses, das mit der Anweisung \texttt{\$p} übereinstimmt. Das abstrakte formale System hingegen befasst sich nur mit der {\em Existenz} von Elementen des Abschlusses. +Damit der Computer überprüfen kann, ob eine Aussage des formalen Systems beweisbar ist, wird jede entsprechende Anweisung von einem Beweis begleitet. Der Beweis hat jedoch keine Entsprechung im formalen System, sondern ist lediglich eine Möglichkeit, dem Computer die für seine Verifikation benötigten Informationen mitzuteilen. Der Beweis sagt dem Computer, {\em wie} er bestimmte Glieder des Abschlusses der Prä-Aussage des formalen Systems konstruieren soll, die dem erweiterten Rahmen der \texttt{\$p}-Anweisung entspricht. Das Endergebnis der Konstruktion ist das Element des Abschlusses, das mit der Anweisung \texttt{\$p} übereinstimmt. Das abstrakte formale System hingegen befasst sich nur mit der {\em Existenz} von Elementen des Abschlusses. -Wie auf S.~\pageref{exampleref} erwähnt, entsprechen die Beispiele 1 und 3--6 im vorigen Abschnitt der Entwicklung der Logik und Mengenlehre in der Metamath-Datenbasis \texttt{set.mm}.\index{Mengenlehre-Datenbasis (\texttt{set.mm})} Es ist sicherlich aufschlussreich, sie zu vergleichen. +Wie auf S.~\pageref{exampleref} erwähnt, entsprechen die Beispiele 1 und 3--6 im vorigen Abschnitt der Entwicklung der Logik und Mengenlehre in der Metamath-Datenbasis \texttt{set.mm}.\index{Mengenlehre-Datenbasis (\texttt{set.mm})} Es ist sicherlich aufschlussreich, sie zu vergleichen. \chapter{Das MIU-System} @@ -8925,7 +8926,7 @@ \chapter{Das MIU-System} Befehl PROVE verwenden. Standardwert ist OFF, um die Anzahl der mehrdeutigen Vereinheitlichungsmöglichkeiten zu reduzieren, die während der Konstruktion eines Beweises bereitgestellt -werden müssen. $) +werden müssen. $) $( Hofstadters MIU-System ist ein einfaches Beispiel für ein formales System, das einige Konzepte von Metamath illustriert. @@ -8957,18 +8958,18 @@ \chapter{Das MIU-System} dass eine Folge eine wff ist, von der Behauptung, dass sie ein Theorem ist, zu unterscheiden; wir haben willkürlich "wff" und "|-" gewählt. $) - $c M I U |- wff $. $( Konstanten deklarieren $) + $c M I U |- wff $. $( Konstanten deklarieren $) $( Als nächstes deklarieren wir einige Variablen. $) - $v x y $. + $v x y $. $( In unserer gesamten Theorie gehen wir davon aus, dass diese -Variablen wffs darstellen. $) +Variablen wffs darstellen. $) wx $f wff x $. wy $f wff y $. $( Definition von MIU-wffs. Wir erlauben, dass die leere Folge -eine wff ist. $) +eine wff ist. $) $( Die leere Folge ist eine wff. $) we $a wff $. @@ -8988,38 +8989,38 @@ \chapter{Das MIU-System} $( Ein beliebiger Satz, der mit "I" endet, bleibt auch dann ein Satz, wenn ein "U" angehängt wird. (Wir unterscheiden das Label I_ vom mathematischen Symbol I, um der Metamath-Spezifikation -vom 24. Juni 2006 zu entsprechen.) $) +vom 24. Juni 2006 zu entsprechen.) $) I_ $a |- x I U $. $} ${ IIa $e |- M x $. $( Jeder Satz, der mit "M" beginnt, bleibt ein Satz, wenn der -Teil nach dem "M" nochmals hinzugefügt wird. $) +Teil nach dem "M" nochmals hinzugefügt wird. $) II $a |- M x x $. $} ${ IIIa $e |- x I I I y $. $( Jeder Satz mit "III" in der Mitte bleibt ein Satz, wenn das - "III" durch "U" ersetzt wird. $) + "III" durch "U" ersetzt wird. $) III $a |- x U y $. $} ${ IVa $e |- x U U y $. $( Ein beliebiger Satz mit "UU" in der Mitte bleibt ein Satz, -wenn das "UU" gelöscht wird. $) +wenn das "UU" gelöscht wird. $) IV $a |- x y $. $} $( Nun beweisen wir das Theorem MUIIU. Vielleicht ist es für Sie interessant, diesen Beweis mit dem von Hofstadter (S. 35 - 36 bzw. S. 40 in der deutschen Ausgabe) zu -vergleichen. $) +vergleichen. $) theorem1 $p |- M U I I U $= we wM wU wI we wI wU we wU wI wU we wM we wI wU we wM wI wI wI we wI wI we wI ax II II I_ III II IV $. \end{verbatim}\index{wohlgeformte Formel (wff)} -Der Befehl \texttt{show proof /lemmon/renumber} erzeugt die folgende Anzeige. Sie ist derjenigen in \cite[S.~35--36]{Hofstadter}\index{Hofstadter, Douglas R.}\footnote{Anm. der Übersetzer: S. 40 in der deutschen Ausgabe} sehr ähnlich. +Der Befehl \texttt{show proof /lemmon/renumber} erzeugt die folgende Anzeige. Sie ist derjenigen in \cite[S.~35--36]{Hofstadter}\index{Hofstadter, Douglas R.}\footnote{Anm. der Übersetzer: S. 40 in der deutschen Ausgabe} sehr ähnlich. \begin{verbatim} 1 ax $a |- M I @@ -9031,16 +9032,16 @@ \chapter{Das MIU-System} 7 6 IV $a |- M U I I U \end{verbatim} -Wir stellen fest, dass Hofstadters "`MU-Rätsel"', indem es um die Frage geht, ob MU ein Satz des MIU-Systems ist, nicht mit dem obigen System beantwortet werden kann, weil das MU-Rätsel eine Frage {\em über} das System ist. Um die Antwort auf das MU-Rätsel zu beweisen, ist ein viel ausgefeilteres System erforderlich, nämlich eines, das das MIU-System innerhalb der Mengenlehre modelliert. (Die Antwort auf das MU-Rätsel ist übrigens nein.) +Wir stellen fest, dass Hofstadters "`MU-Rätsel"', indem es um die Frage geht, ob MU ein Satz des MIU-Systems ist, nicht mit dem obigen System beantwortet werden kann, weil das MU-Rätsel eine Frage {\em über} das System ist. Um die Antwort auf das MU-Rätsel zu beweisen, ist ein viel ausgefeilteres System erforderlich, nämlich eines, das das MIU-System innerhalb der Mengenlehre modelliert. (Die Antwort auf das MU-Rätsel ist übrigens nein.) \chapter{Metamath-Sprache EBNF}% \label{BNF}% \index{Metamath-Sprache EBNF} -Dieser Anhang enthält eine formale Beschreibung der grundlegenden Syntax der Metamath-Sprache (mit komprimierten Beweisen und Unterstützung für unbekannte Beweisschritte). Sie ist definiert unter Verwendung der Erweiterten Backus--Naur-Form (EBNF)\index{erweiterte Backus--Naur-Form}\index{EBNF}, eine Notation, so wie sie in W3C\index{W3C} \textit{Extensible Markup Language (XML) 1.0 (Fifth Edition)} (W3C Recommendation 26 November 2008) unter \url{https://www.w3.org/TR/xml/#sec-notation} beschrieben und verwendet wird. +Dieser Anhang enthält eine formale Beschreibung der grundlegenden Syntax der Metamath-Sprache (mit komprimierten Beweisen und Unterstützung für unbekannte Beweisschritte). Sie ist definiert unter Verwendung der Erweiterten Backus--Naur-Form (EBNF)\index{erweiterte Backus--Naur-Form}\index{EBNF}, eine Notation, so wie sie in W3C\index{W3C} \textit{Extensible Markup Language (XML) 1.0 (Fifth Edition)} (W3C Recommendation 26 November 2008) unter \url{https://www.w3.org/TR/xml/#sec-notation} beschrieben und verwendet wird. -Die Regel \texttt{database} wird bis zum Ende der Datei (\texttt{EOF}) verarbeitet. Die Regeln erfordern schließlich das Lesen von Token, die durch ein Whitespace getrennt sind. Ein Token hat eine Großbuchstaben-Definition (siehe unten) oder ist eine String-Konstante in einem Nicht-Token (wie \texttt{'\$a'}). Wir hoffen, dass dies korrekt ist, aber wenn es einen Konflikt gibt, gelten die Regeln des Abschnitts \ref{spec}. In diesem Abschnitt werden auch nicht-syntaktische Einschränkungen erörtert, die hier nicht gezeigt werden (z. B. dass jedes neue Label-Token, das in einem \texttt{hypothesis-stmt} oder \texttt{assert-stmt} definiert wird, eindeutig sein muss). +Die Regel \texttt{database} wird bis zum Ende der Datei (\texttt{EOF}) verarbeitet. Die Regeln erfordern schließlich das Lesen von Token, die durch ein Whitespace getrennt sind. Ein Token hat eine Großbuchstaben-Definition (siehe unten) oder ist eine String-Konstante in einem Nicht-Token (wie \texttt{'\$a'}). Wir hoffen, dass dies korrekt ist, aber wenn es einen Konflikt gibt, gelten die Regeln des Abschnitts \ref{spec}. In diesem Abschnitt werden auch nicht-syntaktische Einschränkungen erörtert, die hier nicht gezeigt werden (z. B. dass jedes neue Label-Token, das in einem \texttt{hypothesis-stmt} oder \texttt{assert-stmt} definiert wird, eindeutig sein muss). \begin{verbatim} database ::= outermost-scope-stmt* @@ -9067,7 +9068,7 @@ \chapter{Metamath-Sprache EBNF}% variable-stmt ::= '$v' variable+ '$.' /* Disjunkte Variablen. Einfache disjunkte Variableneinschränkung - bestehen aus 2 Variables, d.h. "variable*" ist in diesem Fall + bestehen aus 2 Variables, d.h. "variable*" ist in diesem Fall leer. */ disjoint-stmt ::= '$d' variable variable variable* '$.' @@ -9089,7 +9090,7 @@ \chapter{Metamath-Sprache EBNF}% '$=' proof '$.' /* Ein Beweis. Innerhalb von Beweisen können sich auch - Kommentare befinden. Wenn ein '?' in dem Beweis + Kommentare befinden. Wenn ein '?' in dem Beweis enthalten ist, dann handelt es sich um einen "unvollständigen" Beweis. */ proof ::= uncompressed-proof | compressed-proof @@ -9107,11 +9108,11 @@ \chapter{Metamath-Sprache EBNF}% Ein \texttt{frame} ist eine Folge von keinem, einem oder mehreren \texttt{disjoint-{\allowbreak}stmt}- und \texttt{hypothe\-ses-{\allowbreak}stmt}-Anweisungen (möglicherweise verschachtelt mit anderen Anweisungen, die keine \texttt{assert-stmt}-Anweisungen sind), gefolgt von einem \texttt{assert-stmt}. \needspace{3\baselineskip} -Hier sind die Regeln für die lexikalische Verarbeitung (Tokenisierung) über die oben gezeigten konstanten Token hinaus. Konventionell werden diese Tokenisierungsregeln in Großbuchstaben geschrieben. Jedes Token wird so lang wie möglich gelesen. Durch ein Whitespace getrennte Token werden nacheinander gelesen; beachten Sie, dass der trennende Whitespace und die Kommentare \texttt{\$(} ... \texttt{\$)} übersprungen werden. +Hier sind die Regeln für die lexikalische Verarbeitung (Tokenisierung) über die oben gezeigten konstanten Token hinaus. Konventionell werden diese Tokenisierungsregeln in Großbuchstaben geschrieben. Jedes Token wird so lang wie möglich gelesen. Durch ein Whitespace getrennte Token werden nacheinander gelesen; beachten Sie, dass der trennende Whitespace und die Kommentare \texttt{\$(} ... \texttt{\$)} übersprungen werden. -Wenn eine Token-Definition eine andere Token-Definition verwendet, wird das Ganze als ein einziges Token betrachtet. Ein Muster, das nur Teil eines vollständigen Tokens ist, hat einen Namen, der mit einem Unterstrich ("`\_"') beginnt. Eine Implementierung könnte viele Token als \texttt{PRINTABLE-SEQUENCE} tokenisieren und dann prüfen, ob sie die hier dargestellte spezifischere Regel erfüllen. +Wenn eine Token-Definition eine andere Token-Definition verwendet, wird das Ganze als ein einziges Token betrachtet. Ein Muster, das nur Teil eines vollständigen Tokens ist, hat einen Namen, der mit einem Unterstrich ("`\_"') beginnt. Eine Implementierung könnte viele Token als \texttt{PRINTABLE-SEQUENCE} tokenisieren und dann prüfen, ob sie die hier dargestellte spezifischere Regel erfüllen. -Kommentare lassen sich nicht verschachteln, und sowohl \texttt{\$(} als auch \texttt{\$)} müssen von mindestens einem Whitespace-Zeichen (\texttt{\_WHITECHAR}) umgeben sein. Technisch gesehen enden Kommentare vor dem abschließenden \texttt{\_WHITECHAR}, aber das abschließende \texttt{\_WHITECHAR} wird sowieso ignoriert, so dass wir dieses Detail hier ignorieren. Metamath-Sprachprozessoren müssen kein \texttt{\$)} unterstützen, das unmittelbar vor dem Dateiende steht, da auf das abschließende Kommentarsymbol ein \texttt{\_WHITECHAR}, wie ein Zeilenumbruch, folgen muss. +Kommentare lassen sich nicht verschachteln, und sowohl \texttt{\$(} als auch \texttt{\$)} müssen von mindestens einem Whitespace-Zeichen (\texttt{\_WHITECHAR}) umgeben sein. Technisch gesehen enden Kommentare vor dem abschließenden \texttt{\_WHITECHAR}, aber das abschließende \texttt{\_WHITECHAR} wird sowieso ignoriert, so dass wir dieses Detail hier ignorieren. Metamath-Sprachprozessoren müssen kein \texttt{\$)} unterstützen, das unmittelbar vor dem Dateiende steht, da auf das abschließende Kommentarsymbol ein \texttt{\_WHITECHAR}, wie ein Zeilenumbruch, folgen muss. \begin{verbatim} PRINTABLE-SEQUENCE ::= _PRINTABLE-CHARACTER+ @@ -9149,7 +9150,7 @@ \chapter{Metamath-Sprache EBNF}% \chapter{Metamath 100}% \label{Metamath100}% -Die folgende Tabelle enthält alle Theoreme der Liste +Die folgende Tabelle enthält alle Theoreme der Liste "`Formalisierung von 100 Theoremen"' ("`Formalizing 100 Theorems"', siehe \url{http://www.cs.ru.nl/\%7Efreek/100/}) von Freek Wiedijk, die bereits mit Metamath bewiesen wurden (Stand 12.11.2023). Die Nr. entspricht der Nummer in der Liste von Freek Wiedijk, die Bezeichnung wurde ins Deutsche übersetzt\footnote{Anm. der Übersetzer: Dieser Anhang ist im Original nicht vorhanden} \begin{longtabu} to \textwidth { @@ -9168,11 +9169,11 @@ \chapter{Metamath 100}% 5. & Der Primzahlensatz & pnt & Mario Carneiro & 2016-06-01 \\ 7. & Das quadratische Reziprozitätsgesetz & lgsquad & Mario Carneiro & 2015-06-19 \\ 9. & Die Kreisfläche & areacirc & Brendan Leahy & 2017-08-31 \\ -10. & Der Satz von Euler (Verallgemeinerung +10. & Der Satz von Euler (Verallgemeinerung des kleinen Fermatschen Satzes) & eulerth & Mario Carneiro & 2014-02-28 \\ 11. & Der Satz von Euklid (Existenz unendlich vieler Primzahlen) & infpn2 & Norman Megill & 2005-05-05 \\ -14. & Das Baseler Problem +14. & Das Baseler Problem (Summe der reziproken Quadratzahlen) & basel & Mario Carneiro & 2014-07-30 \\ 15. & Der Fundamentalsatz der Analysis & ftc1, ftc2 & Mario Carneiro & 2014-09-03 \\ 17. & Der Moivresche Satz & demoivreALT & Steve Rodriguez & 2006-11-10 \\ @@ -9222,8 +9223,8 @@ \chapter{Metamath 100}% 68. & Die Gaußsche Summenformel & arisum & Frédéric Liné & 2006-11-16 \\ 69. & Der Euklidische Algorithmus & eucalg & Paul Chapman & 2011-03-31 \\ 70. & Der Euklid--Euler-Satz über vollkommene Zahlen & perfect & Mario Carneiro & 2016-05-17 \\ -71. & Der Satz von Lagrange & lagsubg, lagsubg2 - & Mario Carneiro & 2014-07-11 \\ +71. & Der Satz von Lagrange & lagsubg, lagsubg2 + & Mario Carneiro & 2014-07-11 \\ 72. & Die Sylow-Sätze & sylow1, sylow2, sylow2b, sylow3 & Mario Carneiro & 2015-01-19 \\ 73. & Der Satz von Erdős und Szekeres & erdsze, erdsze2 & Mario Carneiro & 2015-01-28 \\ @@ -9241,7 +9242,7 @@ \chapter{Metamath 100}% 85. & Quersummenregel für die Teilbarkeit durch 3 & 3dvds & Mario Carneiro & 2014-07-14 \\ 86. & Lebesgue-Maß und -Integral & itgcl & Mario Carneiro & 2014-06-29 \\ 87. & Der Satz von Desargues & dath & Norman Megill & 2012-08-20 \\ -88. & Die Anzahl der fixpunktfreien Permutationen & derangfmla, subfaclim +88. & Die Anzahl der fixpunktfreien Permutationen & derangfmla, subfaclim & Mario Carneiro & 2015-01-28 \\ 89. & Der Restpolynom-Satz & facth, plyrem & Mario Carneiro & 2014-07-26 \\ 90. & Die Stirling-Formel & stirling & Glauco Siliprandi & 2017-06-29 \\ @@ -9254,7 +9255,7 @@ \chapter{Metamath 100}% (Stefan O'Rear) & 2019-02-21 \\ 98. & Das Bertrandsche Postulat & bpos & Mario Carneiro & 2014-03-15 \\ \end{longtabu} -\pagebreak +\pagebreak \chapter{Glossar}% \section{Deutsch - Englisch} @@ -9429,7 +9430,7 @@ \section{Deutsch - Englisch} Intuitionismus & intuitionism \\ & \\ Junktor & connective \\ - & \\ + & \\ Kardinalität & cardinality \\ Kardinalzahl & cardinal \\ Kartesisches Produkt & Cartesian product \\ @@ -9660,7 +9661,7 @@ \section{Deutsch - Englisch} Zitat & citation \\ zulässige Definition & proper definition \\ Zuordnung & mapping \\ - zusammengesetzte Deklaration & compound declaration \\ + zusammengesetzte Deklaration & compound declaration \\ \end{longtabu} \pagebreak @@ -10063,7 +10064,7 @@ \section{Englisch - Deutsch} word processing & Textverarbeitung \\ & \\ Zermelo--Fraenkel set theory & Zermelo--Fraenkel-{\allowbreak}Mengenlehre \\ - ZFC set theory & ZFC-Mengenlehre \\ + ZFC set theory & ZFC-Mengenlehre \\ \end{longtabu} % \chapter{Disclaimer and Trademarks} diff --git a/metamath.tex b/metamath.tex index 959b9ed..937d14e 100644 --- a/metamath.tex +++ b/metamath.tex @@ -763,7 +763,8 @@ % * "tabu" much more capable and seems to be recommended. So use that. \usepackage{makecell} % Enable forced line splits within a table cell -\usepackage{longtable} % Enable multi-page tables +% v4.13 needed for tabu: https://tex.stackexchange.com/questions/600724/dimension-too-large-after-recent-longtable-update +\usepackage{longtable}[=v4.13] % Enable multi-page tables \usepackage{tabu} % Multi-page tables with wrapped text in a cell % You can find more Tex packages using commands like: