Grundlagen der Programmierung Vorlesung 5 vom 11.11.2004 Sebastian Iwanowski FH Wedel GdP5 Slide 1 Grundlagen der Programmierung 1. Einführung Grundlegende Eigenschaften von Algorithmen und Programmen 2. Logik Aussagenlogik Î Prädikatenlogik 3. Programmentwicklung und –verifikation Grundlagen der Programmverifikation Verbundanweisungen Verzweigungen Schleifen Modularisierung Rekursion 4. Entwurf und Analyse von Algorithmen Klassifikation von Algorithmen Programmierung von Algorithmen Bewertung von Algorithmen GdP5 Slide 2 • • • Variable Prädikate Funktionen Prädikatenlogik • Quantoren Der Existenzquantor ∃x (...) drückt aus, dass es einen Wert für x gibt, der den dahinter stehenden Ausdruck zu einer wahren Aussage macht. Der Allquantor ∀x (...) drückt aus, dass jeder Wert für x den dahinter stehenden Ausdruck zu einer wahren Aussage macht. Die Definitionsbereiche für die Variablen dürfen eingeschränkt werden: Für den Existenzquantor ist das eine Verschärfung, für den Allquantor eine Abschwächung der Aussage. Bsp.: ∃ x ∈ R ∃ y ∈ R ((2 < x < 4) ∧ (0 < y < 6) ∧ (x + y > 7) ∧ (x ∙ y < 10)) ∀ x ∈ R (x ∙ x ≥ 0) GdP5 Slide 3 Prädikatenlogische Formeln • Eine prädikatenlogische Formel 1. Stufe ist eine Verknüpfung von endlich vielen Variablen, Funktionen und Prädikaten mit aussagenlogischen Operatoren oder Quantoren, die sich nur auf Variable beziehen. Bsp.: ∀x ( R(y, z) ∧ ∃y (¬P(y, x) ∨ R(y, z)) ) Grüne Vorkommen von y und z sind frei. Rote Vorkommen von x, y und z sind gebunden. Geschlossene Formeln: Formeln, die keine freien Variablen enthalten. Offene Formeln: Formeln, die keine gebundenen Variablen enthalten. GdP5 Slide 4 Prädikatenlogische Formeln • Eine Belegung einer Formel ist eine Zuweisung von Werten aus festgelegten Definitionsbereichen an die freien Variablen derart, dass dieselben Variablen immer denselben Wert erhalten. • Eine Formel heißt erfüllbar, wenn es eine Belegung gibt derart, dass die Formel wahr ist. / • Das Erfüllbarkeitsproblem ist in der Prädikatenlogik nicht entscheidbar, d.h. kein Algorithmus kann jemals in der Lage sein, von jeder Formel zu entscheiden, ob sie erfüllbar ist oder nicht. Das allgemeine Problem ist unlösbar ! GdP5 Slide 5 Prädikatenlogik Beschreibung der semantischen Eigenschaft einer Formel F(x1, x2, ..., xk) mit prädikatenlogischen Mitteln: • • • F ist erfüllbar: ∃ x1, x2, ..., xk (F(x1, x2, ..., xk) ↔ ⊤) F ist widersprüchlich: ∀ x1, x2, ..., xk (F(x1, x2, ..., xk) ↔ ⊥) F ist gültig (Tautologie): ∀ x1, x2, ..., xk • (F(x1, x2, ..., xk) ↔ ⊤) F ist widerlegbar (falsifizierbar): (F(x1, x2, ..., xk) ↔ ⊥) ∃ x1, x2, ..., xk Was fällt auf ? GdP5 Slide 6 Prädikatenlogik „Rechenregeln“ für die Quantoren: ¬∀x (F(x)) ⇔ ∃x (¬F(x)) ¬∃x (F(x)) ⇔ ∀x (¬F(x)) Verallgemeinerung von deMorgan ∀x ∀y (F(x,y)) ⇔ ∀y ∀x (F(x,y)) ∃x ∃y (F(x,y)) ⇔ ∃y ∃x (F(x,y)) Vertauschung gleicher Quantoren Was gilt bei der Vertauschung verschiedener Quantoren ? (⇔,⇒,⇐,⇎) ∃x ∀y (F(x,y)) ∀y ∃x (F(x,y)) ∃y ∀x (F(x,y)) ∀x ∃y (F(x,y)) GdP5 Slide 7 Prädikatenlogik „Rechenregeln“ für die Quantoren: Was gilt bei Hineinziehen von Quantoren in ∧ oder ⋁ ? (⇔,⇒,⇐,⇎) ∀x (F(x)) ⋁ ∀x (G(x)) ∀x (F(x) ⋁ G(x)) ∀x (F(x)) ∧ ∀x (G(x)) ∀x (F(x) ∧ G(x)) ∃x (F(x)) ⋁ ∃x (G(x)) ∃x (F(x) ⋁ G(x)) ∃x (F(x)) ∧ ∃x (G(x)) ∃x (F(x) ∧ G(x)) GdP5 Slide 8 ùrqtsqvu w þx ÿ ýyS x0z ]{|y z]} û ¦ ì £@åN:¢ ¾Yæ'ær ì ¦ M ¥@ ì ¦ ·^¸.¹ ·a½W¹ ·'¿+¹ ·\ÁE¹ ·aÃW¹ ·'Ä+¹ þ xe~.z ~ øÙ ®i° Ü_ª «iÙ ³Û­¯Ý«@¬Å©R° ÂA­¬Nò}´P«°3¬®iª+©b° !"#$%'&()%'&+*-,.0/ 213*4 õ b© ËÏÍΩ³#©bªµ®i˯¸i©b°½³Û©R°ÚPê´º»»é«¸i©b° ­¯»Å¬³#­¯©Û¼©R¸3«@¬Å­¯®i° ³Û­¯©R»©bªÜP}´º» »«¸i© P}˯˯©K°­ÏÍά © PêËϳۭ © [ Ü Ý »»­¯°½³ ¸i´#¬¸i©RÄP«´¬ P}Ë¯Ë¯Þ © PêËϳۭ © [Ü Ý »»­¯°P³ ¸i´¬¼¸i©RÄP«´¬ Ê_­¯°º­¯¸i© P}Ëϳ#­ © Ü Ý»»­¯°P³A¸i´#¬N¸i©bĽ«´#¬ Ê_­¯°º­¯¸i© P}Ëϳ#­ © Ü Ý»»­¯°P³A»Íκ˯© ÍÅÎ3¬¼¸i©RÄP«´¬ Ê_­¯°º­¯¸i©É°­ÏÍÅÎ3¬ © P}Ëϳ#­ © Ü Ý»»­¯°P³ »ÍÎ˯©'ÍάN¸i©bĽ«´#¬ Ê_­¯°º­¯¸i©É°­ÏÍÅÎ3¬ © P}Ëϳ#­ © Ü Ý»»­¯°P³ ¸i´¬¼¸i©RÄP«´¬ Beispiel z Es seien Animal, Vegetarian, Sheep, Cow, und Mad_cow einstellige Prädikatensymbole. Die Symbole EATS und PART_OF seien zweistellige Prädikatensymbole, und es seien x, y, z Variablen. Wir betrachten folgende Menge T von Formeln: z T := {"x (Sheep(x) Æ (Animal(x) Ÿ Vegetarian(x))) , "x (Cow(x) Æ (Animal(x) Ÿ Vegetarian(x))) , "x (Vegetarian(x) Æ (ÿ$y (EATS(x,y) Ÿ Animal(y)) Ÿ "y (EATS(x,y) Æ (ÿ$z (PART_OF(y,z) Ÿ Animal(z))))) } Beispiel (2) z Annahme: Formeln seien Grundlage für die Spezifikation von Programmen für ein großes Softwareprojekt für das Landwirtschaftsministerium dar. z Frage: Welche Kühe (eines bestimmten Bestandes, der als Parameter eingeht) sind beim Verzehr gesundheitsgefährdend? z Hierzu wird folgende Formel verwendet: f := "x (Mad_cow(x) Æ (Cow(x) Ÿ $y (EATS (x, y) Ÿ $z PART_OF(y, z) Ÿ Sheep(z)))) Beispiel (3) z Zu erstellen: Programm, das die Menge M aller x berechnen soll, für die Mad_cow(x) gilt z Nach eingehender Beratung mit Ihren Mitarbeitern kommen Sie zu dem Schluß, daß Sie das Projekt, obwohl es lukrativ sein mag, aus Gewissensgründen nicht annehmen werden, da die Menge M immer leer sein wird. z Sie zeigen, daß die Formel $x Mad_cow(x) unerfüllbar bzgl. T U {f} ist Prädikatenlogik Arithmetische Vergleichsprädikate: Präfix-Notation (Standard in Prädikatenlogik) lessThan (x,y) equal (x,y) Infix-Notation (Standard in Arithmetik) x < y x = y Postfix-Notation (Standard auf alten Taschenrechnern ohne Klammern) x, y, < x, y, = Mit diesen beiden Prädikaten lassen sich alle anderen Vergleichsprädikate bilden: x ≤ y x ≥ y x ≠ y x > y Wie drückt man mit diesen Prädikaten aus, dass eine Zahl x zwischen y und z liegt ? GdP5 Slide 9 Prädikatenlogik Arithmetische Vergleichsprädikate: Bilde das Gegenteil von: 1) (x>0) ⋁ ((y+x)≤0) 2) ∀y<0 ((x>0) ⋁ ((y+x)≤0)) GdP5 Slide 10 Beim nächsten Mal: Programmentwicklung und -verifikation GdP5 Slide 11