Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von...

24
K K ö ö nnen Computer programmieren? nnen Computer programmieren? Bernd Finkbeiner, Universität des Saarlandes Alonzo Church (1903-1995) Given a requirement which a circuit is to satisfy, we may suppose the requirement expressed in some suitable logistic system which is an extension of restricted recursive arithmetic. The synthesis problem is then to find recursion equivalences representing a circuit that satisfies the given requirement (or alternatively, to determine that there is no such circuit).” (Cornell University, 1957)

Transcript of Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von...

Page 1: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

KKöönnen Computer programmieren?nnen Computer programmieren?Bernd Finkbeiner, Universität des Saarlandes

Alonzo Church (1903-1995)

“Given a requirement which a circuit is to

satisfy, we may suppose the requirement

expressed in some suitable logistic system

which is an extension of restricted recursive

arithmetic. The synthesis problem is then to

find recursion equivalences representing a

circuit that satisfies the given requirement (or

alternatively, to determine that there is no

such circuit).”

(Cornell University, 1957)

Page 2: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

S7Synth

Meilensteine

1940: Universelle Berechenbarkeit Alan Turing, John von Neumann, Alonzo Church,…

1960: ω-AutomatentheorieRichard Büchi, Robert McNaughton, Michael Rabin,…

1980: Temporale LogikAmir Pnueli, Joseph Sifakis, Ed Clarke, Allan Emerson,…

Heute: Verteilte Systeme

Page 3: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

1940

Universelle Berechenbarkeit

...0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1…

0

1

2

3

4

5

Zustand 0, lese 1 ⇒ schreibe 0, bewege nach rechts,

Zustand 1, lese 0 ⇒ schreibe 0, bewege nach links,

Zustand 2, lese 1 ⇒ schreibe 0, bewege nach rechts,

Zustand 2, lese 0 ⇒ schreibe 1, bewege nach rechts.

Alan Mathison Turing(1912-1954)

Page 4: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Turing-Maschine M

M hält! M hält nicht!

Halteproblem

unentscheidbar

Turing-Maschine M

Spezifikation S

Implementierung von S S unrealisierbar!

Programmsynthese

Spec S: Implementierung soll sich genau wie M verhalten

und anhalten.

M hält! M hält nicht.

unentscheidbar

Page 5: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

“In other words, you can build an organ

which can do anything that can be done, but

you cannot build an organ which tells you

whether it can be done.”

(John von Neumann, Theory of Self-

Reproducing Automata)

John von Neumann(1903-1957)

1960

ω-Automatentheorie

Page 6: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Rohteile

Ban

d 1

Ban

d 2

Transporter

Maschine 1 Maschine 2

Verhalten = unendliche Folge von Beobachtungen:

B1,B2 – B1M1, B2M2 – B1,B2 – B1M1,B2M2 – B1,B2 – ….

Rohteile

Ban

d 1

Ban

d 2

Transporter

Maschine 1 Maschine 2

Verhalten = unendliche Folge von Beobachtungen:

B1,B2 – B1M1, B2M2 – B1,B2 – B1M1,B2M2 – B1,B2 – ….

B1 – B1M1 – B1 – B1M1 – B1 – B1M1 – ….

Page 7: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Rohteile

Ban

d 1

Ban

d 2

Transporter

Maschine 1 Maschine 2

Verhalten = unendliche Folge von Beobachtungen:

B1,B2 – B1M1, B2M2 – B1,B2 – B1M1,B2M2 – B1,B2 – ….

B1 – B1M1 – B1 – B1M1 – B1 – B1M1 – ….

B1 – B1M1 – B1 – B1M2 – B1 – B1M1 – ….

korrektes

Verhalten

inkorrektes

Verhalten

Verhalten = unendliche Folge von Beobachtungen:

B1,B2 – B1M1, B2M2 – B1,B2 – B1M1,B2M2 – B1,B2 – ….

B1,B2 – B1M1 – B2 – B2M2 – B1,B2 – B1M1 – ….

B1 – B1M1 – B2 – B1M2 – B1 – B1M1 – ….

B2 – B2M1 – B1 – B1M2 – B2 – ….

B1,B2 – B1M2 – B1,B2 – B1M1 – B1,B2 – ….

B1 – B1M1 – B1 – B1M1 – B1 – B1M2 – ….

B1 – B1M1 – B1 – B1M2 – B1 – B1M1 – ….

B1,B2 – B1M1 – B1,B2 – B1M2 – B1,B2 – ….

B1,B2 – B1M2 – B2 – B1M2 – B1,B2 – B1M2 – ….

B1 – B1M1 – B2 – B1M1 – B1 – B1M1 – ….

B2 – B2M2 – B1 – B1M2 – B2 – ….

B1,B2 – B1M1 – B1,B2 – B1M1 – B1,B2 – ….

B1 – B1M1 – B1 – B1M1 – B1 – B1M2 – ….

B1 – B1M2 – B1 – B1M2 – B1 – B1M1 – ….

Page 8: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Büchi-Automaten

Ein Büchi-Automat besteht aus

einem endlichen Alphabet Σeiner endlichen Menge vonZuständen Q

einem Initialzustand q0

einer Zustandsübergangsrelationδ ⊆ Q × Σ × Q

einer Menge von akzeptierendenZuständen F ⊆ Q

J. Richard Büchi(1924-1984)

Es muss immer (entweder auf Band 1 oder auf Band 2) ein Teil verfügbar sein.

B1M2 ∨B2M2

¬B1M2 ∧¬B2M2

B1M2

∨ B2M2

¬B1M2 ∧¬B2M2

B1 ∨ B2

Maschine 2 muss immer wieder (= unendlich oft) beliefert werden

Wenn immer ein Teil verfügbar ist, muss Maschine 2 unendlich oft beliefert werden.

true

B1M2 ∨ B2M2 ∧B1 ∨ B2

¬B1M2 ∧¬B2M2 ∧B1∨B2

¬B1M2 ∧¬B2M2 ∧B1∨B2

¬B1 ∧ ¬B2

¬B1 ∧ ¬B2

B1M2∨B2M2

∧B1∨B2

Page 9: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Rohteile

Ban

d 1

Ban

d 2

Transporter

Maschine 1 Maschine 2

true

B1M2 ∨ B2M2 ∧B1∨B2

¬B1M2 ∧¬B2M2 ∧B1∧B2

¬B1M2 ∧¬B2M2 ∧B1∨B2

¬B1 ∧ ¬B2

¬B1 ∧ ¬B2

B1M2∨B2M2

∧ B1∨B2

Umgebung

System

Page 10: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Das Verhalten der

Umgebung unterliegt

nicht unserer

Kontrolle.

Das System muss so

programmiert werden,

dass es sich dem

Umgebungsverhalten

richtig anpasst.

Spieler „Umgebung“

versucht fehlerhaftes

Verhalten zu

erzeugen.

Spieler „System“

versucht

korrektes

Verhalten zu

erzeugen

Programm = Strategie von Spieler „System“.

Page 11: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

¬B1M2∧¬B2M2B1∧B2

B1∧¬B2

¬B1∧B2

¬B1∧¬

B2

¬B1M2

¬B2M2

B1M2∨B2M2

B1M2

B2M2

B1∧B2

B1∧¬B2

¬B1∧B2

¬B1∧¬B2

true

true

Ein Sicherheitsspiel besteht aus

- Der Spielarena: endlicher Graph wobei

Knoten = mögliche Spielpositionen

Kanten = mögliche Spielzüge(getrennt nach Spielern)

- Der Gewinn-Bedingung:eine Menge von „Sieg“-Positionen in denen Spieler Rot das Spiel gewonnen hat.

Sicherheitsspiele

Page 12: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

In jeder Spielposition kann höchstens ein Spieler ziehen

B: Positionen von Spieler BlauR: Positionen von Spieler Rot

R

B

B

Eine Strategie für Spieler Rot ist eineFunktion

s: R → R∪B.

Eine Strategie gewinnt für Rotwenn jeder Spielablauf,bei dem Rot derStrategie folgt, in einerSieg-Position für Rotendet.

Page 13: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Eine Strategie für Spieler Blau ist eineFunktion

s: B → R∪B.

Eine Strategie gewinnt für Blauwenn jeder Spielablauf,bei dem Blau derStrategie folgt, nicht in einerSieg-Position für Rotendet.

Für eine gegebene Menge X von Positionen:

Aus welchen Positionen PreR(X) kann

Spieler Rot erzwingen,

dass die nächste Position in X liegt?

1. Alle Positionen in R, so dass ein Nachfolger in X liegt.

X

Page 14: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Für eine gegebene Menge X von Positionen:

Aus welchen Positionen PreR(X) kann

Spieler Rot erzwingen,

dass die nächste Position in X liegt?

X2. Alle Positionen in B,

so dass alle Nachfolger in X liegen.

1. Alle Positionen in R, so dass ein Nachfolger in X liegt.

Aus welchen Positionen hat Spieler Rot eine

gewinnende Strategie?

X1

1. Aus allen Sieg-Positionen für Rot: X1

2. Aus allen Positionen in X1 oder in PreR(X1): X2

X2=X3

3. Aus allen Positionen in X1, X2 oder in PreR(X2): X3

...

Der Fixpunkt (Xi mit Xi = Xi+1) ist die Attraktor-Menge von X1: AttrR(X1) = Xi.

Page 15: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Aus der Attraktor Menge für Spieler Rotergibt sich eine einfache Strategiefür Spieler Blau:

„Vermeide AttrR

wann immer möglich.“

AttrR

Lebendigkeitsspiele

Ein Lebendigkeitsspiel besteht aus

- Der Spielarena(wie bei Sicherheitssspielen)

- Der Gewinn-Bedingung: eine Menge F von Positionen

Für einen unendlich langen Ablauf

wird das Spiel folgendermaßen entschieden:

Wird unendlich oft eine Spielposition in F besucht, dann gewinnt Spieler Blau, ansonsten gewinnt Spieler Rot.

z.B.

F=„Maschine erhält Teil“

Page 16: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Lebendigkeitsspiele

Ein Lebendigkeitsspiel besteht aus

- Der Spielarena(wie bei Sicherheitsspielen)

- Der Gewinn-Bedingung: eine Menge F von Positionen

Für einen unendlich langen Ablauf

wird das Spiel folgendermaßen entschieden:

Wird unendlich oft eine Spielposition in F besucht, dann gewinnt Spieler Blau, ansonsten gewinnt Spieler Rot.

Von welchen Spielpositionen aus ist es Spieler Blau möglich,

mindestens einen Besuch von F

zu erzwingen?

Y1 = AttrB(F)

Attraktormengen-Konstruktion!

Y1

Page 17: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Von welchen Spielpositionen in F aus

ist es Spieler Blau möglich,

mindestens einen

weiteren Besuch

von F zu erzwingen?

Z1 = AttrB( PreB(F) ) ∩ F

PreB(F)

AttrB(PreB(F))Z1

Von welchen Spielpositionen in F aus

ist es Spieler Blau möglich,

unendlich viele

weitere Besuche

von F zu erzwingen?

Z1 = AttrB( PreB(F) ) ∩ F

Z2 = AttrB( PreB(Z1) ) ∩ F

Z1=Z2

PreB(Z1)

AttrB(PreB(Z1))

Der Fixpunkt (Zi mit Zi = Zi+1) ist die Revisit-Menge von F : RevisitB(F) = Zi.

Page 18: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Von welchen Spielpositionen aus ist es Spieler Blau möglich,

unendlich viele Besuche von F

zu erzwingen?

AttrB(RevisitB(F))

RevisitB(F)

AttrB(RevisitB(F))

¬B1M2∧¬B2M2B1∧B2

B1∧¬B2

¬B1∧B2

¬B1∧¬

B2

¬B1M2

¬B2M2

B1M2∨B2M2

B1M2

B2M2

B1∧B2

B1∧¬B2

¬B1∧B2

¬B1∧¬B2

true

true

Page 19: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

1980

Temporale Logik

Temporale Logik

ϕϕϕ ϕϕϕϕHenceforth

ϕ

ϕϕ ψϕϕ

ϕ

ϕ Eventually

ϕ

ψϕ Until

Nextϕ

pZustandsformelnpAmir Pnueli

Page 20: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Es muss immer (entweder auf Band 1 oder auf Band 2) ein Teil verfügbar sein.

Maschine 2 muss immer wieder (= unendlich oft) beliefert werden

Wenn immer ein Teil verfügbar ist, muss Maschine 2 unendlich oft beliefert werden.

(B1∨ B2)

(B1M2 ∨ B2M2)

(B1∨ B2) ⇒ (B1M2 ∨ B2M2)

Jede temporallogische Formel kann in einen äquivalenten Automaten umgeformt werden.

p

p

qp

p

ptrue

p

ptrue

ptrue true

p

qp true

true

Page 21: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Anwendung 1: Automatische Programmverifikation (Model Checking)

Logische Spezifikation ϕ, System S→ Negation: ¬ϕ→ Automat: A¬ϕ→ Komposition: S×A¬ϕ→ S ist korrekt

genau dann wenn die Sprache von S×A¬ϕ leer ist.

Anwendung 2: Automatische Programmsynthese

Logische Spezifikation ϕ→ Automat: Aϕ→ Spiel: Sϕ :

Spieler System gewinnt genau dann, wennAblauf von Aϕ akzeptiert wird.

→ Jede gewinnende Strategie in Spiel Sϕist eine korrekte Implementierung von ϕ.

Page 22: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

2008

Verteilte Systeme

1

6

2

4

3

5

Umgebung

Page 23: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Umgebung Sb

a

2

3

4

5

1 a∧¬b

¬a∧¬b

¬a∧b

a∧b

c

¬c

c

¬c

2

3

4

5

1 ?∧¬b

?∧b

c

¬c

6

7

6

1

1

7

Q 2Q

Umgebung 1

2Q

2 43

2Q

2

2Q2

22

2

22Q

Page 24: Können Computer programmieren? - rw.cdl.uni-saarland.de · Für eine gegebene Menge X von Positionen: Aus welchen Positionen PreR(X) kann Spieler Rot erzwingen, dass die nächste

Zusammenfassung

Church‘s

Problem

Unlösbar für

Turing-mächtige

SpezifikationenLösbar für viele

logische Spezifikationen,

z.B. Temporale Logik

komplex für verteilte

Systeme

Fazit

Synthese ist in wichtigen Gebieten dem menschlichen Programmierer überlegen (z.B. Steuerungssoftware, Scheduling).

Der Nachweis, dass keine verteilte Implementierung existiert, ist sehr teuer. (Suche nach verteilten Implementierungen ist aber möglich.)

Viele offene Forschungsfragen.