23 July 2017
Real Behavior of Floating Point Numbers
SMT 2017 | Bruno Marre, Bobot François, Zakaria Chihani
Real Behavior of Floating Point Numbers SMT 2017 | Bruno Marre, - - PowerPoint PPT Presentation
Real Behavior of Floating Point Numbers SMT 2017 | Bruno Marre, Bobot Franois, Zakaria Chihani 23 July 2017 COLIBRI (Bruno Marre) Started in 2000 for test case generation Used only as a library in PathCrawler and Gatel CP solver uses
SMT 2017 | Bruno Marre, Bobot François, Zakaria Chihani
CEA | 23 July 2017 | p. 2
CEA | 23 July 2017 | p. 2
CEA | 23 July 2017 | p. 3
Labelling Splitting
CEA | 23 July 2017 | p. 3
CEA | 23 July 2017 | p. 4
CEA | 23 July 2017 | p. 4
10
CEA | 23 July 2017 | p. 4
10
CEA | 23 July 2017 | p. 4
10
CEA | 23 July 2017 | p. 4
CEA | 23 July 2017 | p. 5
CEA | 23 July 2017 | p. 5
CEA | 23 July 2017 | p. 6
CEA | 23 July 2017 | p. 6
CEA | 23 July 2017 | p. 6
CEA | 23 July 2017 | p. 7
CEA | 23 July 2017 | p. 7
CEA | 23 July 2017 | p. 7
CEA | 23 July 2017 | p. 7
CEA | 23 July 2017 | p. 8
CEA | 23 July 2017 | p. 9
CEA | 23 July 2017 | p. 9
CEA | 23 July 2017 | p. 9
1 /∗@ requires 0 ≤ x ≤ 1000;
requires 0 ≤ y ≤ 1000;
3
ensures 0 ≤ \result ≤ 1; @∗/ double x_normalisation(double x,double y){
5
return x/sqrt(x∗x + y∗y);
7
}
CEA | 23 July 2017 | p. 10
CEA | 23 July 2017 | p. 11
CEA | 23 July 2017 | p. 11
CEA | 23 July 2017 | p. 11
/∗@ requires 0.0001 ≤ x ≤ 1000;
2
requires 0.0001 ≤ y ≤ 1000; ensures 0 ≤ \result ≤ 1; @∗/
4 double x_normalisation(double x,double y){ 6
return x/sqrt(x∗x + y∗y);
8 } CEA | 23 July 2017 | p. 12
procedure User_Rule_7 (X, Y, Z, A : Float;
2
Res : out Boolean) is
4
begin pragma Assume (Z ≥ 0.0);
6
pragma Assume (X ≥ Y); pragma Assume (Y ≥ Z);
8
pragma Assume (X > Z); pragma Assume (A ≥ 1.0);
10
Res := (X − Y) / (X − Z) ≤ A; pragma Assert (Res); −− valid
12
end User_Rule_7;
CEA | 23 July 2017 | p. 13
CEA | 23 July 2017 | p. 14
CEA | 23 July 2017 | p. 15
CEA | 23 July 2017 | p. 15
CEA | 23 July 2017 | p. 15
CEA | 23 July 2017 | p. 15
CEA | 23 July 2017 | p. 16
CEA | 23 July 2017 | p. 17
CEA | 23 July 2017 | p. 18
CEA | 23 July 2017 | p. 18
20 40 60 80 100 120 140 160 180 200 10 20 30 40 50 60
proved time(s)
COLIBRI no simplex no delta MathSAT ACDCL Z3
CEA | 23 July 2017 | p. 19
CEA | 23 July 2017 | p. 20
CEA | 23 July 2017 | p. 20
CEA | 23 July 2017 | p. 20
CEA | 23 July 2017 | p. 20
CEA | 23 July 2017 | p. 20
CEA | 23 July 2017 | p. 21
CEA | 23 July 2017 | p. 22
(CEA, UPSud)
CEA | 23 July 2017 | p. 23
/∗@ ensures \result ≤ (double) 1; @∗/
2 double test2(){
double x = read_sensor();
4
/∗@ assert (double) 0 ≤ x ≤ (double) 1000; @∗/ double y = read_sensor();
6
double z = read_sensor();
8
x = x ∗ x + z ∗ z + y ∗ y + 1;
10
if (z ≤ y){ return (x−y)/(x−z);
12
} else { return (x−z)/(x−y);
14
} }
CEA | 23 July 2017 | p. 24
shared Engine
CC
Bo
1
T
2
T ...
n
T
D L P
shared Engine
Bo
1
T
2
T ...
n
T
D P
CEA | 23 July 2017 | p. 25
Direction de la Recherche Technologique Département d’Ingénierie des Logiciels et des Systèmes Laboratoire de Sûreté des Logiciels Commissariat à l’énergie atomique et aux énergies alternatives Institut Carnot CEA LIST Centre de Saclay | 91191 Gif-sur-Yvette Cedex
Etablissement public à caractère industriel et commercial | RCS Paris B 775 685 019