Développement des systèmes informatiques


LD-relations


États sûrs

LD-Relations ("limited domain relations")

domaine et image de LD-relation

Exemple 1

Programme P :

int i,j;
...
while (i!=0) i=j;
LD-relation :
LP = (RP, CP)
CP = {(i,j) | i=0 ∨ j=0}
RP = {(('i,'j),(i',j')) | i' = 0 ∧ j' = 'j}

Exemple 2

Programme P :

int i;
...
while (i<0) i++;
LD-relation :
LP = (RP, CP)
CP = { i | true }         // l'univers
RP = {('i,i') | 'i ≤ 0 ∧ i' = 0 ∨ 'i > 0 ∧ i' = 'i}

Exemple 3

Programme P :

int i,j;
...
if (i<0) {
  Random rand = new Random();
  j = rand.nextInt();
  if (j == 13)
    while (true) i = 100;
  else
    j = 12;
} else
  j = 50;

LD-relation :

LP = (RP, CP)
CP = {(i,j) | i ≥ 0}
RP = {(('i,'j),(i',j')) | 'i ≥ 0  i' = 'i  j' = 50}

Exemple 4

LD-relation :

LP = (RP, CP)
CP = {x | true}
RP = {('x,x') | x' ≥ 0 }

Programme P :

int i;
...
i = 1023;

Exercice

Pour chacun des programmes ci-dessous écrivez :

Vous pouvez présumer qu’il n’y a pas de restriction sur l’ensemble des entiers qui peuvent être représentés (même si cette supposition n’est pas réaliste). Vous pouvez présumer que l’état est défini entièrement par les valeurs des variables x et y.

(1) while (true) x = y

Domaine:

Image:

(2) while (x < 20) x = y

Domaine:

Image:

(3) while (x < 20) x++

Domaine:

Image:

(4) while (x < 20) x--

Domaine:

Image:

(5) while (x != 20) x = x + 2

Domaine:

Image:

Composition de fonctions de programme

Exercice

Soit int x,y,z;

La fonction de programme du programme A est la suivante :

x' ='x + 1 y' = 'y z' = 'z

et la fonction de programme du programme B est comme suit :

'x = 0'x < 0'x > 0
x' =27'x + 1'x - 1
y' =27'y + 1'y - 1
z' =27'x - 1'x + 1

Trouvez la fonction de programme des programmes suivants :

  1. A;B


  2. B;A