Hi, erst mal danke für eure Antworten, ich soll das mit der "Hintereinanderausführungsregel" und der "Zuweisungsregel" beweisen!
Also:
Wenn {P}S1{R}
und {R}S2{Q}
dann {P}S1,S2{Q} (Hintereinanderausführungsregel)
und
Wenn P => Q[v/t]
dann {P}v:=t{Q} (Zuweisungsregel)
Ich denke man muss das Programm erstmal in zwei Programme aufteilen, wegen dem IF-Satz, also für (x<0) und (x>=0). Dann muss man jeweils S1 und S2 definieren und dann R und R' bestimmen usw. Bis man das Programm Verifiziert hat. Ich hätte jetzt für
S1 = x:=x-y;
und für
S2 = y:=x+y;x:=y-x;
genommen.
Hieraus erhält man jetzt zwei Behauptungen:
{x=A, y=B}S1{R} und {R}S2{x=max{A,B}, y=min{A,B}}
bzw.
{x=A, y=B}x:=x-y;{R} und {R}y:=x+y;x:=y-x;{x=max{A,B}, y=min{A,B}}
So, jetzt müsste man irgendwie R bestimmen, aber da komme ich nicht weiter.
Ich hoffe ihr habt eine Idee..
Mfg