26
Translation Translation Validation Validation A.Pnueli A.Pnueli M.Siegel M.Siegel E.Singerman E.Singerman

Translation Validation

  • Upload
    harley

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Translation Validation. A.Pnueli M.Siegel E.Singerman. Motivation. Prove that high level specification is correctly implemented in low level code. Verifying compiler is not feasible. Development freezing. Solution: Translation Validation. Translation Validation. - PowerPoint PPT Presentation

Citation preview

Page 1: Translation Validation

Translation ValidationTranslation ValidationTranslation ValidationTranslation ValidationA.PnueliA.Pnueli

M.SiegelM.Siegel

E.SingermanE.Singerman

Page 2: Translation Validation

Motivation

• Prove that high level specification is correctly implemented in low level code.– Verifying compiler is not feasible.– Development freezing.

Solution: Translation Validation

Page 3: Translation Validation

Translation Validation

After each compiler run verify that the target code produced on this run correctly implements the source code.

Page 4: Translation Validation

• A common semantic framework.

• Notion of “correct implementation”.

• A proof method.

• Automation of the proof method.

Necessary Ingredients

Page 5: Translation Validation

Exampleprocess DEC =

( ? integer FB ! integer N )

( | N := FB default (ZN-1) | ZN := N $ init 1 | FB ^= when (ZN <= 1) |)

where integer ZN init 1 ;

end

logical DEC_iterate() {l0: h1C = TRUE;

l1: h2C = ZNC <= 1;

l2: if (h2C)

l2.1: read(FBC);

l3: if (h2C)

l3.1: NC = FBC;

elsel3.2: NC = ZNC - 1;

l4: write(NC);

l5: ZNC = NC;

return TRUE;}

Page 6: Translation Validation

FB : 3 N : 3 ZN : 1

FB : N : 2 ZN : 3

FB : N : 1 ZN : 2

FB : 5 N : 5 ZN : 1

FB : N : 4 ZN : 5

FB : * N : * ZN : 1 h1 : * h2 : * pc : l0

FB : * N : * ZN : 1 h1 : t h2 : t pc : l2

FB : 3 N : * ZN : 1 h1 : t h2 : t pc : l3

FB : 3 N : * ZN : 1 h1 : t h2 : t pc : l3.1

FB : 3 N : 3 ZN : 1 h1 : t h2 : t pc : l5

FB : 3 N : 3 ZN : 3 h1 : t h2 : t pc : l0

…FB : 3 N : 3 ZN : 3 h1 : t h2 : f pc : l2

FB : 3 N : 3 ZN : 3 h1 : t h2 : f pc : l3

FB : 3 N : 3 ZN : 3 h1 : t h2 : f pc : l3.2

FB : 3 N : 2 ZN : 3 h1 : t h2 : f pc : l5

FB : N : ZN : 1

Page 7: Translation Validation

Common Semantic Framework

Synchronous Transition SystemS = (V,O,Θ, ρ)

– V a set of state variables– O V a set of observable variables – Θ an initial condition characterizing the

initial states of the system– ρ a transition relation, relating a state

to its possible successors

Page 8: Translation Validation

process DEC = ( ? integer FB ! integer N )

( | N := FB default (ZN-1) | ZN := N $ 1 | FB ^= when (ZN <= 1) |)

where integer ZN init 1 ;

end V = {FB,N,ZN,m.ZN}Θ = (FB = N = ZN = m.ZN = 1)

N’ = if FB’ then FB’ else ZN’ -1 m.ZN’ = if N’ then N’ else m.ZN ZN’ = if N’ then m.ZN else ZN’ 1 FB’

=

Page 9: Translation Validation

logical DEC_iterate() {l0: h1 = TRUE;l1: h2 = ZN <= 1;l2: if (h2)l2.1:

read(FB);l3: if (h2)l3.1: N = FB;

elsel3.2: N = ZN - 1;l4: write(N);l5: ZN = N;

return TRUE;}

V = {FBC,NC,ZNC,h1C,h2C}

Θ = (ZNC = 1 pc = l0)

(pc=l0 h1’C=T pc’=l1 pres_but(pc.h1c))

(pc=l1 h2’C=(ZNC 1) pc’=l2 pres_but(pc,h2C))

(pc=l2 h2C pc’=l2.1 pres_but(pc))

(pc=l2 h2C pc’=l3 pres_but(pc))

(pc=l2.1 pc’=l3 pres_but(pc,FBC))

(pc=l3 h2C pc’=l3.1 pres_but(pc))

(pc=l3 h2C pc’=l3.2 pres_but(pc))

(pc=l3.1 N’C=FBC pc’=l4 pres_but(pc,NC))

(pc=l3.2 N’C=ZNC–1 pc’=l4 pres_but(pc,NC))

(pc=l4 pc’=l5 pres_but(pc))

(pc=l5 ZN’C=NC pc’=l0 pres_but(pc,ZNC))

C=

Page 10: Translation Validation

Let A = (V,O,Θ, ρ)• s[v] – a value state s assigns to

each variable vV.

• σ: s0,s1… - A computation

s0 |= Θ

(si,si+1) |= ρ iN

• ||A|| - the set of computations of A.

STS computation

Page 11: Translation Validation

A = (VA,OA,ΘA, ρA)

C = (VC,OC,ΘC, ρC)

Clocked interface mapping:I: C O

A

xOA, sC. I(s)[x]=s[x] or I(s)[x]=

Definition: C refines A if there exists a clocked interface mapping I from C to A such that I(||C||)||A||O.

Defining Refinement

OAOC

Page 12: Translation Validation

Proving RefinementClocked refinement mapping from C to A:

f: C A

xOA, sC. f(s)[x]=s[x] or f(s)[x]=

Theorem: C refines A if there exists a clocked refinement mapping f: C A such that

sC . s|= ΘC f(s) |= ΘA

s,s’ Cr . (s,s’)|= ρC (f(s),f(s’))|= ρA

Such f called inductive.

Page 13: Translation Validation

Proof Rule

: VA (VC) sA ā(sC)

For - state formula over VA:

ā(sC)|= iff sC|= []

For assertion inv and substitution : VA E(VC)

R1. ΘC inv inv holds initially

R2. inv ρC inv` inv is propagated

R3. ΘC ΘA[] Initiation

R4. inv ρC ρA[] Propagation

R5. inv (v[] = v v[] = ) vOA

C refines A

Page 14: Translation Validation

Translation Validation: Translation Validation: from Signal to Cfrom Signal to C

Translation Validation: Translation Validation: from Signal to Cfrom Signal to C

A.PnueliA.PnueliO.ShtrichmanO.Shtrichman

M.SiegelM.Siegel

Page 15: Translation Validation

Observation Functions and Correct Implementation

A = (VA,ΘA,A,OA) C = (VC,ΘC,C,OC)

• OA, OC – observation functions

• Given : s0, s1, …, - O(s0),O(s1), …, is observation of STS.

• Obs(A) is the set of A observations.

Definition: C refines A if Obs(C) Obs(A)

Page 16: Translation Validation

Adaptation to Signal compilation

Page 17: Translation Validation

process MUX = ( ? integer FB ! integer N )

( | N := FB default (ZN-1) | ZN := N $ init 1 | FB ^= when (ZN <= 1) |)

where integer ZN init 1 ;

end

Choosing Observation

• OA = (FB,N)

• OC = (OCFB,OC

N)

logical MUX_iterate()

{

l0: h1C = TRUE;

l1: h2C = ZNC <= 1;

l2: if (h2C)

l2.1: read(FBC);

l3: if (h2C)

l3.1: NC = FBC;

else

l3.2: NC = ZNC - 1;

l4: write(NC);

l5: ZNC = NC;

return TRUE;

}

logical MUX_iterate() { rd.FBC=F; wr.NC=F;

l0: h1C = TRUE;

l1: h2C = ZNC <= 1;

l2: if (h2C){

l2.1: read(FBC);

rd>FBC=T;

}l3: if (h2C)

l3.1: NC = FBC;

elsel3.2: NC = ZNC - 1;

l4: write(NC);

wr.NC=T;

l5: ZNC = NC;

return TRUE;}

OCFB: if rd.FBC then FBC else

OCN : if wr.NC then NC else

Page 18: Translation Validation

FB : 3 N : 3 ZN : 1

FB : N : 2 ZN : 3

FB : N : 1 ZN : 2

FB : 5 N : 5 ZN : 1

FB : N : 4 ZN : 5

FB : * N : * ZN : 1 h1 : * h2 : * pc : l0

FB : * N : * ZN : 1 h1 : t h2 : t pc : l2

FB : 3 N : * ZN : 1 h1 : t h2 : t pc : l3

FB : 3 N : * ZN : 1 h1 : t h2 : t pc : l3.1

FB : 3 N : 3 ZN : 1 h1 : t h2 : t pc : l5

FB : 3 N : 3 ZN : 3 h1 : t h2 : t pc : l0

…FB : 3 N : 3 ZN : 3 h1 : t h2 : f pc : l2

FB : 3 N : 3 ZN : 3 h1 : t h2 : f pc : l3

FB : 3 N : 3 ZN : 3 h1 : t h2 : f pc : l3.2

FB : 3 N : 2 ZN : 3 h1 : t h2 : f pc : l5

FB : N : ZN : 1

Page 19: Translation Validation

Composite STS• Compose the transition relations of the individual

statements inside the loop’s body.– no nested loops

V : {FBC,NC,ZNC,h1C,h2C,rd.FBC,wr.NC}

Θ : ZNC = 1 pc = l0

(h1’C=T)

(h2’C=(ZNC 1))

(h2’C(N’C=FBC)

(h2’C(FB’C=FBC N’C=ZNC–1))

(ZN’C=N’C)

(rd.FB’C=h2’C)

(wr.N’C=T)

OCFB: if rd.FBC then FBC else

OCN : if wr.NC then NC else

C :

Page 20: Translation Validation

Composite STS

V : {FBC,NC,ZNC,h1C,h2C}

Θ : ZNC = 1 pc = l0

(h1’C=T)

(h2’C=(ZNC 1))

(h2’C(N’C=FBC)

(h2’C(FB’C=FBC N’C=ZNC–1))

(ZN’C=N’C)

OCFB: if h2C then FBC else

OCN : NC

C :

Page 21: Translation Validation

For an abstraction mapping VA = (VC)

R1. ΘC VA = (VC) ΘA Initiation

R2. VA = (VC) C V’A = (V’C) A Propagation

R3. VA = (VC) OA=OC Compatibility with observations

C refines A

Rule Ref.

Establish by induction that, for every C:s0C,s1

C,… there exists A:s0

A,s1A,… such that sj

A=(sjC) and

their observations are equal.

Page 22: Translation Validation

Construction of the Mapping For vVA, v(Vc) – the value of v in sA related to sC.

• For v IO, v(Vc) = OCv(VC)

• For each register flowm.r = rC ’m.r = r’C

• For each Register or Local variablev’ = eqv ’v = eqv (determinate programs)

W1. ΘC rR(m.r = rC) vIORL(v = ) ΘA

W2. rR(m.r = rC m.r’ = r’C) C

vIO( v’ = (OCv)’ ) vRL(v’ = eqv)

A

Page 23: Translation Validation

Theorem: If verification conditions W1 and W2 are valid, then C refines A.

Page 24: Translation Validation

Example

U1. ZNC = 1 m.ZN = ZNc FB = N = ZN =

FB = N = ZN = m.ZN= 1

U2. C A

m.ZN = ZNC

FB’ = if h2’C then FB’ else N’ = N’C

m.ZN’ = ZN’C

ZN’ = if N’ then m.ZN else

Page 25: Translation Validation

Example

U2. C A

m.ZN = ZNC

FB’ = if h2’C then FB’ else N’ = N’C

m.ZN’ = ZN’C

ZN’ = if N’ then m.ZN else

U2. C A

m.ZN = ZNC

FB’ = if h2’C then FB’ else N’ = N’C

m.ZN’ = ZN’C

ZN’ = ZNC

Page 26: Translation Validation

The End