Bearbeiten Sie die folgenden Aufgaben als Hausaufgaben. Ein Computerlabor findet heute nicht statt.
Aufgabe 10: (Bitlänge einer natürlichen Zahl a berechnen)
Sie berechnen die Bitlänge einer natürlichen Zahl a, indem Sie die kleinste Zweierpotenz 2k bestimmen, die größer als a ist. Für a = 13 beispielsweise ist 24 = 16 diese kleinste Zweierpotenz. Der Exponent k = 4 entspricht genau der Bitlänge von a.
Gegeben sei folgendes Programm X:
Das Programm X berechnet den kleinsten Exponenten k, derart dass 2k > a gilt.
Ermitteln Sie die schwächste Vorbedingung Q für die Korrektheitsformel {Q} X {R} mit der Nachbedingung
R: 2k > a
Wenn das Programm terminiert, dann ist k der kleinste Exponent, der diese Nachbedingung erfüllt, da k bei 0 beginnt und bei jedem Schleifendurchlauf um 1 größer wird.
Hinweis: Gehen Sie schrittweise vor. Beweisen Sie zunächst die While-Schleife, indem Sie die beiden Prämissen der Schlussregel für die While-Schleife beweisen. Ermitteln Sie aus der ersten Prämisse die Schleifeninvariante P. Bringen Sie die Nachbedingung R in die Form P ∧ ¬B, indem Sie die Variable p in die Nachbedingung hineinbringen.
Aufgabe 11: Beweisen Sie die totale Korrektheit des Programms zur Berechnung des Rests bei ganzzahliger Division aus der vorigen Aufgabenserie.
Hinweis: Für den Beweis der totalen Korrektheit müssen Sie die Schleifeninvariante P verschärfen, damit es einen ganzzahligen Ausdruck E gibt, der im Schleifenkörper vermindert wird und für den E > 0 aus P ∧ B abgeleitet werden kann.