0% found this document useful (0 votes)
35 views

Intro Verifica Programmi

This document introduces axiomatic verification, which uses self-evident rules (axioms) to formally prove the functional correctness of sequential programs. It discusses proving that a program satisfies a precondition P and postcondition Q using the notation {P} S {Q}. The document covers reasoning about assignment statements, sequencing, selection statements, and iteration using proof rules and loop invariants.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

Intro Verifica Programmi

This document introduces axiomatic verification, which uses self-evident rules (axioms) to formally prove the functional correctness of sequential programs. It discusses proving that a program satisfies a precondition P and postcondition Q using the notation {P} S {Q}. The document covers reasoning about assignment statements, sequencing, selection statements, and iteration using proof rules and loop invariants.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

Proofs of Correctness: Introduction

to Axiomatic Verification

„Introduction
„Weak correctness predicate

„Assignment statements

„Sequencing

„Selection statements

„Iteration
1

Introduction
„ What is Axiomatic Verification?
A formal method of reasoning about the
functional correctness of a structured,
sequential program by tracing its state
changes from an initial (i.e., pre-) condition
to a final (i.e., post-) condition according to
a set of self-evident rules (i.e., axioms).
„ What is its primary goal?
To provide a means for “proving” (or
“disproving”) the functional correctness of a
sequential program with respect to its
(formal) specification.
2

1
Introduction (cont.)

„ What are the benefits of studying


axiomatic verification?
„ Understanding its limitations.
„ Deeper insights into programming and
program structures.
„ Criteria for judging both programs and
programming languages.
„ The ability to formally verify small (or
parts of large) sequential programs.

Weak Correctness Predicate


„ To prove that program S is (weakly)
correct with respect to pre-condition P
and post-condition Q, it is sufficient to
show: {P} S {Q}.
„ Interpretation of {P} S {Q}: “if the
input (initial state) satisfies the pre-
condition P and (if) the program S
executes and terminates, then the
output (final state) will satisfy the
post-condition Q.”

2
Weak Correctness Predicate (cont.)

„ Thus, {P} S {Q} is true unless


Q could be false if S
terminates, given that P held
before S executes.
„ What are the truth values of
the following assertions?
(1) {x=1} y := x+1 {y>0}
(2) {x>0} x := x-1 {x>0}
5

Weak Correctness Predicate (cont.)


„ Thus, {P} S {Q} is true unless
Q could be false if S
terminates, given that P held
before S executes.
„ What are the truth values of
the following assertions?
(3) {1=2} k := 5 {k<0}

3
Weak Correctness Predicate (cont.)
„ Thus, {P} S {Q} is true unless Q
could be false if S terminates,
given that P held before S executes.
„ What are the truth values of the

following assertions?
(4) {true} while x <> 5 do x := x-1 {x=5}
(Hint: When will S terminate?)

Weak Correctness Predicate (cont.)

„We now consider techniques for


proving that such assertions hold for
structured programs comprised of
assignment statements, if-then (-
else) statements, and while loops.

(Why these particular constructs?)

4
Reasoning about Assignment
Statements
„ For each of the following pre-
conditions, P, and assignment
statements, S, identify a “strong”
post-condition, Q, such that {P} S {Q}
would hold.
„ A “strong” post-condition captures all
after-execution state information of
interest.
„ We ignore propositions such as X=X’
(“the final value of X is the same as
the initial value of X”).
9

Reasoning about Assignment


Statements (cont.)

{P} S {Q}
{J=6} K := 3
{J=6} J := J+2
{A<B} Min := A
{X<0} Y := -X

10

5
Reasoning about Assignment
Statements (cont.)

„ For each of the following post-


conditions, Q, and assignment
statements, S, identify a “weak”
pre-condition, P, such that
{P} S {Q} would hold.
(A “weak” pre-condition reflects
only what needs to be true
before.)

11

Reasoning about Assignment


Statements (cont.)

{P} S {Q}
I := 4 {J=7 Λ I=4}
I := 4 {I=4}
I := 4 {I=17}
Y := X+3 {Y=10}

12

6
When does
({P} S {Q}) ⇒ ({K} S {W})?

„ We just determined that


{J=7} I := 4 {J=7 Λ I=4}
holds.
„ We can deduce from this that
{J=7} I := 4 {J=7}
also holds since {J=7 Λ I=4} is stronger
than {J=7}, because
{J=7 Λ I=4} ⇒ {J=7}.

13

When does
({P} S {Q}) ⇒ ({K} S {W})?

„ Similarly, if we know that


{J=7} I := 4 {J=7 Λ I=4}
holds, it follows that
{J=7 Λ K=17} I := 4 {J=7 Λ I=4}
also holds since {J=7} is weaker than
{J=7 Λ K=17}, because
{J=7 Λ K=17} ⇒ {J=7}.

14

7
When does
({P} S {Q}) ⇒ ({K} S {W})?

„ Thus, we can replace pre-


conditions with ones that are
stronger, and post-conditions
with ones that are weaker.
„ Note that if A ⇒ B, we say that A
is stronger than B, or
equivalently, that B is weaker
than A.
15

Reasoning about Sequencing

„ In general:
„ if you know {P} S1 {R} and
„ you know {R} S2 {Q}
„ then you know {P} S1; S2 {Q}.

(So, to prove {P} S1; S2 {Q}, find {R}.)

16

8
Example 1

„ Prove the assertion:

{A=5} B := A+2; C := B-A; D := A-C {A=5 Λ D=3}

17

Reasoning about If_then_else


Statements
„ Consider the assertion:
{P} if b then S1 else S2 {Q}
{P}

T F
b

S1 S2

{Q}

„ What are the necessary conditions for


this assertion to hold?
18

9
Reasoning about If_then
Statements

{P}
„ Consider the assertion:
T
{P} if b then S {Q} b
F
S

„ What are the necessary


conditions for this assertion to {Q}
hold?

19

Example 2
„ Prove the assertion:

{Z=B} if A>B then Z := A {Z=Max(A,B)}

20

10
Proof Rules
„ Before proceeding to while loops, let’s
capture our previous reasoning about
sequencing, selection statements, and
state condition replacement in
appropriate rules of inference.

Rule for Sequencing:


{P} S1 {R}, {R} S2 {Q}
{P} S1; S2 {Q}

21

Proof Rules (cont.)


Rule for if_then_else statement:
{P Λ b } S1 {Q}, {P Λ ¬b} S2 {Q}
{P} if b then S1 else S2 {Q}

Rule for if_then statement:


{P Λ b } S {Q}, (P Λ ¬b) ⇒ Q
{P} if b then S {Q}

22

11
Proof Rules (cont.)

Rule for State Condition Replacement:

K ⇒ P, {P} S {Q}, Q ⇒ W
{K} S {W}

23

Reasoning about Iteration


{P}
„ Consider the assertion:
{P} while b do S {Q}
F
b
T

S
What are the necessary
conditions for this
{Q}
assertion to hold?
24

12
Consider a Loop “Invariant” - I
{P} Suppose I holds initially…

I
F
b
IЛb T
I Л ¬b and implies Q
S when and if the
loop finally
is preserved by S… terminates…
I {Q}

then the assertion


would hold!
25

Sufficient Conditions: while_do


Thus, a Rule for the while_do statement
is:

P ⇒ I, {I Λ b} S {I}, (I Λ ¬b) ⇒ Q
{P} while b do S {Q}

where the three antecedents are


sometimes given the names
initialization, preservation, and
finalization, respectively.
26

13
Example 3
Use the invariant I: Z=XJ to prove:

{true} Initialization: P ⇒ I
Z := X Preservation: {I Λ b} S {I}
J := 1 Finalization: (I Λ ¬b) ⇒ Q
while J<>Y do
Z := Z+X
J := J+1
end_while
{Z=XY}
27

Example 3
Use the invariant I: Z=XJ to prove:

{true}
Initialization: P ⇒ I
Z := X
J := 1 What is “P” ?
P
while J<>Y do (Z=X Λ J=1)
Z := Z+X Does
J := J+1
end_while (Z=X Λ J=1) ⇒ Z=XJ ?
{Z=XY} Yes!

28

14
Example 3
Use the invariant I: Z=XJ to prove:
Initialization: P ⇒ I √
{true} Preservation: {I Λ b} S {I}
Z := X b {Z=XJ Λ J ≠Y}
J := 1 Z := Z+X
while J<>Y do {Z=X(J+1) Λ J ≠Y}
Z := Z+X J := J+1
J := J+1 S {Z=X((J-1)+1) Λ J-1≠Y}
end_while ⇒ Z=XJ
{Z=XY}
29

Example 3
Use the invariant I: Z=XJ to prove:

Initialization: P ⇒ I √
{true}
Preservation: {I Λ b} S {I} √
Z := X
J := 1 Finalization: (I Λ ¬b) ⇒ Q
while J<>Y do
Z := Z+X Does (Z=XJ Λ J=Y) ⇒ Z=XY?
J := J+1
end_while Yes!
{Z=XY}

30

15
Example 3
Use the invariant I: Z=XJ to prove:

{true} Initialization: P ⇒ I √
Z := X Preservation: {I Λ b} S {I} √
J := 1 Finalization: (I Λ ¬b) ⇒ Q √
while J<>Y do
Z := Z+X
J := J+1
end_while
{Z=XY}

31

Some Limitations of Formal


Verification
„ Difficulties can arise when dealing
with:
„ parameters
„ pointers
„ synthesis of invariants
„ decidability of verification conditions
„ concurrency

32

16
Some Limitations of Formal
Verification (cont.)
„ In addition, a formal specification:
„ may be expensive to produce
„ may be incorrect and/or incomplete
„ normally reflects functional
requirements only
„ Will the proof process be manual
or automatic? Who will prove the
proof?
33

17

You might also like