1 nantes, en bretagne nantes in brittany la cour des comptes de bretagne le château des ducs de...

47
1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

Upload: joseph-walton

Post on 18-Jan-2016

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

1

Nantes, en BretagneNantes in Brittany

La Cour des Comptes de BretagneLe Château des ducs de Bretagneare situated in Nantes

Spectacle deRoyal de Luxe

Page 2: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

A bad solution, why?

Page 3: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

Composition: to maintain properties

Page 4: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

4

Proof and Model-checking, two Complementary Approaches

Henri HabriasI.U.T. de Nantes

LINA, Laboratoire de Nantes Atlantique

Page 5: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

5

A black box

in out

We do not take into account the data going through this buffer

Page 6: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

6

Two-places buffer

Two accepted traces : [in, out, in, out]

[in, in, out, in, out, out, in, out]

The following traces are never accepted :

[in, in, in]

[out, in, out]

[in, in, out, out, out]

Using the notation for regular expressions :

M = (in . (in . out)* out)*

Page 7: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

7

Jackson trees

M

outin

outin

PROD

in move

*

*

CONS

move out

*

Page 8: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

8

A white box

in out

move

Page 9: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

9

Our presentation

Through an example :

- proof and refinement with B

- model-checking with FSP

To specify a two-places buffer

With two tools : Atelier B and LTSA

Page 10: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

10

B

- Classical B

- Event B

Page 11: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

11

Classical B vs Event B

Classical B

An abstract machine with an Invariant and Operations respecting the invariant.

The execution system of these operations is not explicitely taken into account compte par la méthode.

We prove that an operation called under its precondition respects the invariant..

Page 12: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

12

Classical B vs Event B

Event B,

Keeps the concepts of classical B but use as fundamental concept, the concept of event..

An event is specified as a guarded operation.

An operation is called.An event is not called.

Page 13: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

13

A classical B Machine

MACHINE classicalDoorSETS STATE = {open, closed}VARIABLES doorStateINVARIANT doorState : STATEINITIALISATION doorState :: ETAT

OPERATIONSopen = doorState := open END;close = doorState := closed END;st <-- whatState =st := doorState END If doorState = open,

doorState := openrespects the invariant

Page 14: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

14

A Event B Machine

MACHINE EventBDoorSETS STATE = {open, closed}VARIABLES doorStateINVARIANT doorState : STATEINITIALISATION doorState :: STATE

OPERATIONSopening = SELECT doorState = closedTHEN doorState := open END;closing = SELECT doorState = openTHEN doorState := closed END;st <-- whatStates = st := doorState

END

Page 15: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

15

The door, classical B

close open

openclosed

close

open

open close

Page 16: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

16

The door, Event B

openclosed

close

open

initialisation initialisation

Page 17: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

17

Classical operation vs Event

- a classical operation is called

- an event is NOT called. An event is trigged when its guard istrue

Page 18: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

18

Refinement : guard vs precondition

- in classical B,

preconditions are weaked,

- in Event B ,

Guards are strenghten .

Parachute: more we are closed the ground more events we see.

Page 19: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

19

Refinement in Event B

- new variables

- new constraints linking these new variables to the old variables

- new events

And we refine the higher level events

Page 20: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

20

The two places buffer in B (Architecture)M1

M2

INCLUDES

CONS PROD

M1_IREFINES

IMPORTS

Page 21: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

21

M1 (1)

MACHINE

M1

VARIABLES

state

INVARIANT

state : 0..2

INITIALISATION

state := 0

Page 22: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

22

M1Machine (2)OPERATIONS

in = SELECT state = 0 THEN state := 1

WHEN state = 1 THEN state := 2

END;

out = SELECT state = 1 THEN state := 0

WHEN state = 2 THEN state := 1

END;

move = skip

END

Necessary because we refine withconstant signatures.

Page 23: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

23

MACHINE PROD (1)

MACHINE

PROD

VARIABLES

pstate

INVARIANT

pstate : 0..1

INITIALISATION

pstate := 0

PROD CONS

Page 24: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

24

MACHINE PROD (1)

OPERATIONS

in =

SELECT pstate = 0 THEN

pstate := 1 END;

pmove =

SELECT pstate = 1 THEN

pstate := 0 END

END

PROD CONS

Page 25: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

25

La machine CONS

MACHINE CONS

VARIABLES cstate

INVARIANT

cstat : 0..1

INITIALISATION cstate := 0

OPERATIONS

out = SELECT cstate = 1 THEN cstate := 0 END;

cmove = SELECT cstate = 0 THEN cstate := 1 END

END

PROD CONS

Page 26: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

26

M2 includes PROD and CONS

MACHINE M2

INCLUDES

PROD, CONS

PROMOTES

in, out

OPERATIONS

move = pmove || cmove

END

PROD CONS

Page 27: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

27

M2 simulates M1

IMPLEMENTATION M1_I

/* to prove that M2 simulates M1 */

REFINES

M1

IMPORTS

M2

PROMOTES

in, out, move

END

Page 28: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

28

FSP

We specify a behaviour in FSP.

LTSA generate the automatonandPermits executions.

We can minimise the automaton.

We can verify properties :

- no deadlock- progress property

Page 29: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

29

FSP and LTSA

Magee J., Kramer J., Concurrency, State Models & Java Programs, Wiley, 1999

Second edition, 2006

Page 30: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

30

P = (a (cd)*, b (cd)*)*

P= (a -> STATE1 | b -> STATE1),

STATE1 = (a -> STATE1 | b -> STATE1 | c -> STATE2),

STATE2 = (d -> STATE1).

P= ab*P= (a -> STATE),STATE =(b ->STOP | a -> STATE).

P=aa*

P= (a -> STOP | a -> STATE),

STATE = (a -> STATE).P= (a, b, c)*

P= (a -> P |b -> P | c -> P).

FSP and Regular Expressions

Page 31: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

A limitation of FSP

P = a*

It impossible to translate into FSP

In FSP, no empty sequence

Page 32: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

32

From CCS to FSP

C1 = in.m. C1

C2 = m'.out.C2

System = C1 | C2

C1 =(in -> m -> C1).

C2 =(m -> out -> C1).

||SYSTEM = (C1 || C2).

Is written in LTSA :

Page 33: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

33

|| in B and the diamond in Process algebra

P1

P2

P2

P1

Diamond

x=3 & y = 1

x:= x+2 || y:= y+2

x=5 & y = 5

x=3 & y = 1

x:=x+2; y:=x+2

x=5 & y=7

x=3 & y = 1

x:=x+2;x:=x+2

x=5 & y=5

Page 34: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

34

High level spec in FSP

BUFFER = STATE0,STATE0 = (in -> STATE1),STATE1 = (in -> STATE2 | out -> STATE0),STATE2 = (out -> STATE1).

BUFFER(N=2) = STATE [0],STATE[i:0..N] = (when (i<N) in -> STATE [i+1] | when (i>0) out -> STATE [i-1]).

ou

When : guard in FSP

in

out in

out

Page 35: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

35

Low level spec in FSP

PROD = (in -> move -> PROD).CONS = (move -> out -> CONS).||BUFF_2 = (PROD || CONS).

in outmove move

in

out in

outtau

Page 36: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

36

Equivalent Specs ?

If now we hide the silent action le move, it is replaced by a tau.

If we ask the minimisation of the automation, we obtain the same automaton as the one of the high level spec

Equivalence between the two behaviours

Page 37: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

37

Two equivalences for the minimisation

In FSP, for minimisation, two équivalences are considered.

-The strong equivalence considers that two systems are equal if they

Have the same behaviour when the occurrence of all their actions can

Be observed included the silent action.

Minimisation uses this equivalence when ther is no silent action.

Page 38: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

38

Weak equivalence

-The weak equivalence considers that two systems are equal if they

exhibit the same behaviour for an external observer who cannot detect

the occurrence of the tau actions.

PROD = (in -> move -> PROD).

CONS = (move -> out -> CONS).

||BUFF_2 = (PROD || CONS)\{move}.

Page 39: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

39

Verification of properties with LTSA

- Safety property) , as the absence of deadlock.

Defines a deterministic process asserting that this same processaccepts every trace including the actions of the alphabet of this process.

-Liveness property

Asserts that something good will arrive eventually.

Page 40: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

40

Progress property

In FSP, the temporal logic is not used..

We are limited to a class of liveness property called progress, which is the opposite to the property of starvation.

Such a property asserts that, whatever will be the state of the system,It is always the case where a specified action will eventually be executed.

Page 41: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

41

A behaviour in FSP

MEN(N=3) = BACHELOR[0]BACHELOR[spouses_nb : 0..N] = (marriage -> MARRIED[1])MARRIED[spouses_nb :0..N]=(when (spouses_nb ==1) divorce -> MEN |when (spouses_nb >1) divorce -> MARRIED[spouses_nb –1] |when (spouses_nb == 3] it_is_enough_for_a_man ->divorce -> MARRIED[spouses_nb –1 ] |when (spouses_nb <3) marriage -> MARRIED[spouses_nb + 1]).

Not considered: the death of a a man who was never married

Page 42: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

42

4 Relational schemas (without null values)

Schema 1Marriages_in_course (id_married_men , id_married_women)

Schema 2Marriages_in_course (id_married_men , id_married_women)

Schema 3Marriages_in_course (id_married_men , id_married_women)

Schema 4Marriages_in_course (id_married_men , id_married_women)

Page 43: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

43

B notation

isToDayMarriedWith : id_married_women -->> id_married_men

isToDayMarriedWith : id_married_men ->> id_married_women

isToDayMarriedWith : id_married_women >->> id_married_men

isToDayMarriedWith : id_married_women <--> id_married_men & dom (isToDayMarriedWith) = man

Page 44: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

44

Polygamy without polyandry

Bachelor Married

Marriage/ N:= N+1

Divorce or death/SELECT N=1 THEN N:=N-1

Divorce or death/SELECT N>1 THEN N:=N-1

Marriage/N:=N+1

Harel Automata with guards

Page 45: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

45

Conclusion

To specify, refine and verify :

-the B approach permits to manipulate variables as it is done classicallyin programming.

-The approach by Process Algebras does not use variables. A stateis modelised by a behaviour.-With LTSA, we are obliged to modelise a variable by a behaviour and It complicates the specification comparatively to what is done with B.

Page 46: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

46

Conclusion

But otherwise with B the automaton is not explicit whereas LTSAProducts the automaton.

- in B, we are guided by the proof,

- in FSP we are guided by the execution and by the generated automaton and his minimisation. Considering the automaton it is possibleto restructurate the specification

Page 47: 1 Nantes, en Bretagne Nantes in Brittany La Cour des Comptes de Bretagne Le Château des ducs de Bretagne are situated in Nantes Spectacle de Royal de Luxe

47

IN MEMORIAM Claude Piéplu (1923-2006)