Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Beweis durch Hoare Kalkül

Empfohlene Antworten

Veröffentlicht

Hallo Ihr Lieben,

ich muss ein Stück einfachen Programmcode durch das Hoare Kalkül beweisen und komm mit der ganzen Thematik absolut nicht klar. Auch nach dem Belesen auf mehreren Webseiten und diversen Vorlesungen, gehts irgendwie nicht weiter und ich brauch mal Eure Hilfe.

Folgender Code soll mit Hoare auf Korrektheit überprüft werden:

{k*j+k*i+k > 80}

i := i + 1;

j := j + i;

k := k * i;

{k > 80}

Wie geht man an soetwas heran?

Gruß

Wie geht man an soetwas heran?

Ich hab sowas immer "rückwärts" gemacht. Also: die Endaussage nehmen, die Variablen darin durch das vorhergehende ersetzen usw.

btw. in der letzten Zeile meinst du sicher

k:=k*j;

oder?

Soll ich mal vormachen?

{k*j+k*i+k > 80}

i := i + 1;

j := j + i;

{k*j > 80}

k := k * j;

{k > 80}

Ich denke, den Rest kriegst du so alleine hin. Ist eigentlich ganz einfach.

Hey beebof,

besten Dank. Dass man das rückwärts am einfachsten macht, habe ich auch schon gelesen/gehört. Dieses Einsetzen wollte ich auch machen, aber ist das wirklich die Beweisführung? Wir haben in der Vorlesung so komplizierte Beweisbäume kennengelernt, die von unten nach oben wachsen und in denen ich diverse Beweisregeln so lange ausführen kann, bis die einzelnen Äste des Baumes "true" werden. Sind das nur evrschiedene Wege der Beweisführung?

Gruß

Basti

Und meiner Meinung nach ist das auch legitim, da man nur Äquivalenzumformungen durchführt.
Ich bin mir da nicht so sicher. Bei Ungleichungen dreht sich das Zeichen um, wenn man mit negativen Zahlen multipliziert. Eine Unterscheidung nach dem Vorzeichen von j könnte also notwendig sein.
Eine Unterscheidung nach dem Vorzeichen von j könnte also notwendig sein.

Ich denke nicht, da ich mit der Bedingung k:=k*j umforme. (bzw. im "rückwärtigen" Fall k*j := k)

Ich substituiere also einfach nur die Aussage k > 80. Hierbei brauche ich nicht auf Vorzeichen achten, da sich diese nicht ändern dürfen.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.