Assignment Language über
Z
Assigned Languge für Datentyp
D
Syntax (Wiederholung)
AL(D)
ist die kleinste Menge für die gilt
- v←t∈AL(D)
wenn
v∈IVS
und
t∈T(D)
- beginα; βend∈AL(D)
wenn
α,β∈AL(D)
- ifBthenαelseβ∈AL(D)
wenn
α,β∈AL(D)
und
B∈BA(D)
- whileBdoα∈AL(D)
wenn
α∈AL(D)
und
B∈BA(D)
Syntax (überZ)
Programme
AL→Var “←" Term∣
“begin" AL “;" AL “end" ∣
“if" Cond “then" AL “else" AL∣
“while" Cond “do" AL
Boolsche Ausdrücke
Cond →
“(" Term BinRel Term “)" | “(" Cond LogOp Cond “)" | “
¬" Cond
BinRel →‘‘="∣‘‘="∣‘‘>"∣"≥‘‘∣‘‘<"∣‘‘≤"
LogOp→‘‘∧"∣‘‘∨"
Arithmetische Ausdrücke
Term → Var ∣ Const ∣‘‘(" Term BinOp Term “)"
BinOp→‘‘+"∣‘‘−"∣‘‘∗"
Const →‘‘0"∣‘‘1"∣‘‘2"∣⋯∣‘‘42"∣⋯
Var→‘‘x"∣‘‘y"∣⋯∣“irgendeinWort"∣⋯
Semantik (überZ)
M(l,v←t)=I′
wobei
I′(v)=M(I,t)
und
I′∼vI
M(I, begin α;β end )=M(M(I,α),β)
M(I, if B then α else β)={M(I,α)M(I,β) falls M(I,B)=t falls M(I,B)=f
Vereinfachungen
Keine Unterscheidung zwischen Syntax und Semantik
Keine Unterscheidung zwischen unterschiedlichen Meaning-functions zum Auswerten:
M
ersetzt
MAL,MBA,MT
Datentyp / Modellstruktur bleibt fix
Z
.
Korrektheit
Spezifikation
Korrektheit: "Programm tut was es tun soll"
Benötigt formale / mathematisch-logische Spezifikation des Verhaltens.
AL(
Z
) hat Prädikatenlogik als Spezifikationssprache
Formel
Jede Formel
F
repräsentiert
{I∈ENV∣M(I,F)=t}
alle Wertebelegungen, in denen sie wahr ist.
Beispiel:
∃i(x=2i)
repräsentiert alle Wertebelegungen
I
in denen
I(x)
eine gerade Zahl ist.
Korrektheitsaussage
Korrektheitsaussage = Programm + Spezifikation
{
Vorbedingung
}
= Programm +
{
Nachbedingung
}
{
PL-Formel
}
= AL(
Z
) +
{
PL-Formel
}
{
F
}
=
α
+
{
G
}
Wahrheit einer Korrektheitsaussage{F}α{G}
Eine Korrektheitsaussage ist wahr, wenn jede zulässige Eingabe zum richtigen Ergebnis führt.
Wenn eine
Wertebelegung
die
Vorbedingung
erfüllt, dann erfüllt die Wertebelegung bei Programmende die
Nachbedingung
.
∀I∈ENV:M(I,F)=t⟹M(I′,G)=t
wobei
I′=M(I,α)
Wahrheit einer Korrektheitsaussage bezüglich...
- Partielle Korrektheit
Falls die Eingabe zulässig ist, ist das Ergebnis richtig
wenn
das Programm terminiert.
∀I∈ENV:M(I,F)=t⟹M(I′,G)=twennI′=M(I,α)
definiert ist
- Totale Korrektheit (= Partielle Korrektheit + Termination)
Falls die Eingabe zulässig ist, ist das Ergebnis richtig
und
das Programm terminiert.
∀I∈ENV:M(I,F)=t⟹M(I′,G)=tundI′=M(I,α)
ist defniert