Tupel: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 32: Zeile 32:
Die '''Länge''' eines Tupel ist gleich der [[Mächtigkeit]] der zugehörigen Indexmenge.
Die '''Länge''' eines Tupel ist gleich der [[Mächtigkeit]] der zugehörigen Indexmenge.


Ein Tupel der Länge $l$ wird auch $l$-'''Tupel''' genannt.
Ein Tupel der Länge <math>l</math> wird auch <math>l</math>-'''Tupel''' genannt.


===Gleichheit zweier Tupel===
===Gleichheit zweier Tupel===
Zeile 307: Zeile 307:


====Indexbereich und Indexmenge (Tupel in Attributnotation)====
====Indexbereich und Indexmenge (Tupel in Attributnotation)====
Die Definitionsmenge <math>I := I(t) = \rm{Def}(f) := \{x| \exists y: [x,y] \in t\}</math> der Funktion <math>t</math> heißt
Die Definitionsmenge <math>I := I(t) = \rm{Def}(f) := \{x| \bigvee y: [x,y] \in t\}</math> der Funktion <math>t</math> heißt
in diesem Fall '''Indexbereich''' oder, falls es sich bei <math>I</math> um eine echte {{Menge}} und nicht um eine {{Unmenge}} handelt, '''Indexmenge'''.
in diesem Fall '''Indexbereich''' oder, falls es sich bei <math>I</math> um eine echte {{Menge}} und nicht um eine {{Unmenge}} handelt, '''Indexmenge'''.


Zeile 326: Zeile 326:
[[geordnetes Paar|geordneten Paaren]] ist, die die Eindeutigkeitsbedingung  
[[geordnetes Paar|geordneten Paaren]] ist, die die Eindeutigkeitsbedingung  


{{Formel|\forall x, y_1, y_2: [x,y_1] \in f \wedge [x,y_2] \in f \rightarrow y_1{{=}}y_2}}
{{Formel|\bigwedge x, y_1, y_2: [x,y_1] \in f \wedge [x,y_2] \in f \rightarrow y_1{{=}}y_2}}
erfüllt.
erfüllt.


Zeile 339: Zeile 339:
Der Begriff des [[geordnetes Paar|geordneten Paars]] kann induktiv für eine beliebige endliche Anzahl von Elementen verallgemeinert werden:
Der Begriff des [[geordnetes Paar|geordneten Paars]] kann induktiv für eine beliebige endliche Anzahl von Elementen verallgemeinert werden:


Eine Menge oder Klasse $t$ heißt '''Tupel''' (in Listennotation) – in Zeichen $\rm{TupV}(t)$ – wenn entweder $t=\emptyset$ gilt
Eine Menge oder Klasse <math>t</math> heißt '''Tupel''' (in Listennotation) – in Zeichen <math>\rm{TupV}(t)</math> – wenn entweder <math>t=\emptyset</math> gilt
oder wenn $t$ ein [[geordnetes Paar]] $[x,t]$ ist, dessen erstes Element beliebig und dessen zweites Element ein Tupel ist:
oder wenn <math>t</math> ein [[geordnetes Paar]] <math>[x,t]</math> ist, dessen erstes Element beliebig und dessen zweites Element ein Tupel ist:


<div class="formula">$\rm{TupV}(\emptyset)$ </div>
<div class="formula"><math>\rm{TupV}(\emptyset)</math> </div>
<div class="formula">$\bigwedge x, t: \rm{TupV}(t) \rightarrow \rm{TupV}([x,t])$</div>
<div class="formula"><math>\bigwedge x, t: \rm{TupV}(t) \rightarrow \rm{TupV}([x,t])</math></div>


Andere Tupel in Listennotation gibt es nicht.
Andere Tupel in Listennotation gibt es nicht.
Das heißt, für jedes Tupel $t \not= \emptyset$ gibt es ein Element $x$ <br />und ein Tupel $t'$ mit $t = [x,t']$:
Das heißt, für jedes Tupel <math>t \not= \emptyset</math> gibt es ein Element <math>x</math> <br />und ein Tupel <math>t'</math> mit <math>t = [x,t']</math>:
<div class="formula">$\bigwedge t: (\rm{TupV}(t) \wedge t \not= \emptyset \rightarrow \bigvee x, t': (\rm{TupV}(t') \wedge t = [x,t']))$</div>
<div class="formula"><math>\bigwedge t: (\rm{TupV}(t) \wedge t \not= \emptyset \rightarrow \bigvee x, t': (\rm{TupV}(t') \wedge t = [x,t']))</math></div>


Das Tupel $t'$ ist wegen des [[geordnetes Paar#Definition_.28Kowarschick.29|Paaraxioms]] sogar eindeutig bestimmt:
Das Tupel <math>t'</math> ist wegen des [[geordnetes Paar#Definition_.28Kowarschick.29|Paaraxioms]] sogar eindeutig bestimmt:
<div class="formula">$\bigwedge t: (\rm{TupV}(t)  \;\rightarrow\; \bigwedge x_1, x_2, t_1, t_2: (\rm{TupV}(t_1) \wedge \rm{TupV}(t_2) \wedge t = [x_1,t_1] \wedge t = [x_2,t_2] \,\rightarrow\, t_1=t_2 \wedge x_1=x_2))$</div>
<div class="formula"><math>\bigwedge t: (\rm{TupV}(t)  \;\rightarrow\; \bigwedge x_1, x_2, t_1, t_2: (\rm{TupV}(t_1) \wedge \rm{TupV}(t_2) \wedge t = [x_1,t_1] \wedge t = [x_2,t_2] \,\rightarrow\, t_1=t_2 \wedge x_1=x_2))</math></div>


In einem klassenbasierten Axiomen-System (wie es z.B. der [[Neumann-Bernays-Gödel-Mengenlehre]] zu Grunde liegt)
In einem klassenbasierten Axiomen-System (wie es z.B. der [[Neumann-Bernays-Gödel-Mengenlehre]] zu Grunde liegt)
Zeile 357: Zeile 357:
Mengenpaare keine Klassen enthalten können:  
Mengenpaare keine Klassen enthalten können:  


<div class="formula">$\bigwedge a,b: (\rm{UMg}(a) \vee \rm{UMg}(b)) \leftrightarrow (a,b) = \mathcal{V}$ </div>
<div class="formula"><math>\bigwedge a,b: (\rm{UMg}(a) \vee \rm{UMg}(b)) \leftrightarrow (a,b) = \mathcal{V}</math> </div>


In diesem Fall gilt nur:
In diesem Fall gilt nur:
<div class="formula">$\bigwedge t: (\rm{Mg}(t) \wedge \rm{TupV}(t)  \;\rightarrow\; \bigwedge x_1, x_2, t_1, t_2: (\rm{TupV}(t_1) \wedge \rm{TupV}(t_2) \wedge t = [x_1,t_1] \wedge t = [x_2,t_2] \,\rightarrow\, t_1=t_2 \wedge x_1=x_2 \wedge \rm{Mg}(x_1) \wedge \rm{Mg}(x_2) \wedge \rm{Mg}(t_1) \wedge \rm{Mg}(t_2) ))$</div>
<div class="formula"><math>\bigwedge t: (\rm{Mg}(t) \wedge \rm{TupV}(t)  \;\rightarrow\; \bigwedge x_1, x_2, t_1, t_2: (\rm{TupV}(t_1) \wedge \rm{TupV}(t_2) \wedge t = [x_1,t_1] \wedge t = [x_2,t_2] \,\rightarrow\, t_1=t_2 \wedge x_1=x_2 \wedge \rm{Mg}(x_1) \wedge \rm{Mg}(x_2) \wedge \rm{Mg}(t_1) \wedge \rm{Mg}(t_2) ))</math></div>


====Tupellänge (Tupel in Listennotation)====
====Tupellänge (Tupel in Listennotation)====


Es sei $t$ ein Tupel in Listennotation: $TupV(t)$.
Es sei <math>t</math> ein Tupel in Listennotation: <math>TupV(t)</math>.
Die Länge $\rm{lg}(t)$ von $t$ wird ebenfalls induktiv definiert:
Die Länge <math>\rm{lg}(t)</math> von <math>t</math> wird ebenfalls induktiv definiert:


<div class="formula">$\rm{lg}(\emptyset) := 0$ </div>
<div class="formula"><math>\rm{lg}(\emptyset) := 0</math> </div>
<div class="formula">$\bigwedge x, t: \rm{TupV}(t) \rightarrow \rm{lg}([x,t]) := \rm{lg}(t)+1$</div>
<div class="formula"><math>\bigwedge x, t: \rm{TupV}(t) \rightarrow \rm{lg}([x,t]) := \rm{lg}(t)+1</math></div>


Ein Tupel der Länge $l$ heißt '''$l$-Tupel in Listennotation'''.
Ein Tupel der Länge <math>l</math> heißt '''<math>l</math>-Tupel in Listennotation'''.


Das $0$-Tupel wird auch '''leeres Tupel''' genannt.
Das <math>0</math>-Tupel wird auch '''leeres Tupel''' genannt.


=====Lemma: Eindeutigkeit der Länge eines Tupels in Listennotation=====
=====Lemma: Eindeutigkeit der Länge eines Tupels in Listennotation=====
Zeile 380: Zeile 380:
'''Beweis'''
'''Beweis'''


Das leere Tupel ist das einzige Tupel der Länge $0$.
Das leere Tupel ist das einzige Tupel der Länge <math>0</math>.
Für jedes andere Tupel $t$ existiert genau ein Element $x$ und ein Tupel $t'$, für die $t=[x,t']$ gilt.
Für jedes andere Tupel <math>t</math> existiert genau ein Element <math>x</math> und ein Tupel <math>t'</math>, für die <math>t=[x,t']</math> gilt.
Für $t'$ ist die Länge laut Induktionsvoraussetzung eindeutig bestimmt und damit ist die Länge $\rm{lg}(t) = \rm{lg}(t')+1$
Für <math>t'</math> ist die Länge laut Induktionsvoraussetzung eindeutig bestimmt und damit ist die Länge <math>\rm{lg}(t) = \rm{lg}(t')+1</math>
ebenfalls eindeutig bestimmt.
ebenfalls eindeutig bestimmt.


====Indexmenge (Tupel in Listennotation)====
====Indexmenge (Tupel in Listennotation)====


Für ein Tupel $t$ in Listennotation wird die '''Indexmenge''' $I(t)$ folgendermaßen definiert:
Für ein Tupel <math>t</math> in Listennotation wird die '''Indexmenge''' <math>I(t)</math> folgendermaßen definiert:
<div class="formula">$I(t) := \{i \in \mathbb{N}: 0 < i \le \rm{lg}(t)\}$</div>
<div class="formula"><math>I(t) := \{i \in \mathbb{N}: 0 < i \le \rm{lg}(t)\}</math></div>


=====Lemma: Länge des Tupels=====
=====Lemma: Länge des Tupels=====


Die Länge eines Tupels $t$ in Listennotation ist gleich der Mächtigkeit der Indexmenge: $\rm{lg}(t) = |I(t)|$
Die Länge eines Tupels <math>t</math> in Listennotation ist gleich der Mächtigkeit der Indexmenge: <math>\rm{lg}(t) = |I(t)|</math>


'''Beweis'''
'''Beweis'''


<div class="formula">$|I(t)| = |\{i \in \mathbb{N}: 0 < i \le \rm{lg}(t)\}| = \rm{lg}(t)$</div>
<div class="formula"><math>|I(t)| = |\{i \in \mathbb{N}: 0 < i \le \rm{lg}(t)\}| = \rm{lg}(t)</math></div>


====Schlüssel und Wert (Tupel in Listennotation)====
====Schlüssel und Wert (Tupel in Listennotation)====


Es seien $t$ ein nicht-leeres Tupel in Listennotation und $I := I(t)$ die zugehörige Indexmenge.
Es seien <math>t</math> ein nicht-leeres Tupel in Listennotation und <math>I := I(t)</math> die zugehörige Indexmenge.
Die Elemente $i\in I$ der Indexmenge heißen '''Schlüssel'''.  
Die Elemente <math>i\in I</math> der Indexmenge heißen '''Schlüssel'''.  


Jedem Schlüssel $i\in I$ wird durch das
Jedem Schlüssel <math>i\in I</math> wird durch das
Tupel $t$ ein eindeutiger '''Wert''' $t_i$ zugeordnet. $t_i$ wird wieder induktiv definiert:
Tupel <math>t</math> ein eindeutiger '''Wert''' <math>t_i</math> zugeordnet. <math>t_i</math> wird wieder induktiv definiert:


Da laut Voraussetzung $t \not= \emptyset$ gilt, gibt es zwei (eindeutige) Elemente
Da laut Voraussetzung <math>t \not= \emptyset</math> gilt, gibt es zwei (eindeutige) Elemente
$x$ und $t'$ mit $\rm{TupV}(t')$ und $t=[x,t']$.  
<math>x</math> und <math>t'</math> mit <math>\rm{TupV}(t')</math> und <math>t=[x,t']</math>.  
<div class="formula"><math>t_i :=  
<div class="formula"><math>t_i :=  
   \begin{cases}  
   \begin{cases}  
Zeile 415: Zeile 415:
</math></div>
</math></div>


Man beachte, dass aus $i\in I$ stets $0 < i < \rm{lg}(t)$ folgt.
Man beachte, dass aus <math>i\in I</math> stets <math>0 < i < \rm{lg}(t)</math> folgt.
Diese [[Invariante]] bleibt im rekursiven Zweig der Definition
Diese [[Invariante]] bleibt im rekursiven Zweig der Definition
erhalten: $i>1 \rightarrow 0 < i-1 < \rm{lg}(t)-1 = \rm{lg}(t')$
erhalten: <math>i>1 \rightarrow 0 < i-1 < \rm{lg}(t)-1 = \rm{lg}(t')</math>
Das heißt, es gilt auch hier $i-1 \in I(t')$.
Das heißt, es gilt auch hier <math>i-1 \in I(t')</math>.


Für $i\notin I$ ist $t_i$ nicht definiert. Man kann in diesem Fall allerdings
Für <math>i\notin I</math> ist <math>t_i</math> nicht definiert. Man kann in diesem Fall allerdings
$t_i := \mathcal{V}$ setzen, um $t_i$ für jede beliebige Klasse $i$ zu definieren.
<math>t_i := \mathcal{V}</math> setzen, um <math>t_i</math> für jede beliebige Klasse <math>i</math> zu definieren.


====Listennotation====
====Listennotation====
Zeile 427: Zeile 427:
Für Tupel in Listennotation wird Folgende abkürzende Schreibweise eingeführt:
Für Tupel in Listennotation wird Folgende abkürzende Schreibweise eingeführt:


<div class="formula">$() := \emptyset$</div>
<div class="formula"><math>() := \emptyset</math></div>
<div class="formula">$(x_1) := [\emptyset, x_1]$</div>
<div class="formula"><math>(x_1) := [\emptyset, x_1]</math></div>
<div class="formula">$(x_1,x_2) := [[\emptyset, x_1], x_2]$</div>
<div class="formula"><math>(x_1,x_2) := [[\emptyset, x_1], x_2]</math></div>
<div class="formula">$(x_1,x_2,x_3) := [[[\emptyset, x_1], x_2], x_3]$</div>
<div class="formula"><math>(x_1,x_2,x_3) := [[[\emptyset, x_1], x_2], x_3]</math></div>


Allgemein für $n \ge 2$:
Allgemein für <math>n \ge 2</math>:
<div class="formula">$(x_1,\ldots,x_n) :=  [(x_1,\ldots,x_{n-1}), x_n] = [[[\ldots[\emptyset,x_1]\ldots], x_{n-1}], x_n]$</div>
<div class="formula"><math>(x_1,\ldots,x_n) :=  [(x_1,\ldots,x_{n-1}), x_n] = [[[\ldots[\emptyset,x_1]\ldots], x_{n-1}], x_n]</math></div>


====Anmerkungen (Tupel in Listennotation)====
====Anmerkungen (Tupel in Listennotation)====
=====Ursprung und Varianten der Listennotation=====
=====Ursprung und Varianten der Listennotation=====
Die obige Definition der Listennotation geht auf McCarthy zurück (wobei er die Liste allerdings vom letzten Element ausgehend aufbaut):
Die obige Definition der Listennotation geht auf McCarthy zurück (wobei er die Liste allerdings vom letzten Element ausgehend aufbaut):
{{Quote|The list $(m_1,m_2,···,m_n)$ is represented by the S-expression $(m_1·(m_2·(···(m_n·\rm{NIL})···)))$.<br/>
{{Quote|The list <math>(m_1,m_2,···,m_n)</math> is represented by the S-expression <math>(m_1·(m_2·(···(m_n·\rm{NIL})···)))</math>.<br/>
Here $\rm{NIL}$ is an atomic symbol used to terminate lists.<ref>{{Quelle|McCarthy, J. (1960): Recursive Functions of Symbolic Expressions and Their Computation by Machine}}</ref>}}
Here <math>\rm{NIL}</math> is an atomic symbol used to terminate lists.<ref>{{Quelle|McCarthy, J. (1960): Recursive Functions of Symbolic Expressions and Their Computation by Machine}}</ref>}}


McCarthy definiert eine [[LISP]]-Liste als abkürzende Schreibweise für eine Folge von $cons$-Zellen, d.h. als Folge von LISP-Paaren $(a \cdot b)$.  
McCarthy definiert eine [[LISP]]-Liste als abkürzende Schreibweise für eine Folge von <math>cons</math>-Zellen, d.h. als Folge von LISP-Paaren <math>(a \cdot b)</math>.  
In LISP wird eine Liste also als [[verkette Liste]] implementiert: Jede $cons$-Zelle enthält das eigentlich Listenelement sowie einen Verweis auf die Nachfolgerliste.
In LISP wird eine Liste also als [[verkette Liste]] implementiert: Jede <math>cons</math>-Zelle enthält das eigentlich Listenelement sowie einen Verweis auf die Nachfolgerliste.
Die letzte $cons$-Zelle enthält keinen Verweis, sondern die LISP-Konstante $\rm{NIL}$.  
Die letzte <math>cons</math>-Zelle enthält keinen Verweis, sondern die LISP-Konstante <math>\rm{NIL}</math>.  


In seinen ursprünglichen Publikationen wie auch im Benutzerhandbuch von LISP I<ref>{{Quelle|McCarthy, J. et. al. (1960): LISP I Programmer's Manual}}, S. 11</ref>
In seinen ursprünglichen Publikationen wie auch im Benutzerhandbuch von LISP I<ref>{{Quelle|McCarthy, J. et. al. (1960): LISP I Programmer's Manual}}, S. 11</ref>
bezeichnet McCarthy $\rm{NIL}$ lediglich als „atomares Symbol“, welches benutzt wird, um Listen zu terminieren. Erst im Beutzerhandbuch von  
bezeichnet McCarthy <math>\rm{NIL}</math> lediglich als „atomares Symbol“, welches benutzt wird, um Listen zu terminieren. Erst im Beutzerhandbuch von  
LISP 1.5<ref name="McCarthy (1965)" /> legt er zusätzlich
LISP 1.5<ref name="McCarthy (1965)" /> legt er zusätzlich
fest, dass $\rm{NIL}$ identisch zur leeren Liste $()$ ist.
fest, dass <math>\rm{NIL}</math> identisch zur leeren Liste <math>()</math> ist.


Die Definition von McCarthy ist den Definitionen von anderen Autoren, wie z.B. [[Kurt Gödel|Gödel]] oder Schmidt, vorzuziehen.  
Die Definition von McCarthy ist den Definitionen von anderen Autoren, wie z.B. [[Kurt Gödel|Gödel]] oder Schmidt, vorzuziehen.  


'''Definition von Schmidt (und diversen anderen Autoren):'''
'''Definition von Schmidt (und diversen anderen Autoren):'''
<div class="formula">$(x_1, x_2)$ ist ein (Klassen-)Paar.</div>
<div class="formula"><math>(x_1, x_2)</math> ist ein (Klassen-)Paar.</div>
<div class="formula">$(x1, x2, x3) := ((x1, x2), x3)$ ist ein (Klassen-)Tripel.</div>
<div class="formula"><math>(x1, x2, x3) := ((x1, x2), x3)</math> ist ein (Klassen-)Tripel.</div>
<div class="formula">$(x1, x2, x3, x4) := ((x1, x2, x3), x4) = (((x1, x2), x3), x4)$ ist ein (Klassen-)Quadrupel.</div>
<div class="formula"><math>(x1, x2, x3, x4) := ((x1, x2, x3), x4) = (((x1, x2), x3), x4)</math> ist ein (Klassen-)Quadrupel.</div>


Diese Definition hat zwei Nachteile:  
Diese Definition hat zwei Nachteile:  
* Es gibt kein $0$- und keine $1$-Tupel.
* Es gibt kein <math>0</math>- und keine <math>1</math>-Tupel.
* Tupel unterschiedlicher Länge können gleich sein (jedes $n$-Tupel für $n>2$ ist gleich einem $2$-Tupel; ein Beweis einer Aussage analog zu Lemma 5.3.1.1 scheitert daher beim Induktionsanfang).
* Tupel unterschiedlicher Länge können gleich sein (jedes <math>n</math>-Tupel für <math>n>2</math> ist gleich einem <math>2</math>-Tupel; ein Beweis einer Aussage analog zu Lemma 5.3.1.1 scheitert daher beim Induktionsanfang).


'''Definition von Gödel (und diversen anderen Autoren):'''
'''Definition von Gödel (und diversen anderen Autoren):'''


Gödel<ref>{{Quelle|Gödel, K. (1940): The Consistency Continuum Hypothesis}}</ref> hat Tupel im Prinzip genauso wie Schmidt definiert.
Gödel<ref>{{Quelle|Gödel, K. (1940): The Consistency Continuum Hypothesis}}</ref> hat Tupel im Prinzip genauso wie Schmidt definiert.
Zusätzlich hat er allerdings noch $1$-Tupel eingeführt:
Zusätzlich hat er allerdings noch <math>1</math>-Tupel eingeführt:
<div class="formula">$(x_1) := x_1$</div>
<div class="formula"><math>(x_1) := x_1</math></div>


Doch auch diese zusätzliche Festlegung löst die obigen Probleme nicht wirklich.
Doch auch diese zusätzliche Festlegung löst die obigen Probleme nicht wirklich.
Zeile 478: Zeile 478:
Ein Klassentupel kann nicht nur Mengen, sondern auch Unmengen als Elemente beinhalten.
Ein Klassentupel kann nicht nur Mengen, sondern auch Unmengen als Elemente beinhalten.


Beispielsweise kann man das [[Monoid]] der [[Ordinalzahlen]] $\Omega$ mit Addition $+$ und neutralem Element $0$ als Klassentupel $(\Omega,+,0)$ definieren, obwohl es sich bei $\Omega$ um eine Unmenge handelt.
Beispielsweise kann man das [[Monoid]] der [[Ordinalzahlen]] <math>\Omega</math> mit Addition <math>+</math> und neutralem Element <math>0</math> als Klassentupel <math>(\Omega,+,0)</math> definieren, obwohl es sich bei <math>\Omega</math> um eine Unmenge handelt.
Für Mengentupel gilt dagegen, dass $(\Omega,+,0)$ entweder nicht definiert ist oder gleich der Allklasse $\mathcal{V}$ ist. Im letzteren Fall sind alle Mengentupel, die ein oder mehrere Unmengen enthalten, ebenfalls
Für Mengentupel gilt dagegen, dass <math>(\Omega,+,0)</math> entweder nicht definiert ist oder gleich der Allklasse <math>\mathcal{V}</math> ist. Im letzteren Fall sind alle Mengentupel, die ein oder mehrere Unmengen enthalten, ebenfalls
gleich $\mathcal{V}$.
gleich <math>\mathcal{V}</math>.


======Objektsprache und Metasprache======
======Objektsprache und Metasprache======
Zeile 486: Zeile 486:
Mengen- und Klassentupeln besteht.
Mengen- und Klassentupeln besteht.


Für Mengen kann $TupV$ als echte [[Funktion (Mathematik)|Funktion]] definiert werden. Die zugehörigen, auf [[vollständige Induktion|vollständiger Induktion]] basierenden Beweise
Für Mengen kann <math>TupV</math> als echte [[Funktion (Mathematik)|Funktion]] definiert werden. Die zugehörigen, auf [[vollständige Induktion|vollständiger Induktion]] basierenden Beweise
können daher innerhalb der formalen Sprache ([[Metasprache|Objektsprache]]) des jeweiligen Axiomensystems der Mengenlehre (unter Zuhilfenahme des [[Unendlichkeitaxiom]]s) durchgeführt werden. In einem ersten
können daher innerhalb der formalen Sprache ([[Metasprache|Objektsprache]]) des jeweiligen Axiomensystems der Mengenlehre (unter Zuhilfenahme des [[Unendlichkeitaxiom]]s) durchgeführt werden. In einem ersten
Schritt formalisiert man innerhalb der Mengenlehre die natürlich Zahlen (samt vollständiger Induktion) und in einem zweiten Schritt wendet man diesen Formalismus bei
Schritt formalisiert man innerhalb der Mengenlehre die natürlich Zahlen (samt vollständiger Induktion) und in einem zweiten Schritt wendet man diesen Formalismus bei
den Beweisen der obigen Aussagen an.  
den Beweisen der obigen Aussagen an.  


Für Klassen kann $TupV$ dagegen nicht als echte Funktion, sondern nur als Abkürzung, definiert werden,
Für Klassen kann <math>TupV</math> dagegen nicht als echte Funktion, sondern nur als Abkürzung, definiert werden,
da eine Unmenge niemals in einer Funktion als Urbild oder Bildelement auftauchen kann.
da eine Unmenge niemals in einer Funktion als Urbild oder Bildelement auftauchen kann.
Es gilt nämlich  
Es gilt nämlich  
Zeile 498: Zeile 498:
{{Formel|\rm{UMg}(a) \vee  \rm{UMg}(b) \rightarrow \rm{UMg}((a,b))|([[Schmidt (1966)]], S. 97)}}
{{Formel|\rm{UMg}(a) \vee  \rm{UMg}(b) \rightarrow \rm{UMg}((a,b))|([[Schmidt (1966)]], S. 97)}}
{{Formel|\rightarrow \{\ldots,(a,b),\ldots\}{{=}} \mathcal{V} }}
{{Formel|\rightarrow \{\ldots,(a,b),\ldots\}{{=}} \mathcal{V} }}
Das heißt, sobald man versucht, eine Unmenge in die Definition einer Funktion $f$ als Urbild oder Bildelement einzuschleusen, degeneriert $f$ zur Allklasse.
Das heißt, sobald man versucht, eine Unmenge in die Definition einer Funktion <math>f</math> als Urbild oder Bildelement einzuschleusen, degeneriert <math>f</math> zur Allklasse.


$TupV(t)$ ist also im Falle von Klassentupeln eine Abkürzung für eine mengentheoretische Formel, genauso wie $Mg(m)$, als Abkürzung für die Formel $\exists a: m \in a$ steht (siehe {{Klasse}}).  
<math>TupV(t)</math> ist also im Falle von Klassentupeln eine Abkürzung für eine mengentheoretische Formel, genauso wie <math>Mg(m)</math>, als Abkürzung für die Formel <math>\bigvee a: m \in a</math> steht (siehe {{Klasse}}).  
Die zugehörigen Induktionsbeweise müssen in diesem Fall außerhalb des Axiomensystems der Mengenlehre auf geführt werden,
Die zugehörigen Induktionsbeweise müssen in diesem Fall außerhalb des Axiomensystems der Mengenlehre auf geführt werden,
also beispielsweise mit Hilfe der [[Metasprache]], die zur Definition des formalen System verwendet wurde.  
also beispielsweise mit Hilfe der [[Metasprache]], die zur Definition des formalen System verwendet wurde.  
Zeile 518: Zeile 518:
===Abbildung der Listen- auf die Attributnotation===
===Abbildung der Listen- auf die Attributnotation===


Für jedes $n$-Tupel $t$ in Listennotation kann ein zugehöriges Tupel $t'$ in Attributnotation definiert werden,
Für jedes <math>n</math>-Tupel <math>t</math> in Listennotation kann ein zugehöriges Tupel <math>t'</math> in Attributnotation definiert werden,
sofern es sich bei $t$ um ein „Mengentupel“ handelt, d.h. sofern das Tupel nur {{Menge}}n aber keine {{Unmenge}}n enthält, d.h., sofern $\rm{Mg}(t_i)$ für alle $i \in I(t)$:
sofern es sich bei <math>t</math> um ein „Mengentupel“ handelt, d.h. sofern das Tupel nur {{Menge}}n aber keine {{Unmenge}}n enthält, d.h., sofern <math>\rm{Mg}(t_i)</math> für alle <math>i \in I(t)</math>:


<div class="formula">$t' := \{[i,t_i]: i \in I(t)\}$</div>
<div class="formula"><math>t' := \{[i,t_i]: i \in I(t)\}</math></div>


====Lemma: Korrektheit der Abbildung der Listen- auf die Attributnotation====
====Lemma: Korrektheit der Abbildung der Listen- auf die Attributnotation====


$t$ und $t'$ beschreiben dasselbe Tupel:
<math>t</math> und <math>t'</math> beschreiben dasselbe Tupel:


#<div class="formula">$I(t) = I(t')$</div>
#<div class="formula"><math>I(t) = I(t')</math></div>
#<div class="formula">$\rm{lg}(t) = \rm{lg}(t')$</div>
#<div class="formula"><math>\rm{lg}(t) = \rm{lg}(t')</math></div>
#<div class="formula">$\bigwedge i \in I: t_i = t'_i$</div>
#<div class="formula"><math>\bigwedge i \in I: t_i = t'_i</math></div>


'''Beweis'''
'''Beweis'''
{{TBD}}
{{TBD}}
{{Formel|I(t') {{=}} \{x: \bigvee y: [x,y] \in t'\}|(Definition von $I(t')$)}}
{{Formel|I(t') {{=}} \{x: \bigvee y: [x,y] \in t'\}|(Definition von <math>I(t')</math>)}}
{{Formel|I(t') {{=}} \{x: \bigvee y: [x,y] \in \{[i,t_i]: i \in I(t)\} \}|(Definition von $t'$)}}
{{Formel|I(t') {{=}} \{x: \bigvee y: [x,y] \in \{[i,t_i]: i \in I(t)\} \}|(Definition von <math>t'</math>)}}


Nun gelten folgende zwei Beziehungen:
Nun gelten folgende zwei Beziehungen:
Zeile 548: Zeile 548:
''Begründung für *1''
''Begründung für *1''


Es sei $x \in I(t')$, d.h., es gibt ein $y$ mit $[x,y] \in \{[i,t_i]: i \in I(t)\}$,
Es sei <math>x \in I(t')</math>, d.h., es gibt ein <math>y</math> mit <math>[x,y] \in \{[i,t_i]: i \in I(t)\}</math>,
d.h., es gibt ein $i \in I(t)$ mit $[x,y] = [i,t_i]$ und damit gilt $x = i \in I(t)$,
d.h., es gibt ein <math>i \in I(t)</math> mit <math>[x,y] = [i,t_i]</math> und damit gilt <math>x = i \in I(t)</math>,
wegen des [[Geordnetes Paar|Paaraxioms von Peano]].
wegen des [[Geordnetes Paar|Paaraxioms]].


''Begründung für *2''
''Begründung für *2''


Es sei $i \in I(t)$. Wenn man $[x,y] := [i, t_i]$ setzt, ist $[x,y] \in \{[i,t_i]: i \in I(t)\}$.
Es sei <math>i \in I(t)</math>. Wenn man <math>[x,y] := [i, t_i]</math> setzt, ist <math>[x,y] \in \{[i,t_i]: i \in I(t)\}</math>.
Und damit ist $i \in I(t')$.
Und damit ist <math>i \in I(t')</math>.


Die zweite Aussage folgt direkt aus der ersten:
Die zweite Aussage folgt direkt aus der ersten:
Zeile 565: Zeile 565:
====Anmerkungen====
====Anmerkungen====


Ein geordnetes Paar $[a,b]$ kann, wie bereits definiert wurde, als 2-Tupel aufgefasst werden.
Ein geordnetes Paar <math>[a,b]</math> kann, wie bereits definiert wurde, als 2-Tupel aufgefasst werden.


Allerdings liefert die allgemeine Tupeldefinition, die i.Allg. auf dem geordneten Paar basiert,
Allerdings liefert die allgemeine Tupeldefinition, die i.Allg. auf dem geordneten Paar basiert,
ihrerseits ein 2-Tupel, das heißt, ein geordnetes Paar: $(a,b)$. Da dieses Paar ebenfalls das Paaraxiom erfüllt,
ihrerseits ein 2-Tupel, das heißt, ein geordnetes Paar: <math>(a,b)</math>. Da dieses Paar ebenfalls das Paaraxiom erfüllt,
wird das spezielle geordnete Paar  $[a,b]$ künftig nicht mehr benötigt. Es wird durch $(a,b)$ ersetzt.
wird das spezielle geordnete Paar  <math>[a,b]</math> künftig nicht mehr benötigt. Es wird durch <math>(a,b)</math> ersetzt.


==Gleichheit zweier Tupel ==
==Gleichheit zweier Tupel ==
Zeile 575: Zeile 575:
Die Gleichheit von Tupel wird – unabhängig von der Art der Definition – auf die Gleichheit von Klassen zurückgeführt:
Die Gleichheit von Tupel wird – unabhängig von der Art der Definition – auf die Gleichheit von Klassen zurückgeführt:


Zwei Tupel $t_1$ und $t_2$ sind genau dann gleich, wenn $t_1$ und $t_2$ als {{Klasse}}n gleich sind,  
Zwei Tupel <math>t_1</math> und <math>t_2</math> sind genau dann gleich, wenn <math>t_1</math> und <math>t_2</math> als {{Klasse}}n gleich sind,  
d.h., wenn:
d.h., wenn:
<div class="formula">$t_1 \subseteq t_2 \wedge t_2 \subseteq t_1$</div>
<div class="formula"><math>t_1 \subseteq t_2 \wedge t_2 \subseteq t_1</math></div>
oder, anders formuliert:
oder, anders formuliert:
<div class="formula">$\bigwedge x \in \mathcal{V}: x \in t_1 \Leftrightarrow x \in t_2$</div>
<div class="formula"><math>\bigwedge x \in \mathcal{V}: x \in t_1 \Leftrightarrow x \in t_2</math></div>


====Lemma====
====Lemma====
Zwei gleich Tupel (in Attribut- oder Listennotation) sind trivialerweise gleichlang:
Zwei gleich Tupel (in Attribut- oder Listennotation) sind trivialerweise gleichlang:


<div class="formula">$t_1 = t_2 \Rightarrow \text{lg}(t_1) = \text{lg}(t_2)$</div>
<div class="formula"><math>t_1 = t_2 \Rightarrow \text{lg}(t_1) = \text{lg}(t_2)</math></div>


'''Beweis'''
'''Beweis'''


Die Behauptung folgt direkt aus der [[Reflexivität]] der Gleichheit ($\text{lg}(t_1) = \text{lg}(t_1)$)
Die Behauptung folgt direkt aus der [[Reflexivität]] der Gleichheit (<math>\text{lg}(t_1) = \text{lg}(t_1)</math>)
und der [[Leipnizsche Ersetzbarkeit|Leipnizschen Ersetzbarkeit]]<ref>[[Wikipedia:Identität_(Logik)]]</ref>,  
und der [[Leipnizsche Ersetzbarkeit|Leipnizschen Ersetzbarkeit]]<ref>[[Wikipedia:Identität_(Logik)]]</ref>,  
die aussagt, das in Formeln ein Element stets durch ein dazu gleiches Element ersetzt werden kann.
die aussagt, das in Formeln ein Element stets durch ein dazu gleiches Element ersetzt werden kann.


====Satz====
====Satz====
Es seien $t_1$ und $t_2$ zwei Tupel (in Attribut- oder Listennotation).
Es seien <math>t_1</math> und <math>t_2</math> zwei Tupel (in Attribut- oder Listennotation).


$t_1$ und $t_2$ sind genau dann gleich, wenn die zugehörigen Indexmengen $I(t_1)$ und $I(t_2)$ übereinstimmen und wenn die Funktionswerte
<math>t_1</math> und <math>t_2</math> sind genau dann gleich, wenn die zugehörigen Indexmengen <math>I(t_1)</math> und <math>I(t_2)</math> übereinstimmen und wenn die Funktionswerte
für jedes Element der Indexmenge ebenfalls übereinstimmen:  
für jedes Element der Indexmenge ebenfalls übereinstimmen:  
<div class="formula">$t_1 = t_2 \Leftrightarrow I(t_1) = I(t_2) \wedge \bigwedge i \in I(t_1): t_1(i) = t_2(i)$</div>
<div class="formula"><math>t_1 = t_2 \Leftrightarrow I(t_1) = I(t_2) \wedge \bigwedge i \in I(t_1): t_1(i) = t_2(i)</math></div>


'''Beweis für Attributnotation''': siehe [[Schmidt (1966)]], S. 123, Aussagen 14.10 und 14.11
'''Beweis für Attributnotation''': siehe [[Schmidt (1966)]], S. 123, Aussagen 14.10 und 14.11

Version vom 10. August 2019, 17:21 Uhr

Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:

Korrektheit: 3
(zu größeren Teilen überprüft)
Umfang: 4
(unwichtige Fakten fehlen)
Quellenangaben: 5
(vollständig vorhanden)
Quellenarten: 5
(ausgezeichnet)
Konformität: 5
(ausgezeichnet)

Anschauliche Definition (Kowarschick)

Ein Tupel ist eine Menge oder gar eine Klasse von unterschiedlich benannten Attributen, d.h. eine Menge oder Klasse von Schlüssel/Wert-Paaren, wobei jeder Schlüssel nur einmal vorkommen darf.

Begriff Alternativnamen englische Bezeichnungen
Tupel Familie, Folge tuple, sequence, indexed family,
Attribut Schlüssel/Wert-Paar attribute, key/value pair, property
Attributname Schlüssel, Index key, index, attribute/property name, attribute/property key
Attributwert Wert, Glied value, attribute/property value

Attribute können auch mehr als einen Attributnamen haben. Diese werden dann mit Schlüssel-Schlüssel-Wert-Tripeln etc. dargestellt.

Indexmenge

Die Menge aller Schlüssel eines Tupels wird Indexmenge des Tupels genannt.

Tupellänge

Die Länge eines Tupel ist gleich der Mächtigkeit der zugehörigen Indexmenge.

Ein Tupel der Länge $ l $ wird auch $ l $-Tupel genannt.

Gleichheit zweier Tupel

Zwei Tupel sind genau dann gleich, wenn die zugehörigen Indexmengen gleich sind und wenn die jeweils gleich benannten Elemente ebenfalls gleich sind.

Anmerkungen

Tupel sind im Prinzip nichts anderes als Funktionen, deren Definitionsbereich Indexmenge genannt wird. Eine Funktion ordnet jedem Element des Definitionsbereichs einen Wert zu, entsprechend ordnet ein Tupel jedem Schlüssel, also jedem Element der Indexmenge einen Wert zu.

Tupel können auch als geordnete Multimengen, d.h. als Listen aufgefasst werden, sofern für die Indexmenge eine Ordnung definiert ist:

  • Werte können mehrfach vorkommen (im Gegensatz zu normalen Mengen, aber in Einklang mit Multimengen).
  • Die Werte sind (gemäß der auf den Schlüsseln definierten Ordnung) angeordnet (im Gegensatz zu Mengen und Multimengen).

Üblicherweise spielt in der Informatik die Ordnung der Tupelelemente nur dann eine Rolle , wenn eine Menge von aufeinanderfolgenden natürlichen Zahlen als Indexmenge verwendet wird.

Beispiele

Tupelart Tupelschema Beispiel
Attributtupel
Attributnotation
 
{name: String, sex: {'f','m','x'}}
 
{name: 'Anton', sex: 'm'}
Positionstupel
Listennotation
Attributnotation
 
(String, {'f','m','x'})
{1: String, 2: {'f','m','x'}}
 
('Anton', 'm')
{1: 'Anton', 2: 'm'}
Positionsattributtupel
Listennotation
Attributnotation


 
(name: String, sex: {'f','m','x'})
{1/name: String,
 2/sex:  {'f','m','x'}
}
 
(name: 'Anton', sex:'m')
{1/name: 'Anton',
 2/sex:  'm'
}

Positionsattributtupel sind Tupel, deren Attribute zwei unterschiedliche Attributnamen haben: Eine Zeichenkette und einen Positionsbezeichner. Dies ist die ideale Darstellung für Tupel, die durch Tabellenzeilen repräsentiert werden:

name sex spouse
'Anton' 'm' 'Berta'
'Berta' 'f' 'Anton'
'Cäsar' 'm' null

Jedes Attribut dieser drei Tupel hat sowohl einen Namen, der über der jeweiligen Spalte notiert wird, sowie eine Position, die sich durch die Spaltenposition ergibt.

In den folgenden Beispielen werden Attribute teils mittels Attributnotation a:v, i/a:v und teils mittels Listennotation $ (a,v) $, $ (i,a,v) $ dargestellt.

Attributnotation

Im Fall von endlichen Indexmengen kann ein Tupel einfach durch die explizite Angabe von Schlüssel/Wert-Paaren erfolgen.

t1 = {name: 'Anton', geburtsjahr: 1961, ehefrau: 'Berta'}
t2 = {ehefrau: 'Berta', geburtsjahr: 1961, name: 'Anton'}
t3 = {name: 'Anton', geburtsjahr: 1961, hochschule: 'HSA'}
t4 = {name: 'Anton', geburtsjahr: 1962, hochschule: 'HSA'}
t5 = {name: 'Anton', geburtsjahr: 1961, ehefrau: 'Berta', hochschule: 'HSA'}

Nur Tupel t1 und t2 sind gleich, alle anderen Tupel unterscheiden sich. Entweder unterscheiden sich die Indexmengen (t1 bis t4 haben die Länge 3, Tupel t5 hat dagegen die Länge 4) oder es stimmen nicht alle gleich benannten Elemente überein (alle übrigen Tupelpaare).

Folgendes ist kein Tupel (und damit auch keine Funktion), da zwei Elemente gleich benannt sind:

{name: 'Anton', name: 'Cäsar', hochschule: 'HSA'}

Attributnotation in der Informatik

Die Attributnotation kommt in der Informatik häufig zum Einsatz. Beispielsweise können in JSON innerhalb einer Mengenklammer beliebig viele (jedoch nur endlich viele) Attribute angeben werden. Als Attributnamen werden Zeichenketten (Strings) verwendet, die mit Anführungszeichen " markiert sind. Der zugehörige Attributwert wird vom Attributnamen durch einen Doppelpunkt abgetrennt.

{"name": "Anton", "geburtsjahr": 1961, "ehefrau": "Berta"}
...

Weitere Beispiele für Datenstrukturen, in denen Mengen von Schlüssel/Wert-Paaren zum Einsatz kommen:

  • C/C++: Datentyp struct (die Länge kann zur Laufzeit nicht verändert werden)
  • Pascal: Datentyp record (die Länge kann zur Laufzeit nicht verändert werden)
  • diverse Sprachen: Hashtabelle (auch hash map, hash array, assoziatives Array etc.; die Länge kann zur Laufzeit verändert werden)
  • SQL: Tabellenzeilen, d.h. Elemente von Relationen (die Länge kann zur Laufzeit durch Schema-Evolution verändert werden)
  • JavaScript: Objekte (die Länge kann zur Laufzeit verändert werden, sofern dies nicht explizit mittels Object.freeze „untersagt“ wird)
  • Java und viele andere Sprachen: Objekte (die Länge kann zur Laufzeit i. Allg. nicht verändert werden)

Attributzugriff

Um mittels des Attributnamens auf einen Attributwert zuzugreifen, haben sich in der Informatik zwei syntaktische Konstrukte etabliert (obwohl es durchaus noch Sprachen gibt, die andere syntaktische Konstrukte verwenden):

  • Die Indexnotation: t1["name"], t5["ehefrau"] etc.
  • Die Punktnotation: t1.name, t5.ehefrau etc.

In der Mathematik sind dagegen folgende Konstrukte üblich:

  • Die Funktionsauswertung: $ \rm{t1}(\rm{name}) $, $ \rm{t5}(\rm{ehefrau}) $ etc.
  • Die Projektionsfunktion $ π $: $ π_{\rm{name}}(\rm{t1}) $, $ π_{\rm{ehefrau}}(\rm{t5}) $ etc.
  • Die Indexnotation: $ \rm{t1}_{\rm{name}} $, $ \rm{t5}_{\rm{ehefrau}} $ etc.

Listennotation

Für Tupel, deren Indexmenge eine Menge von $ n $ aufeinanderfolgenden natürlichen Zahlen ist (i. Allg. $ \{i| 0 < i \le n\} $, oder, wie in vielen Programmiersprachen üblich, $ \{i| 0 \le i < n\} $), bietet sich die in der Mathematik gebräuchliche Listennotation an. Bei dieser werden die Schlüssel nicht explizit angegeben, sondern implizit durch die Position der Elemente festgelegt:

$ t_6 := (555, 333) $
$ t_7 := (333, 555) $
$ t_8 := (555, 333, 555) $
$ t_9 := (0, 1, 1, 2, 3, 5, 8, \ldots) $ (Fibonacci-Zahlen)

Die Tupel $ t_6 $ bis $ t_9 $ unterscheiden sich alle voneinander. In Tupel $ t_6 $ steht an Position 1 das Element $ 555 $, während in Tupel $ t_7 $ an Position 1 das Element $ 333 $ steht. Tupel $ t_8 $ unterscheidet sich von Tupel $ t_6 $ und $ t_7 $, da die Indexmengen ($ \{1,2\} $ bei Tupel $ t_6 $ und $ t_7 $; $ \{1,2,3\} $ bei Tupel $ t_8 $) nicht übereinstimmen.

Tupel $ t_6 $ und $ t_7 $ sind $ 2 $-Tupel, Tupel $ t_8 $ ist um ein Element länger, die Länge von Tupel $ t_9 $ beträgt ω. Tupel $ t_9 $ enthält also abzählbar unendlich Elemente. Da ein unendlich großes Tupel nicht mehr explizit angegeben werden kann, muss die Definition entweder anschaulich erfolgen (siehe obige Definition von Tupel $ t_9 $) oder mittels einer Rechenvorschrift:

$ \rm{fib(n)} := \begin{cases} 0 & n = 0\\ 1 & n = 1\\ \rm{fib}(n-1) + \rm{fib}(n-2) & \text{otherwise} \end{cases}\\ t_9 := (\rm{fib}(0), \rm{fib}(1), \rm{fib}(2), \rm{fib}(3), \ldots)\\ t_9(i) := \rm{fib}(i) $

Listennotation in der Informatik

In der Informatik, wie beispielsweise in JSON, kommt die Listennotation ebenfalls zu Einsatz:

t6 = [555, 333]
t7 = [333, 555]
t8 = [555, 333, 555]

Unendliche lange Tupel können in JSON nicht definiert werden. Allerdings ist es in JavaScript möglich, mittels Generatoren beliebig große Tupel zu generieren. Der Generator selbst kann als unendlich langes Tupel aufgefasst werden:

// Generator für Fibonacci-Zahlen (BigInt).
function* fib() 
{ let a = 0n, b = 1n; // 0n = BigInt(0), 1n = BigInt(1), ...
  yield a;
  yield b;
  while (true) 
  { [a, b] = [b, a+b];
    yield b;
  }
}

// Hilfsfunktion zum Materialisieren der
// ersten n Elemente eines Generators. 
function take(n, p_iterable) 
{ let tuple = [], i = 0;
  while (i++ < n) 
  { tuple.push(p_iterable.next().value);  }
  return tuple;
}

let f = fib();
console.log(f.next().value, f.next().value, f.next().value, f.next().value, f.next().value);
// -> 0n, 1n, 1n, 2n, 3n
console.log(take(1000, fib()));
// -> [0n, 1n, 1n, 2n, 3n, 5n, 8n, 13n, 21n ...] // tausend Elemente

In der Informatik finden sich weitere Datenstrukturen, in denen Elemente sequenziell abgespeichert werden, d.h., bei denen Tupel nicht als Menge von Attributen, sondern als Folge von Elementen aufgefasst werden:

  • Arrays oder Felder (häufig mit fixer Länge)
  • Listen in zahlreichen Ausprägungen (i. Allg. mit variabler Länge)
  • Streams (evtl. sogar unendlich lang)

Attributzugriff

Um mittels der Attributposition auf einen Attributwert zuzugreifen, hat sich in der Informatik ein syntaktisches Konstrukt etabliert:

  • Die Indexnotation: t[1], t[2] etc.

Bei verketteten Listen, Streams etc. ist der Zugriff auf ein Element an einer bestimmten Position dagegen manchmal nur dadurch möglich, dass man sich mittels einer Funktion oder Methode (z. B. next) von einem Element zu nächsten „hangelt“ (Traversierung), bis man beim gewünschten Element angekommen ist (siehe z. B. die Funktion take im vorangegangenen Abschnitt).

In der Mathematik sind dagegen folgende Konstrukte üblich:

  • Die Funktionsauswertung: $ t(1) $, $ t(2) $ etc.
  • Die Indexnotation: $ t_1 $, $ t_2 $ etc.
  • Die Projektionsfunktion $ π $: $ π_1(t) $, $ π_2(t) $ etc.

Spezielle Tupel mit Positionsattributen

Länge $ n $ Name Attributnotation Listennotation
0 Leeres Tupel $ \{\} $ $ () $
1 Singel $ \{(1,5)\} $ $ (5) $
2 (geordnetes) Paar $ \{(1,5), (2,3)\} $ $ (5,3) $
3 Triple $ \{(1,5), (2,3), (3,8)\} $ $ (5,3,8) $
4 Quadrupel $ \{(1,5), (2,3), (3,8), (4,π)\} $ $ (5,3,8,π) $
5 Quintupel $ \vdots $ $ \vdots $
6 Sextupel
7 Septupel
8 Oktupel
$ \vdots $ $ \vdots $
100 Centupel
$ n $ $ n $-Tupel
ω oder $ \aleph_0 $ ω- oder oder $ \aleph_0 $-Tupel $ \{(i,i^2)| i \in \mathbb N\} $ $ (i^2)_{i \in \mathbb N} $
$ 2^{\aleph_0} $ $ 2^{\aleph_0} $-Tupel $ \{(r,r^2)| i \in \mathbb R\} $ $ (r^2)_{r \in \mathbb R} $

Jede endliche oder abzählbar unendliche Folge, Sequenz oder Familie kann als Tupel in Listennotation aufgefasst werden. Jede (mathematische) Funktion kann als Tupel aufgefasst werden.

Formale Definitionen

Im Folgenden wird vorausgesetzt, dass der Term „geordnetes Paar$ [x,y] $ schon existiert, aufgrund einer Definition oder auch, weil er axiomatisch eingeführt wurde. Man beachte, dass sich das geordnete Paar $ [x,y] $ vom Tupel $ (x,y) $ (in Listennotation) unterscheidet, sofern Letzteres mit Hilfe von $ [x,y] $ definiert wird. Allerdings erfüllt $ (x,y) $ (nachdem es definiert wurde) auch das Paaraxiom und kann überall, wo ein geordnetes Paar benötigt wird, genauso gut wie $ [x,y] $ verwendet werden. In LISP sieht man den Unterschied sehr schön: Die „Cons-Zelle“ (x . y) unterscheidet sich von der Liste (x y), die als Abkürzung für (x . (y . NIL)) steht. Beide Definitionen erfüllen jedoch das Paaraxiom.

Tupel in Attributnotation, Familie (in Anlehnung an Bourbaki[1] und Schmidt[2])

Es sei $ t: I \rightarrow \mathcal{V} $ eine beliebige Funktion von einer Menge oder Klasse $ I $ in die Allklasse $ \mathcal{V} $:

$t \subseteq I \times \mathcal{V} \,\wedge\, \bigwedge x, y_1, y_2: [x,y_1] \in f \wedge [x,y_2] \in f \rightarrow y_1=y_2$

$ t $ wird nicht nur Funktion genannt, sondern, insbesondere wenn man sich mehr für den Definitionsbereich als für die Funktion selbst interessiert, auch Tupel oder Familie über $ I $ (in Attributnotation). Alternativ kann man auch $ I $-Tupel oder $ I $-Familie (in Attributnotation) sagen.

$ \rm{TupA}(t) :\leftrightarrow \rm{Fkt}(t) $ (siehe Funktion)

Indexbereich und Indexmenge (Tupel in Attributnotation)

Die Definitionsmenge $ I := I(t) = \rm{Def}(f) := \{x| \bigvee y: [x,y] \in t\} $ der Funktion $ t $ heißt in diesem Fall Indexbereich oder, falls es sich bei $ I $ um eine echte Menge und nicht um eine Unmenge handelt, Indexmenge.

Tupellänge (Tupel in Attributnotation)

Die Mächtigkeit des Indexbereichs heißt Länge des Tupels:

$ \rm{lg}(t) := |I(t)| $

Ein Tupel der Länge $ l $ wird auch $ l $-Tupel genannt.

Schlüssel und Wert (Tupel in Attributnotation)

Jedes Element $ i $ des Indexbereichs heißt Schlüssel oder Index.

Das zum Index $ i $ gehörende Element $ t_i := t(i) $ wird als Wert bezeichnet.

Anmerkungen (Tupel in Attributnotation)

Mit $ \rm{Fkt}(f) $ wird ausgedrückt, dass es sich bei einer Menge oder Klasse $ f $ um eine Funktion handelt, dass $ f $ also eine Menge oder Klasse von geordneten Paaren ist, die die Eindeutigkeitsbedingung

$\bigwedge x, y_1, y_2: [x,y_1] \in f \wedge [x,y_2] \in f \rightarrow y_1=y_2$

erfüllt.

Mit $ \rm{TupA}(t) $ wird ausgedrückt, dass es sich bei $ t $ um ein Tupel in Attributnotation handelt.

Schmidt verwendet die Bezeichnung „Glied“ an Stelle von „Wert“.

Der Begriff „$ I $-Tupel“ geht auf Ebbinghaus[3] zurück.

Tupel in Listennotation (in Anlehnung an McCarthy et al.[4])

Der Begriff des geordneten Paars kann induktiv für eine beliebige endliche Anzahl von Elementen verallgemeinert werden:

Eine Menge oder Klasse $ t $ heißt Tupel (in Listennotation) – in Zeichen $ \rm{TupV}(t) $ – wenn entweder $ t=\emptyset $ gilt oder wenn $ t $ ein geordnetes Paar $ [x,t] $ ist, dessen erstes Element beliebig und dessen zweites Element ein Tupel ist:

$ \rm{TupV}(\emptyset) $
$ \bigwedge x, t: \rm{TupV}(t) \rightarrow \rm{TupV}([x,t]) $

Andere Tupel in Listennotation gibt es nicht. Das heißt, für jedes Tupel $ t \not= \emptyset $ gibt es ein Element $ x $
und ein Tupel $ t' $ mit $ t = [x,t'] $:

$ \bigwedge t: (\rm{TupV}(t) \wedge t \not= \emptyset \rightarrow \bigvee x, t': (\rm{TupV}(t') \wedge t = [x,t'])) $

Das Tupel $ t' $ ist wegen des Paaraxioms sogar eindeutig bestimmt:

$ \bigwedge t: (\rm{TupV}(t) \;\rightarrow\; \bigwedge x_1, x_2, t_1, t_2: (\rm{TupV}(t_1) \wedge \rm{TupV}(t_2) \wedge t = [x_1,t_1] \wedge t = [x_2,t_2] \,\rightarrow\, t_1=t_2 \wedge x_1=x_2)) $

In einem klassenbasierten Axiomen-System (wie es z.B. der Neumann-Bernays-Gödel-Mengenlehre zu Grunde liegt) ist diese Formel allerdings nur im Falle von Klassenpaaren gültig (vgl. Abschnitt „Reihenfolge der Elemente“ im Artikel geordnetes Paar). Für Mengenpaare müsste sie entsprechend auf Mengen eingeschränkt werden, da Mengenpaare keine Klassen enthalten können:

$ \bigwedge a,b: (\rm{UMg}(a) \vee \rm{UMg}(b)) \leftrightarrow (a,b) = \mathcal{V} $

In diesem Fall gilt nur:

$ \bigwedge t: (\rm{Mg}(t) \wedge \rm{TupV}(t) \;\rightarrow\; \bigwedge x_1, x_2, t_1, t_2: (\rm{TupV}(t_1) \wedge \rm{TupV}(t_2) \wedge t = [x_1,t_1] \wedge t = [x_2,t_2] \,\rightarrow\, t_1=t_2 \wedge x_1=x_2 \wedge \rm{Mg}(x_1) \wedge \rm{Mg}(x_2) \wedge \rm{Mg}(t_1) \wedge \rm{Mg}(t_2) )) $

Tupellänge (Tupel in Listennotation)

Es sei $ t $ ein Tupel in Listennotation: $ TupV(t) $. Die Länge $ \rm{lg}(t) $ von $ t $ wird ebenfalls induktiv definiert:

$ \rm{lg}(\emptyset) := 0 $
$ \bigwedge x, t: \rm{TupV}(t) \rightarrow \rm{lg}([x,t]) := \rm{lg}(t)+1 $

Ein Tupel der Länge $ l $ heißt $ l $-Tupel in Listennotation.

Das $ 0 $-Tupel wird auch leeres Tupel genannt.

Lemma: Eindeutigkeit der Länge eines Tupels in Listennotation

Die Länge eines Tupels in Listennotation ist eindeutig bestimmt.

Beweis

Das leere Tupel ist das einzige Tupel der Länge $ 0 $. Für jedes andere Tupel $ t $ existiert genau ein Element $ x $ und ein Tupel $ t' $, für die $ t=[x,t'] $ gilt. Für $ t' $ ist die Länge laut Induktionsvoraussetzung eindeutig bestimmt und damit ist die Länge $ \rm{lg}(t) = \rm{lg}(t')+1 $ ebenfalls eindeutig bestimmt.

Indexmenge (Tupel in Listennotation)

Für ein Tupel $ t $ in Listennotation wird die Indexmenge $ I(t) $ folgendermaßen definiert:

$ I(t) := \{i \in \mathbb{N}: 0 < i \le \rm{lg}(t)\} $
Lemma: Länge des Tupels

Die Länge eines Tupels $ t $ in Listennotation ist gleich der Mächtigkeit der Indexmenge: $ \rm{lg}(t) = |I(t)| $

Beweis

$ |I(t)| = |\{i \in \mathbb{N}: 0 < i \le \rm{lg}(t)\}| = \rm{lg}(t) $

Schlüssel und Wert (Tupel in Listennotation)

Es seien $ t $ ein nicht-leeres Tupel in Listennotation und $ I := I(t) $ die zugehörige Indexmenge. Die Elemente $ i\in I $ der Indexmenge heißen Schlüssel.

Jedem Schlüssel $ i\in I $ wird durch das Tupel $ t $ ein eindeutiger Wert $ t_i $ zugeordnet. $ t_i $ wird wieder induktiv definiert:

Da laut Voraussetzung $ t \not= \emptyset $ gilt, gibt es zwei (eindeutige) Elemente $ x $ und $ t' $ mit $ \rm{TupV}(t') $ und $ t=[x,t'] $.

$ t_i := \begin{cases} x & \mbox{wenn } i = 1\\ t'_{i-1} & \mbox{wenn } i > 1 \end{cases} $

Man beachte, dass aus $ i\in I $ stets $ 0 < i < \rm{lg}(t) $ folgt. Diese Invariante bleibt im rekursiven Zweig der Definition erhalten: $ i>1 \rightarrow 0 < i-1 < \rm{lg}(t)-1 = \rm{lg}(t') $ Das heißt, es gilt auch hier $ i-1 \in I(t') $.

Für $ i\notin I $ ist $ t_i $ nicht definiert. Man kann in diesem Fall allerdings $ t_i := \mathcal{V} $ setzen, um $ t_i $ für jede beliebige Klasse $ i $ zu definieren.

Listennotation

Für Tupel in Listennotation wird Folgende abkürzende Schreibweise eingeführt:

$ () := \emptyset $
$ (x_1) := [\emptyset, x_1] $
$ (x_1,x_2) := [[\emptyset, x_1], x_2] $
$ (x_1,x_2,x_3) := [[[\emptyset, x_1], x_2], x_3] $

Allgemein für $ n \ge 2 $:

$ (x_1,\ldots,x_n) := [(x_1,\ldots,x_{n-1}), x_n] = [[[\ldots[\emptyset,x_1]\ldots], x_{n-1}], x_n] $

Anmerkungen (Tupel in Listennotation)

Ursprung und Varianten der Listennotation

Die obige Definition der Listennotation geht auf McCarthy zurück (wobei er die Liste allerdings vom letzten Element ausgehend aufbaut):

The list $ (m_1,m_2,···,m_n) $ is represented by the S-expression $ (m_1·(m_2·(···(m_n·\rm{NIL})···))) $.
Here $ \rm{NIL} $ is an atomic symbol used to terminate lists.[5]

McCarthy definiert eine LISP-Liste als abkürzende Schreibweise für eine Folge von $ cons $-Zellen, d.h. als Folge von LISP-Paaren $ (a \cdot b) $. In LISP wird eine Liste also als verkette Liste implementiert: Jede $ cons $-Zelle enthält das eigentlich Listenelement sowie einen Verweis auf die Nachfolgerliste. Die letzte $ cons $-Zelle enthält keinen Verweis, sondern die LISP-Konstante $ \rm{NIL} $.

In seinen ursprünglichen Publikationen wie auch im Benutzerhandbuch von LISP I[6] bezeichnet McCarthy $ \rm{NIL} $ lediglich als „atomares Symbol“, welches benutzt wird, um Listen zu terminieren. Erst im Beutzerhandbuch von LISP 1.5[4] legt er zusätzlich fest, dass $ \rm{NIL} $ identisch zur leeren Liste $ () $ ist.

Die Definition von McCarthy ist den Definitionen von anderen Autoren, wie z.B. Gödel oder Schmidt, vorzuziehen.

Definition von Schmidt (und diversen anderen Autoren):

$ (x_1, x_2) $ ist ein (Klassen-)Paar.
$ (x1, x2, x3) := ((x1, x2), x3) $ ist ein (Klassen-)Tripel.
$ (x1, x2, x3, x4) := ((x1, x2, x3), x4) = (((x1, x2), x3), x4) $ ist ein (Klassen-)Quadrupel.

Diese Definition hat zwei Nachteile:

  • Es gibt kein $ 0 $- und keine $ 1 $-Tupel.
  • Tupel unterschiedlicher Länge können gleich sein (jedes $ n $-Tupel für $ n>2 $ ist gleich einem $ 2 $-Tupel; ein Beweis einer Aussage analog zu Lemma 5.3.1.1 scheitert daher beim Induktionsanfang).

Definition von Gödel (und diversen anderen Autoren):

Gödel[7] hat Tupel im Prinzip genauso wie Schmidt definiert. Zusätzlich hat er allerdings noch $ 1 $-Tupel eingeführt:

$ (x_1) := x_1 $

Doch auch diese zusätzliche Festlegung löst die obigen Probleme nicht wirklich.

Mengentupel und Klassentupel (Tupel in Listennotation)

In einer klassenbasierten Mengenlehre erhält man mit Hilfe der obigen Definition so genannte Klassentupel, sofern man der Definition der Tupel Klassenpaare zugrunde legt. Bei Benutzung einer mengenbasierten Mengenlehre oder wenn man Tupel mit Hilfe von Mengenpaaren definiert, erhält man dagegen lediglich so genannte Mengentupel.

Ein Klassentupel kann nicht nur Mengen, sondern auch Unmengen als Elemente beinhalten.

Beispielsweise kann man das Monoid der Ordinalzahlen $ \Omega $ mit Addition $ + $ und neutralem Element $ 0 $ als Klassentupel $ (\Omega,+,0) $ definieren, obwohl es sich bei $ \Omega $ um eine Unmenge handelt. Für Mengentupel gilt dagegen, dass $ (\Omega,+,0) $ entweder nicht definiert ist oder gleich der Allklasse $ \mathcal{V} $ ist. Im letzteren Fall sind alle Mengentupel, die ein oder mehrere Unmengen enthalten, ebenfalls gleich $ \mathcal{V} $.

Objektsprache und Metasprache

Man beachte auch, dass hinsichtlich der Definitionen und Beweise ein wesentlicher Unterschied zwischen Mengen- und Klassentupeln besteht.

Für Mengen kann $ TupV $ als echte Funktion definiert werden. Die zugehörigen, auf vollständiger Induktion basierenden Beweise können daher innerhalb der formalen Sprache (Objektsprache) des jeweiligen Axiomensystems der Mengenlehre (unter Zuhilfenahme des Unendlichkeitaxioms) durchgeführt werden. In einem ersten Schritt formalisiert man innerhalb der Mengenlehre die natürlich Zahlen (samt vollständiger Induktion) und in einem zweiten Schritt wendet man diesen Formalismus bei den Beweisen der obigen Aussagen an.

Für Klassen kann $ TupV $ dagegen nicht als echte Funktion, sondern nur als Abkürzung, definiert werden, da eine Unmenge niemals in einer Funktion als Urbild oder Bildelement auftauchen kann. Es gilt nämlich

$\rm{UMg}(a) \rightarrow \{a\}= \mathcal{V}$ (Schmidt (1966), S. 73)

und damit auch

$\rm{UMg}(a) \vee \rm{UMg}(b) \rightarrow \rm{UMg}((a,b))$ (Schmidt (1966), S. 97)
$\rightarrow \{\ldots,(a,b),\ldots\}= \mathcal{V} $

Das heißt, sobald man versucht, eine Unmenge in die Definition einer Funktion $ f $ als Urbild oder Bildelement einzuschleusen, degeneriert $ f $ zur Allklasse.

$ TupV(t) $ ist also im Falle von Klassentupeln eine Abkürzung für eine mengentheoretische Formel, genauso wie $ Mg(m) $, als Abkürzung für die Formel $ \bigvee a: m \in a $ steht (siehe Klasse). Die zugehörigen Induktionsbeweise müssen in diesem Fall außerhalb des Axiomensystems der Mengenlehre auf geführt werden, also beispielsweise mit Hilfe der Metasprache, die zur Definition des formalen System verwendet wurde. Man beachte, dass die obigen Beweise genaugenommen sogar innerhalb der Metametasprache „Deutsch“ geführt wurden.

Das Problem ist, dass man, obwohl man eine Arithmetik der natürlichen Zahlen formal mit Hilfe der Mengenlehre-Axiome – d.h. innerhalb der Objektsprache – definieren kann, dennoch eine Arithmetik außerhalb – d.h. innerhalb der Metasprache – des Systems braucht, um das formale System überhaupt definieren zu können. Metamathematische Induktionsbeweise beruhen auf „gesundem Menschenverstand“. Im Prinzip definiert man ein Beweisschema, aus dem man für jeden konkreten Einzelfall einen formalen Beweis ableiten kann. Dies war schon Gödel bekannt:

... einziger Zweck dieser allgemeinen metamathematischen Überlegungen ist es zu zeigen, wie die Beweise für Sätze von einem gewissen Typus nach einer allgemeinen Methode ausgeführt werden können; ... diese allgemeinen metamathematischen Überlegungen könnten ganz wegbleiben, wenn man sich die Mühe nähme, die Beweise in jedem Fall einzeln durchzuführen ...[8]

Abbildung der Listen- auf die Attributnotation

Für jedes $ n $-Tupel $ t $ in Listennotation kann ein zugehöriges Tupel $ t' $ in Attributnotation definiert werden, sofern es sich bei $ t $ um ein „Mengentupel“ handelt, d.h. sofern das Tupel nur Mengen aber keine Unmengen enthält, d.h., sofern $ \rm{Mg}(t_i) $ für alle $ i \in I(t) $:

$ t' := \{[i,t_i]: i \in I(t)\} $

Lemma: Korrektheit der Abbildung der Listen- auf die Attributnotation

$ t $ und $ t' $ beschreiben dasselbe Tupel:

  1. $ I(t) = I(t') $
  2. $ \rm{lg}(t) = \rm{lg}(t') $
  3. $ \bigwedge i \in I: t_i = t'_i $

Beweis

TO BE DONE

$I(t') = \{x: \bigvee y: [x,y] \in t'\}$ (Definition von $ I(t') $)
$I(t') = \{x: \bigvee y: [x,y] \in \{[i,t_i]: i \in I(t)\} \}$ (Definition von $ t' $)

Nun gelten folgende zwei Beziehungen:

$I(t') := \{x: \bigvee y: [x,y] \in \{[i,t_i]: i \in I(t)\} \} \subseteq I(t)$ (*1)
$I(t') := \{x: \bigvee y: [x,y] \in \{[i,t_i]: i \in I(t)\} \} \supseteq I(t)$ (*2)

Insgesamt gilt also, sofern man *1 und *2 nachweisen kann:

$I(t') = I(t)$

Damit wäre die erste Aussage bewiesen.

Begründung für *1

Es sei $ x \in I(t') $, d.h., es gibt ein $ y $ mit $ [x,y] \in \{[i,t_i]: i \in I(t)\} $, d.h., es gibt ein $ i \in I(t) $ mit $ [x,y] = [i,t_i] $ und damit gilt $ x = i \in I(t) $, wegen des Paaraxioms.

Begründung für *2

Es sei $ i \in I(t) $. Wenn man $ [x,y] := [i, t_i] $ setzt, ist $ [x,y] \in \{[i,t_i]: i \in I(t)\} $. Und damit ist $ i \in I(t') $.

Die zweite Aussage folgt direkt aus der ersten:

$\rm{lg}(t) = $ I(t)

Dritte Aussage

Anmerkungen

Ein geordnetes Paar $ [a,b] $ kann, wie bereits definiert wurde, als 2-Tupel aufgefasst werden.

Allerdings liefert die allgemeine Tupeldefinition, die i.Allg. auf dem geordneten Paar basiert, ihrerseits ein 2-Tupel, das heißt, ein geordnetes Paar: $ (a,b) $. Da dieses Paar ebenfalls das Paaraxiom erfüllt, wird das spezielle geordnete Paar $ [a,b] $ künftig nicht mehr benötigt. Es wird durch $ (a,b) $ ersetzt.

Gleichheit zweier Tupel

TO BE DONE

Die Gleichheit von Tupel wird – unabhängig von der Art der Definition – auf die Gleichheit von Klassen zurückgeführt:

Zwei Tupel $ t_1 $ und $ t_2 $ sind genau dann gleich, wenn $ t_1 $ und $ t_2 $ als Klassen gleich sind, d.h., wenn:

$ t_1 \subseteq t_2 \wedge t_2 \subseteq t_1 $

oder, anders formuliert:

$ \bigwedge x \in \mathcal{V}: x \in t_1 \Leftrightarrow x \in t_2 $

Lemma

Zwei gleich Tupel (in Attribut- oder Listennotation) sind trivialerweise gleichlang:

$ t_1 = t_2 \Rightarrow \text{lg}(t_1) = \text{lg}(t_2) $

Beweis

Die Behauptung folgt direkt aus der Reflexivität der Gleichheit ($ \text{lg}(t_1) = \text{lg}(t_1) $) und der Leipnizschen Ersetzbarkeit[9], die aussagt, das in Formeln ein Element stets durch ein dazu gleiches Element ersetzt werden kann.

Satz

Es seien $ t_1 $ und $ t_2 $ zwei Tupel (in Attribut- oder Listennotation).

$ t_1 $ und $ t_2 $ sind genau dann gleich, wenn die zugehörigen Indexmengen $ I(t_1) $ und $ I(t_2) $ übereinstimmen und wenn die Funktionswerte für jedes Element der Indexmenge ebenfalls übereinstimmen:

$ t_1 = t_2 \Leftrightarrow I(t_1) = I(t_2) \wedge \bigwedge i \in I(t_1): t_1(i) = t_2(i) $

Beweis für Attributnotation: siehe Schmidt (1966), S. 123, Aussagen 14.10 und 14.11

Beweis für Listennotation: mittels vollständiger Induktion.

TO BE DONE

Quellen

  1. Bourbaki (1939): Nicolas Bourbaki; Théorie des ensembles; Verlag: Hermann; Adresse: Paris; 1939; Quellengüte: 5 (Buch), S. E III.45
  2. Schmidt (1966): Jürgen Schmidt; Mengenlehre – Grundbegriffe; Reihe: B.I.Hochschultaschenbücher; Band: 1; Nummer: 56; Verlag: Bibliographisches Institut AG; Adresse: Mannheim; ISBN: B0000BUJC6; 1966; Quellengüte: 5 (Buch), S. 122
  3. Ebbinghaus (2003): Heinz-Dieter Ebbinghaus; Einführung in die Mengenlehre; Reihe: Hochschultaschenbuch; Auflage: 4; Verlag: Spektrum Akademischer Verlag; Adresse: Heidelberg, Berlin; ISBN: 3-8274-1411-3; 2003; Quellengüte: 5 (Buch), S. 59–60
  4. 4,0 4,1 McCarthy et. al. (1965): John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart und Michael I. Levin; LISP 1.5 Programmer's Manual; Verlag: The MIT Press; Adresse: Cambridge, Massachusetts; Web-Link; 1965 (Buch)
  5. McCarthy (1960): John McCarthy; Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I; in: Communications of the ACM; Band: 3; Nummer: 4; Seite(n): 184-195; Verlag: Association for Computing Machinery; Adresse: New York; Web-Link 0, Web-Link 1; 1960; Quellengüte: 5 (Artikel)
  6. , S. 11
  7. Gödel (1940): Kurt Gödel; The Consistency of the Continuum Hypothesis; Verlag: Princeton University Press; ISBN: 0-691-07927-7; Web-Link; 1940; Quellengüte: 5 (Buch)
  8. zitiert nach Schmidt (1966), S. 174
  9. Wikipedia:Identität_(Logik)

Siehe auch

  1. Kowarschick (MMDB-Skript): Wolfgang Kowarschick; Vorlesung Multimedia-Datenbanksysteme – Sommersemester 2018; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2018; Quellengüte: 4 (Skript)