Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN...

111

Transcript of Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN...

Page 1: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 2: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 3: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 4: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 5: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

void myFunc(int index) {

if (val1 >= VMIN && val2 >= VMIN && val3 >= VMIN) {

Tab[index] = true;

counter ++;

} else {

Tab[index] = false;

}

}

bool Tab[10];

int val1, val2, val3;

int counter = 0;

myFunc(index) =

IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN)

THEN

Tab(index) := TRUE;

counter := counter + 1

ELSE

Tab(index) = FALSE

END

CONCRETE_VARIABLES

Tab, val1, val2, val3,

counter

INVARIANT

Tab: 0..9 --> BOOL &

val1 : INT &

val2 : INT &

val3 : INT &

counter : INT

INITIALISATION

Counter := 0 ; etc.

Page 6: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

void myFunc(int index) {

if (val1 >= VMIN && val2 >= VMIN && val3 >= VMIN) {

Tab[index] = true;

counter ++;

} else {

Tab[index] = false;

}

}

bool Tab[10];

int val1, val2, val3;

int counter = 0;

Page 7: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

myFunc(index) =

IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN)

THEN

Tab(index) := TRUE;

counter := counter + 1

ELSE

Tab(index) = FALSE

END

CONCRETE_VARIABLES

Tab, val1, val2, val3,

counter

INVARIANT

Tab: 0..9 --> BOOL &

val1 : INT &

val2 : INT &

val3 : INT &

counter : INT

INITIALISATION

Counter := 0 ; etc.

Page 8: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

myFunc(index) =

IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN)

THEN

Tab(index) := TRUE;

counter := counter + 1

ELSE

Tab(index) = FALSE

END

CONCRETE_VARIABLES

Tab, val1, val2, val3,

counter

INVARIANT

Tab: 0..9 --> BOOL &

val1 : INT &

val2 : INT &

val3 : INT &

counter : INT

INITIALISATION

Counter := 0 ; etc.

Page 9: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 10: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 11: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 12: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 13: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 14: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 15: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

void myFunc(int index) {

if (val1 >= VMIN && val2 >= VMIN && val3 >= VMIN) {

Tab[index] = true;

counter ++;

} else {

Tab[index] = false;

}

}

bool Tab[10];

int val1, val2, val3;

int counter = 0;

Page 16: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 17: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Code generator 1 Instance 1

B model

Code generator 2 Instance 2

Page 18: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

B Specification

B Implementation

C generated code

« Only inactive sequences can be added to the activesequences execution queue. »

Natural languagerequirement

Binary code

Behaviour+

properties

Behaviour+

properties

Page 19: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

B Specification

B Implementation

C generated code

« Only inactive sequences can be added to the activesequences execution queue. »

Natural languagerequirement

Binary code

Philosophy:Avoid to introduce errors during the development (proof)

instead of trying to detect them close to the end of the development (tests)

Proof (refinement)

Proof (coherence)

Proof (coherence)

Page 20: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 21: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 22: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 23: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 24: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 25: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 26: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 27: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 28: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 29: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

:

&

Page 30: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 31: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 32: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

v0

v1v2

v0

v1

v2

decision

V0

OK/KOV1

V2

Page 33: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

:

/

Page 34: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 35: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 36: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 37: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 38: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

N N

Page 39: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 40: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 41: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 42: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 43: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 44: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 45: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 46: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 47: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

OPERATIONS bodies are identical:What is proved is ….. the copy-paste

Page 48: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 49: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 50: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 51: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 52: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 53: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 54: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 55: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 56: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 57: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 58: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 59: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 60: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 61: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 62: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 63: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

D

S S S

D D

D

D

S

Page 64: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 65: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Page 66: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 67: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES
Page 68: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Genesis

•–

20

0 c

m

Sao Paulo L2 & L3 (2009)

Siemens S7 PLC

50

cm

Coppilot.M PLC SIL4

Sao Paulo L15 (2016)Stockholm Citybanan (2017)

LCHIP

13

cm

2017

Page 69: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Genesis

Platform screen doors controler installedin Stockholm (Citybanan)

Sao Paulo L15 (2016)

Stockholm Citybanan(2017)

Gateway SATURN (2016)

Page 70: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Genesis

Page 71: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

LCHIP in a Nutshell

DESIGN EXECUTION

Page 72: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

LCHIP in a Nutshell

EXECUTION

Design

Page 73: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

LCHIP in a Nutshell

Page 74: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Technical principles

Page 75: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Binarycode

ASM MIPS, HEX

Source code

C

Binarycode

HEX

ConcreteFormal model

proof

Natural language

specification

AbstractFormal model

proof

End UserRefining

tool

Code generator

Compiler

Compiler

Binarycode

HEX

Application

HEX

Linker

Application

Safety Belt

IDE dev

Code generator

IDE dev

AbstractFormal model

proof

ConcreteFormal model

proof

Source code

C

Source code

C

Binarycode

HEX

Compiler

LIBRARY

Memory mappingCross verificationCRC

Page 76: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Roadmap

Page 77: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Roadmap

Proof partly automatic

Page 78: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Roadmap

Page 79: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Roadmap

Page 80: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Roadmap

Page 81: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Roadmap

Page 82: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Roadmap

Proof more efficient / automaticIntegration of diverse provers

Page 83: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Starter Kit SK0

Page 84: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Starter Kit SK0

Page 85: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

A complete transaction

Page 86: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

A complete transaction

DEMO

Page 87: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Programming

Page 88: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

The programming model

Page 89: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

The programming model

init();

while (1) {instance1();instance2();

}

Page 90: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

The programming model

Page 91: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

A LCHIP Project

Page 92: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Function model

Page 93: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: variables declaration

Page 94: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Modelling language: restrictions

Page 95: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: constants declaration

Page 96: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: types

Page 97: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: unsigned int operators

Page 98: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: unsigned int operators

Page 99: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: unsigned int operators

λ

Page 100: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: inputs/outputs

Page 101: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: inputs/outputs

Page 102: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: operations

Page 103: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: operations

Page 104: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: user_logic

Page 105: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Introduction to B: user_logic

Page 106: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Example #1: combinatorial hello world

Page 107: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Example #1: combinatorial

Page 108: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Example #1: combinatorial

Page 109: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Example #2: clock

Page 110: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Example #2: clock

Page 111: Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN Tab(index) := TRUE; counter := counter + 1 ELSE Tab(index) = FALSE END CONCRETE_VARIABLES

Example #2: clock