APPENDIX II: A Short Grammar for the used settheoretical language


'95-Knowbot

(The english annotations below are only a rough characterization of the content of the german text)





ANHANG II: Kurze Grammatik der verwendeten mengentheoretischen Sprache



AUTHOR: Gerd Döben-Henisch
COAUTHOR: Joachim Hasebrook
DATE OF FIRST GENERATION: Jan 13, 1998
DATE OF LAST CHANGE: Febr 25, 1998
ADDRESS: INM - Institute for New Media, Frankfurt, Germany
EMAIL: doeb@inm.de
URL: INM
Copyright (c) Gerd Döben-Henisch
STATUS: Work in Progress
COOPERATION: Everybody is invited to share the discussions, to contribute with own ideas. The authors decide whether such contributions are accepted for incorporation in the final version.




Remark: The following presentation of a grammar for the settheoretical language using a categorical grammar follows mainly P.HINST [1992/93] Einführung in die mengentheoretische Sprache NBG. Deviations in details are due to the author.
Anmerkung: Die folgende Darstellung der Grammatik der mengentheoretischen Sprache mittels einer kategorialen Grammatik folgt weitgehend der Darstellung von P.HINST [1992/93] Einführung in die mengentheoretische Sprache NBG. Abweichungen im Detail verantwortet der Autor.


Sign usage nothing else than special operations with objects. Towards a formal grammar.
Wie schon im Kap. 4.2 festgestellt wurde, führt das Hantieren mit Zeichen grundsätzlich nicht aus dem Bereich des Hantierens mit Objekten hinaus, da Zeichen immer mittels eines Zeichenmaterials realisiert werden müssen; Zeichenmaterial aber ist nichts anderes als das Vorhandensein konkreter Objektkonstellationen, die durch bestimmte Eigenschaften charakterisiert sind.

Der Gebrauch von Zeichen setzt voraus, daß sich im Bereich des Zeichenmaterials kleinste, unterscheidbare Einheiten angeben lassen, die eine Menge von Grundelementen, ein Alphabet bilden. Aus diesen Grundelementen lassen sich dann durch festgelegte Handlungen/ Operationen/ Erzeugungsregeln diejenigen Kombinationen von Grundelementen bilden, die als wohlgeformte Ausdrücke im Rahmen des Zeichengebrauchs benutzt werden. Die Menge der hier einschlägigen Erzeugungsregeln konstituiert eine Grammatik/ Syntax. Denkbar sind genauso Analyseregeln die eine Zeichenkette durch mehrfache Anwendung in einfachere Bestandteile zerlegen bis daß entweder nur noch erlaubte Grundelemente des Zeichensystems übrigbleiben oder aber unzerlegbare Zeichen, die keine Grundelemente sind. Eine solche rein auf die Kombinatorik von Zeichenketten ausgelegte Grammatik ist eine formale Grammatik und die durch formale Grammatiken beschreibbaren Sprachen heißen formale Sprachen.


Using the everyday language a formal settheoretical language will be introduced
Die formale Sprache, die jetzt mittels der deutschen Umgangssprache eingeführt werden soll, ist eine mengentheoretischen Sprache L_set, die dazu benutzt wird, um über existenzmäßig nicht ausgezeichnete Mengen und deren Eigenschaften zu sprechen. In der mengentheoretischen Sprache werden eine Reihe von Namen zur Verfügung gestellt und Regeln, wie man mit diesen Namen operiert. Interpretationsregeln, wie diese formalen Konstrukte auf irgendetwas jenseits ihrer selbst zu beziehen seien, sind nicht Bestandteil dieser Sprache. Die aus anderen Kontexten bekannten aussagenlogischen und prädikatenlogischen Mittel sind in diese Sprache integriert

Anmerkung: Bei einem anderen Vorgehen kann man zunächst nur die Quantorenlogik 1.Stufe einführen und dann durch Erweiterung dieser Logik um die Elementschaftsrelation und geeigneter Axiome daraus die mengentheoretische Sprache bilden.




Zuerst werden einige endliche Mengen unterschiedlicher Namen eingeführt.
  1. alpha_small ={a,...,z}
  2. alpha_big ={A,...,Z}
  3. num ={0,...,9}
  4. underline = {_}
  5. braces = <(,)>
  6. curley_braces = <{,}>
  7. colon = {:}
  8. parentheses = <(,)>
alph = alpha_small u alpha_big u num u underline u braces u curley_braces u colon u parentheses
  1. individual_constants = (alpha_small)^+((underline)(num)^+)^*
    Z.B.: 'hans_1'

  2. variables = (alpha_big)^+((underline)(num)^+)^*
    Z.B.: 'AAA_1'

  3. functional_constants = (alpha_small)^+((underline)(alpha_small)^+)^*((underline)(num)^+)^*(parentheses_1)(space)(parentheses_2)
    Z.B.: 'cut( )', 'maximum( )', 'successor( )>'

  4. predicate_constants = (alpha_big)^+((underline)(alpha_big)^+)^*((underline)(num)^+)^*(parentheses_1)(space)(parentheses_2)
    Z.B.: 'HUMAN( )', 'ANIMAL_FOUR_LEGGED( )'

  5. logical_constants = (alpha_small)^+((underline)(alpha_small)^+)^*((underline)(num)^+)^*(parentheses_1)(space)(parentheses_2) (alle unterstrichen)
    Z.B.: 'and( )', 'not( )'

  6. quantifier_constants =(braces_1)(alpha_big)^+(colon)(space)(braces_2)
    Z.B.: '(A: )', '(E: )', '(ABC: )'
Anmerkung: Die Beschreibung der verschiedenen Mengen ist als eine endliche Handlungsanweisung zu verstehen, wie man auf der Basis der vorausgesetzten Grundmengen Zeichen aneinanderreihen kann. Wie schon im Fall der empirischen natürlichen Zahlen n10 handelt es sich hier um ausführbar unendliche Mengen.

set_const = individual_constants u variables u functional_constants u predicate_constants u logical_constants u quantifier_constants


Introducing signs representing categories
Zusätzlich zu diesen (ausführbar unendlichen) Mengen sollen nun noch Zeichenkategorien in Form von Signaturen eingeführt werden. Diese werden durch Erzeugungsregeln in Form von Ersetzungsregeln/ Produktionsregeln beschrieben.

Es gibt drei atomare/ terminale Kategorien: {<>, <0>, <1>}

Es gibt die folgenden nichtterminalen/ abstrakten Kategorien: {H,T,h}

Dazu die folgenden Ersetzungsregeln/ Produktionsregeln:
  1. KAT--> <H:T> | <T>
  2. H --> HH | H:H | <0> | <1>
  3. T --> TT | <0> | <1>
Man wendet die Erzeugungsregeln dadurch an, daß man eine Liste mit leeren Zeilen vorgibt, in die (oberste) erste Zeile die Zeichen 'kat' einträgt und dann die Erzeugungsregeln so oft anwendet, bis in der letzten Zeile ein Ausdruck steht, der neben den äußeren Begrenzungszeichen '<' und '>' und dem Doppelpunkt ':' nur noch terminale Zeichen enthält.

BEISPIELE:

  1. kat
  2. <H:T>
  3. <<1>:T>
  4. <<1>:TT>
  5. <<1>:<0>T>
  6. <<1>:<0><0>>
oder:
  1. kat
  2. <H:T>
  3. <<1>:T>
  4. <<1>:TT>
  5. <<1>:<1>T>
  6. <<1>:<1><1>>
Eine solche Liste, die mit dem Zeichen KAT beginnt, die mit einer Zeichenkette X endet, die aus lauter terminalen Zeichen besteht und in der jede Zeile - außer der ersten - durch Anwendung der Erzeugungsregeln aus der vorausgehenden Zeile erzeugt wurde, soll eine Erzeugung bzw. eine Ableitung für die Zeichenkette X genannt werden. Die Menge der aus KATmit Hilfe der Erzeugungsregeln ableitbaren Zeichenketten soll die Menge der Kategorien [kat] genannt werden.


Settheoretical expressions as combinations of settheoretical constants with categories
Die Menge der erlaubten atomaren Ausdrücke der Sprache L_set wird jetzt definiert als eine Menge von Paaren bestehend aus einem Element aus set_const sowie einem Element aus kat: set_expressions c set_const x kat.

BEISPIELE:

  1. (cut,<<0>:<0><0>>)
  2. (IN,<<1>:<0><0>>)
  3. (EQUAL,<<1>:<0><0>>)
  4. ((A:),<<1>:<1>:<0>>)
Ein Element aus set_expression heiße eine mengentheoretische Konstante. Das erste Element einer mengentheoretischen Konstante heiße der Konstantennamen und das zweite Element die Konstantenkategorie. In einer Konstantenkategorie heißt der Teil 'links vom Doppelpunkt der Kopf/ Head der Kategorie (im Falle von mehreren Doppelpunkte ist der Kopf 'geschachtelt', wobei die Abarbeitung von 'rechts nach links' geschieht) und der Teil 'rechts vom Doppelpunkt' der Rest/Tail der Kategorie. Mengentheoretische Konstanten, deren Kategorienkopf nicht leer ist (d.h. die verschieden sind von '<>:') heißen Operatoren, alle anderen mengentheoretischen Konstanten potentielle Argumente.


The application of operators onto potential arguments
Operatoren können auf potentielle Argumente angewendet werden. Sei X ein Operator mit den Tail-Kategorien k_1, ..., k_n. Wenn es n-viele potentielle Argumente a_1 ... a_n gibt, deren Kategorien mit den Tail-Kategorien k_1, ..., k_n des Operators 'übereinstimmen', dann besteht die Anwendung des Operators X auf die potentiellen Argumente a_1 ... a_n darin, daß die potentiellen Argumente nach einer vereinbarten Weise mit dem Operator hingeschrieben werden. Dabei verliert sowohl der Operator als auch die Argumente ihre Kategorien und der neu entstehende Ausdruck bekommt den Kopf der Operatorkategorie als neue Kategorie.

BEISPIEL:

  1. Operator sei: (cut( ),<<0>:<0><0>>); potentielle Argumente seien: (a,<0>), (AA,<0>). Die Anwendung des Operators auf die Argumente könnte geschrieben werden: (cut(a,AA),<<0>>)

  2. Operator sei: (IN,<<1>:<0><0>>); potentielle Argumente seien: (a,<0>), (AA,<0>). Die Anwendung des Operators auf die Argumente könnte geschrieben werden: (IN(a,AA),<<1>>)

  3. Operator sei: ((A:),<<1>:<1>:<1>:<0>>); ein potentielles Argument könnte sein: (X,<0>). Im vorliegenden Fall hat der Operator einen geschachtelten Kopf. Die Anwendung des Operators auf das Argumente könnte geschrieben werden: ((A:X),<<1>:<1>>), d.h. auch nach der Anwendung auf ein potentielles Argument ist dieser Operator immer noch ein Operator, wenn auch ein 'kategorial anderer'.



A first list of used settheoretical constants together with their (german) names and the different ways of writing them down.
Es folgt jetzt eine erste Liste von wichtigen mengentheoretischen Konstanten samt Hinweisen, wie sie nach ihrer Anwendung auf Argumente hinzuschreiben sind.
  1. (IN,<<1>:<0><0>>)

    Elementschaftskonstante, nach Anwendung geschrieben

    (IN(a,b),<<1>>) oder

    ((a IN b),<<1>>) oder

    ((a in b),<<1>>)

  2. (EQUAL,<<1>:<0><0>>)

    Gleichheitskonstante, nach Anwendung geschrieben

    (EQUAL(a,b),<<1>>) oder

    ((a EQUAL b),<<1>>) oder

    ((a =_set b),<<1>>).

  3. (NOT,<<1>:<1>>)

    Negationskonstante, nach Anwendung geschrieben

    (NOT(P(X)),<<1>>) oder

    (~P(X),<<1>>)

  4. (and,<<1>:<1><1>>)

    Konjunktionskonstante, nach Anwendung geschrieben

    (and(P(X),Q(Y)),<<1>>) oder

    ((P(X) and Q(Y)),<<1>>) oder

    ((P(X) &_set Q(Y)),<<1>>)

  5. (or,<<1>:<1><1>>)

    Adjunktionskonstante, nach Anwendung geschrieben

    (or(P(X),Q(Y)),<<1>>) oder

    ((P(X) or Q(Y)),<<1>>)

  6. (if_then,<<1>:<1><1>>)

    Konditionalkonstante, nach Anwendung geschrieben

    (if_then(P(X),Q(Y)),<<1>>) oder

    (if(P(X) then Q(Y)),<<1>>) oder

    ((P(X) => Q(Y)),<<1>>)

  7. (iff,<<1>:<1><1>>)

    Bikonditionalkonstante, nach Anwendung geschrieben

    (iff(P(X),Q(Y)),<<1>>) oder

    ((P(X) iff Q(Y)),<<1>>) oder

    ((P(X) <=> Q(Y)),<<1>>)

  8. ((A: ),<<1>:<1>:<0>>)

    Allquantifikationskonstante, nach Anwendung geschrieben

    ((A:X),<<1>:<1>>)

  9. ((E: ),<<1>:<1>:<0>>)

    Partikularquantifikationskonstante, nach Anwendung geschrieben

    ((E:X),<<1>:<1>>)

  10. ((A: X),<<1>:<1>>)

    Allquantifikatorkonstante, nach Anwendung geschrieben

    ((A:X)(P(X)),<<1>>)

  11. ((E: X),<<1>:<1>>)

    Partikularquantifikatorkonstante, nach Anwendung geschrieben

    ((E:X)(P(X)),<<1>>)

  12. (CL,<<1>:<0>>)

    Klassenkonstante, nach Anwendung geschrieben

    (CL(a),<<1>>)

  13. (MG,<<1>:<0>>)

    Mengenkonstante, nach Anwendung geschrieben

    (MG(a),<<1>>)

  14. (SUBSET,<<1>:<0><0>>)

    Teilmengenkonstante, nach Anwendung geschrieben

    (SUBSET(a,b),<<1>>) oder

    ((a SUBSET b),<<1>>) oder

    ((a c b),<<1>>).

  15. (REAL_SUBSET,<<1>:<0><0>>)

    Echte Teilmengenkonstante, nach Anwendung geschrieben

    (REAL_SUBSET(a,b),<<1>>) oder

    ((a REAL_SUBSET b),<<1>>) oder

    ((a c b),<<1>>).

  16. (pow,<<0>:<0>>)

    Potenzmengenkonstante, nach Anwendung geschrieben

    (pow(a),<<0>>)

  17. (u,<<0>:<0><0>>)

    Kleine Vereinigungsmengenkonstante, nach Anwendung geschrieben

    (u(a,b),<<0>>) oder

    ((a u b,<<0>>)

  18. (cut,<<0>:<0><0>>)

    Kleine Durchschnittsmengenkonstante, nach Anwendung geschrieben

    (cut(a,b),<<0>>) oder

    ((a cut b,<<0>>)

  19. (diff,<<0>:<0><0>>)

    Differenzmengenkonstante, nach Anwendung geschrieben

    (diff(a,b),<<0>>) oder

    ((a diff b,<<0>>) oder

    ((a \ b,<<0>>)

  20. (ord_pair,<<0>:<0><0>>)

    Geordnetes Paar Konstante, nach Anwendung geschrieben

    (ord_pair(a,b),<<0>>) oder

    ((a ord_pair b,<<0>>) oder

    ((a,b),<<0>>)

  21. (pr1,<<0>:<0>>)

    Erste Projektions Konstante, nach Anwendung geschrieben

    (pr1(a),<<0>>) oder

  22. (pr2,<<0>:<0>>)

    Zweite Projektions Konstante, nach Anwendung geschrieben

    (pr2(a),<<0>>)

  23. (pair_product,<<0>:<0><0>>)

    Paarprodukt Konstante, nach Anwendung geschrieben

    (pair_product(X,Y),<<0>>) oder

    ((X pair_product Y),<<0>>) oder

    ((X x Y),<<0>>)

  24. (REL,<<1>:<0>>)

    Relations-Konstante, nach Anwendung geschrieben

    (REL(X),<<1>>) oder

  25. (dm,<<0>:<0>>)

    Domain Konstante, nach Anwendung geschrieben

    (dm(a),<<0>>)

  26. (rn,<<0>:<0>>)

    Range Konstante, nach Anwendung geschrieben

    (rn(a),<<0>>)

  27. (RD,<<1>:<0>>)

    Rechsteindeutigkeits-Konstante, nach Anwendung geschrieben

    (RD(X),<<1>>)

  28. (LD,<<1>:<0>>)

    Linksteindeutigkeits-Konstante, nach Anwendung geschrieben

    (LD(X),<<1>>)

  29. (FNK,<<1>:<0>>)

    Funktions-Konstante, nach Anwendung geschrieben

    (FNK(X),<<1>>)

  30. (BIJ,<<1>:<0>>)

    Bijektions-Konstante, nach Anwendung geschrieben

    (BIJ(X),<<1>>)

  31. (INJ,<<1>:<0>>)

    Injektions-Konstante, nach Anwendung geschrieben

    (INJ(X),<<1>>)

  32. (nat,<<0>>)

    Individuen-Konstante (Menge der natürlichen Zahlen)

  33. (dm,<<0>:<0>>)

    Domain Konstante, nach Anwendung geschrieben

    (dm(a),<<0>>)

  34. (suc,<<0>:<0>>)

    Successor Konstante, nach Anwendung geschrieben

    (suc(a),<<0>>)

  35. (pred,<<0>:<0>>)

    Predecessor Konstante, nach Anwendung geschrieben

    (pred(a),<<0>>)

  36. (SM,<<1>:<0><0>>)

    SMALLER_THAN Konstante, nach Anwendung geschrieben

    (SM(a,b),<<1>>) oder

    <_nat(a,b),<<1>>) oder

    (a <_nat b,<<1>>)

  37. Bijektion von n10 auf nat, so daß 0 = 0, 1 = suc(0), 2 = suc(1), usf.
  38. (SME,<<1>:<0><0>>)

    SMALLER_OR_EQUAL_THAN Konstante, nach Anwendung geschrieben

    (SME(a,b),<<1>>) oder

    <=_nat(a,b),<<1>>) oder

    (a <=_nat b,<<1>>)

  39. (SEQ,<<1>:<0>>)

    SEQUENCE Konstante, nach Anwendung geschrieben

    (SEQ(a),<<1>>)

  40. (FIN_SEQ,<<1>:<0>>)

    FINITE SEQUENCE Konstante, nach Anwendung geschrieben

    (FIN_SEQ(a),<<1>>)

  41. (TUP,<<1>:<0>>)

    TUPEL Konstante, nach Anwendung geschrieben

    (TUP(a),<<1>>) or

  42. (FIN_ENUM_OF,<<1>:<0><0>>)

    FINITE_ENUMERATION_OF Konstante, nach Anwendung geschrieben

    (FIN_ENUM_OF(a,n),<<1>>)

  43. (tp,<<0>:<0>>)

    tupel Konstante, nach Anwendung geschrieben

    (tp(a_0,...,a_n),<<0>>) or

    (,<<0>>)

  44. (cart_prod,<<0>:<0> ... <0>>)

    n-ary cartesian product Konstante, nach Anwendung geschrieben

    (cart_prod(a_0,...,a_n),<<0>>) or

    (a_0 x ... x a_n,<<0>>)






INHALT