• Keine Ergebnisse gefunden

Formalization and soundness of the Hoare logic

N/A
N/A
Protected

Academic year: 2022

Aktie "Formalization and soundness of the Hoare logic"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

8. Program Verification 8.3 Formalization and soundness of the Hoare logic

Section 8.3

Formalization and soundness of the Hoare logic

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 460

8. Program Verification 8.3 Formalization and soundness of the Hoare logic

Formalization in Isabelle/HOL

Issues to solve:

1. How are assertions represented and

how is syntactical substitution handled, e.g., the assignment axiom?

2. How to formalize axioms, rules, and derivations?

3. How to express (and prove) soundness?

Related Isabelle/HOL theory:

» HoareIMP.thy

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 461

8. Program Verification 8.3 Formalization and soundness of the Hoare logic

Formal syntax and semantics of Hoare triples

Approaches

Syntax and semantics of IMP: see Chapter 7

Options to formalize Hoare triples:

1. Deep embedding:

I model assertions by a datatype, sayassndeep(similar to IMP)

I model Hoare triples as triples of typeassndeep × com × assndeep

I define validity forassndeep × com × assndeep 2. Shallow embedding:

I express assertions by Isabelle/HOL formulas such that they have type:

type_synonym assn = state ⇒ bool

I model Hoare triples as triples of typeassn × com × assn

I define validity forassn×com×assn

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 462

8. Program Verification 8.3 Formalization and soundness of the Hoare logic

Shallow embedding of Hoare triples

Type and validity:

Type of Hoare triples is:

assn × com × assn

whereassn = state ⇒ boolandstate = var ⇒ int

Validity is defined as a ternary predicate (with mixfix syntax):

definition hoare_valid :: assn ⇒ com ⇒ assn ⇒ bool ("|= {(1_) }/ (_)/ {(1_)}" 50) where

|= {P}c{Q} ≡ ∀ s t. s -c→ t −→ P s −→ Q t

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 463

(2)

8. Program Verification 8.3 Formalization and soundness of the Hoare logic

Deep vs. shallow embedding

Discussion

Advantages of deep embedding:

I Faithfully reflects logic as syntactical calculus

I Assignment axiom can be realized by substitution

I Simplifies to prove meta-logical properties (e.g., soundness and completeness)

Advantages of shallow embedding:

I Less work

I Base logic already available

I Full support of Isabelle/HOL for assertions

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 464

8. Program Verification 8.3 Formalization and soundness of the Hoare logic

Soundness

Definition (Soundness/Korrektheit)

A logical calculus/proof system issound(German: korrekt) if all derivable formulas are valid.

Proof technique:

Use induction over the (height of) the derivation tree:

Show that all instances of the axiom schemas are valid

Assuming that the instances of the premisses in a rule application are valid, show that the instance of the conclusion is valid.

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 465

8. Program Verification 8.3 Formalization and soundness of the Hoare logic

Formalizing Hoare axioms and rules

We demonstrate 2 approaches (seeHoareIMP.thy):

1. Hoare axioms and rules as lemmas stating their soundness 2. An inductive definition of what it means to derive a Hoare triple

Remarks:

The assignment axiom is realized by function update instead of substitution.

Transformation of boolean expressions is done by the semantic functionbeval.

In both approaches, rule application is managed by Isabelle/HOL.

The second approach is the preferred technique; the first approach is shown for discussion.

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 466

8. Program Verification 8.4 Program verification with Isabelle/HOL

Section 8.4

Program verification with Isabelle/HOL

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 467

(3)

8. Program Verification 8.4 Program verification with Isabelle/HOL

Introduction

Using the Hoare logic in its classsical form is tedious:

{Hoare logic in a form supporting weakest precondition reasoning

Overview

Hoare logic in wp-form (seeHoareIMPwp.thy)

Automated wp-technique in Isabelle/HOL for IMP (see HoareIMPwp.thy)

Extension to IMP by arrays (seeHoareIMParry.thy)

Application in a case study (seeHoareIMParray.thy)

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 468

8. Program Verification 8.4 Program verification with Isabelle/HOL

Weakest precondition transformation

Definition (Weakest precondition, WP-transformer)

An assertionA =wp(C,Q)expresses theweakest preconditionof statementC for postconditionQif

P. {P }C{Q } −→ (P −→ A)

AWP-transformeris an algorithm that takesCandQas arguments and constructswp(C,Q).

Example:

The assignment axiom provides us with a WP-transformer for assignments:

wp(x:= E, Q) =def Q[E/x]

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 469

8. Program Verification 8.4 Program verification with Isabelle/HOL

Discussion

If preconditions are considered as sets of states, the weakest precondition is unique (Why?).

For more complex programming languages and Hoare logics, the assertion language might be not sufficiently expressive to specify the weakest precondition.

WP-transformation provides a proof strategy.

WP-transformation reduces program verification to reasoning on assertions:

{P }C{Q} ←→ (P −→wp(C, Q))

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 470

8. Program Verification 8.4 Program verification with Isabelle/HOL

WP-transformation for IMP

wp(SKIP,Q) = Q wp(x:=E,Q) = Q[E/x]

wp(C1;C2,Q) = wp(C1,wp(C2, Q)) wp(IF b THEN C1 ELSE C2 END, Q) =

(T(b)−→wp(C1,Q) ) ∧ (¬T(b)−→wp(C2,Q) ) Weakest preconditions for while statements can – in general – not be computed.

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 471

(4)

8. Program Verification 8.4 Program verification with Isabelle/HOL

WP reasoning for loops

To handle programs with while statements, we assume that they are annotated with appropriate invariantsP:

WHILE b INV P DO C END

LetQ be the computed postcondition of the while statement, then:

UseP as precondition for the while statement

Proof the following two implications:

1. Pis an invariant: T(b)∧P−→wp(C,P) 2. Pis sufficiently strong: ¬T(b)∧P−→Q

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 472

8. Program Verification 8.4 Program verification with Isabelle/HOL

Hoare logic in “WP-form”

Axioms and rules areWP-formif they allow to compute the precondition from the postcondition.

Skip and assignment axiom are already in WP-form; the new rules are:

{Q}C2{R} {P }C1{Q } {P }C1;C2{R }

{P1}C1{Q } {P2}C2{Q}

{(T(b)−→P1) ∧ (¬T(b)−→P2)}IF b THEN C1 ELSE C2 END{Q } {R }C{P } T(b)∧P −→R ¬T(b)∧P−→Q

{P }WHILE b INV P DO C END{Q }

A strengthening rule similar to the consequence rule is needed to prove that the precondition of a program implies the computed precondition.

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 473

8. Program Verification 8.4 Program verification with Isabelle/HOL

WP-reasoning with Isabelle/HOL

Approach:

Start the proof with an application of the strengthening rule

Apply wp-rules top-down following the program structure such that

I the weakest precondition to be generated is represented by a schema variable

I during further proof steps the schema variables are instantiated

Finally, prove the remaining subgoals, i.e., the implications appearing as premisses in the strengthening rule (1) and the while rule (2)

Example:

» HoareIMPwp.thy, see lecture

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 474

8. Program Verification 8.4 Program verification with Isabelle/HOL

Discussion

Remarks:

In Isabelle/HOL, the described proof strategy can be implemented as a method (seeHoareIMPwp.thy)

Note: Here, we explicitly use schema variables in proof goals.

Implementing the corresponding WP-transformer directly would be difficult because of the shallow embedding of the assertions.

©Arnd Poetzsch-Heffter et al. TU Kaiserslautern 475

Referenzen

ÄHNLICHE DOKUMENTE

In the second phase, the target program is synthesized by a leaves-to-root traversal of the symbolic execution tree by backward application of (extended) sequent calculus rules..

In the second section of the thesis, I tried to add the epistemic operator K to the LD using its standard definition.. If it is known that φ↔Aφ then every truth

The syntactic criterion evaluates correctness based on a comparison of formal and informal inferential dependencies among formalizations and cor- responding statements, and the

8.3 Formalization and soundness of the Hoare logic 8.4 Program verification with Isabelle/HOL.. 8.5 Verifying procedural, heap-manipulating programs 8.6 Software

We assume the following sorts: FieldId for field identifiers, MethodId for method identifiers, CTypeId for class type identifiers, ITypeId for interface type identifiers, VarId

That is, given the basic problem of

With the connectives, moves in the game in- volved choosing sentences that are parts of the sentence to which you are committed. With the quantifier rules, however, moves consist

Right And Cut As simple confirmatory consequence relations violate Left Logical Equivalence, Verification, and Right Reflexivity, they are no inductive consequence relations