Correttezza - imperativo Flashcards

1
Q

Correttezza - imperativo

Cosa si intende per correttezza di un programma

A

La correttezza di un programma è un concetto che si lega strettamente alla domanda “qual è il significato di un programma?”: infatti prima di tutto dobbiamo essere in grado di descrivere precisamente e formalmente un programma, per essere in grado di provare che fa quello che dovrebbe fare.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Correttezza - imperativo

Metodo delle invarianti

A

La correttezza di un programma si può esprimere come una frase che enuncia il contenuto di una certa variabile. è faciel tener traccia della verità di queste frasi quando si tratta di semplici assegnazioni di variabili, diventa complicato quando ci sono i loop: non c’è un modo semplice e genrale per dire quanti loop saranno eseguiti e quindi predirre la verità di queste frasi.
Una possibile soluzione è di provare a trovare una proprietà sugli effetti del loop che sia vera a prescindere da quanti loop vengono eseguiti.
Una “loop invariant” è una frase che è vera alla fine di un loop, sotto l’ipotesi che fosse vera all’inizio (la sua veridicità non è affetta dall’esecuzione del loop).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Correttezza - imperativo

Logica hoare

A

è una semantica assiomatica di Imp.
M,N sono espressioni numeriche;
A,B sono espressioni booleane;
p sono programmi;
M, N ::= 0 | 1 | . . . | x | M + N
A, B ::= true | false | A => B | M < N | M = N
p ::= skip | p; q | x := M | if B then p else q | while B do p

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Correttezza - imperativo

Not A

Logica di hoare

A

A => false

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Correttezza - imperativo

A or B

Logica di hoare

A

not(A)=>B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Correttezza - imperativo

A and B

Logica di hoare

A

not(not(A) or not(B))
not(A=>not(B))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Correttezza - imperativo

M>=N

Logica di hoare

A

not(M<N)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Correttezza - imperativo

Cos’è una formula

A

è una proposizione o una tripla:
Form ::= Prop | {Prop} Com {Prop}
La proposizione P e Q nella formula {P} C {Q} sono chiamat rispettivamente precondizione e postcondizione. Il significato intuitivo della tripla è: “se P è vero prima dell’esecuzione del programma C, allora Q è vera dopo che C termina, se termina”.
Questa interpretazione delle triple di Hoare è chiamata correttezza parziale, poiché la postcondizione è destinata a valere a condizione che C termini.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Correttezza - imperativo

True

Regole generali

A

true
La regola true è una postcondizione banale di qualsiasi programma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Correttezza - imperativo

False

Regole generali

A

false
La regola false è una precondizione banale di qualsiasi programma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Correttezza - imperativo

Str

Regole generali

A

str
Permette di rafforzare (strenthen) la precondizione di una formula

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Correttezza - imperativo

Weak

Regole generali

A

weak
Permette di diminuire (weaken) la postcondizione di una formula.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Correttezza - imperativo

And

Regole generali

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Correttezza - imperativo

Or

Regole generali

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Correttezza - imperativo

Skip

Regole speciali

A

skip
Skip non cambia il mondo: ciò che era vero prima skip è vero anche dopo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Correttezza - imperativo

Assign

Regole generali

A

assign
Dat auna proposizione P, scriviamo [E/x]P la proposizione ottenuta sostituendo le occorrenze di x in P con E.
Per esempio se P è la proposizione y = x + 7 e E è l’espressione x + 1, allora [E/x]P è la proposizione y = x + 1 + 7. Se y = x + 1 + 7 allora, fopo l’assegnamento x:=x+1 avremo y=x+7

17
Q

Correttezza - imperativo

While

Regole generali

A
18
Q

Correttezza - imperativo

Comp

Regole generali

A
19
Q

Correttezza - imperativo

If

Regole generali

A
20
Q

Derivare la tripla {x = 1} x := x + 1 {x = 2}

A

usando str e assign
{x = 1} => {x+1=2} {x+1=2} x := x + 1 {x = 2}

21
Q

Derivare la tripla
{x >= 0, y > 0}x = x + y{x > 0}

A

{x >= 0, y > 0} => {x+y > 0} {x+y > 0} x = x + y {x > 0}