An Accurate Join for Zonotopes, Preserving Affine Input/Output - - PowerPoint PPT Presentation

an accurate join for zonotopes preserving affine input
SMART_READER_LITE
LIVE PREVIEW

An Accurate Join for Zonotopes, Preserving Affine Input/Output - - PowerPoint PPT Presentation

An Accurate Join for Zonotopes, Preserving Affine Input/Output Relations Eric Goubault, Tristan Le Gall and Sylvie Putot CEA, LIST - LMeASI NSAD12 Motivation Static Analysis of Numerical Programs Goal : to find numerical invariants, to


slide-1
SLIDE 1

An Accurate Join for Zonotopes, Preserving Affine Input/Output Relations

Eric Goubault, Tristan Le Gall and Sylvie Putot

CEA, LIST - LMeASI NSAD’12

slide-2
SLIDE 2

Motivation

Static Analysis of Numerical Programs

◮ Goal : to find numerical invariants, to give an upper bound for numerical

errors

◮ Problems :

◮ infinite domains ⇒ symbolic representation ◮ precision, difference between real numbers arithmetics and floating-point

arithmetics

◮ infinite loops, numerical drift (e.g. Patriot missile)

Numerical Abstract Domains

◮ Classical ones : Intervals, convex polyhedra ◮ Recent ones : Octagons, linear templates ◮ In Fluctuat : Affine sets (zonotopes)

2 / 19

slide-3
SLIDE 3

Motivation

Static Analysis of Numerical Programs

◮ Goal : to find numerical invariants, to give an upper bound for numerical

errors

◮ Problems :

◮ infinite domains ⇒ symbolic representation ◮ precision, difference between real numbers arithmetics and floating-point

arithmetics

◮ infinite loops, numerical drift (e.g. Patriot missile)

Numerical Abstract Domains

◮ Classical ones : Intervals, convex polyhedra ◮ Recent ones : Octagons, linear templates ◮ In Fluctuat : Affine sets (zonotopes)

We present a new, accurate join operator for zonotopes

2 / 19

slide-4
SLIDE 4

Outline

Presentation of the abstract domain A new join operator Experiments

3 / 19

slide-5
SLIDE 5

Zonotopes (1) : Symbolic Representation and Concretization

Symbolic representation

◮ Each variable = linear sum of noise symbols : ˆ

x = 20 − 4ε1 + 2ε3 + 3ε4

◮ Noise symbols are shared variables, whose range is [−1, 1] ◮ Alternative definition : Minkowski sum of vectors defined by the

coefficients of the noise symbols

An affine set and its concretization

x y 10 15 20 25 30 5 10 15 The gray zonotope is the concretization of the affine set (ˆ x, ˆ y), with ˆ x = 20 − 4ε1 + 2ε3 + 3ε4, ˆ y = 10 − 2ε1 + ε2 − ε4, and

tA

= 20 −4 2 3 10 −2 1 −1

  • 4 / 19
slide-6
SLIDE 6

Zonotopes (2) : Partial order

Functional Order, Augmented Space

◮ Partial order on affine sets is a functional order

Example

ˆ x = 2 + ǫ and ˆ x = 2 − ǫ (concretization : [1, 3]) x ǫ

5 / 19

slide-7
SLIDE 7

Zonotopes (2) : Partial order

Functional Order, Augmented Space

◮ Partial order on affine sets is a functional order ◮ Functional order = geometrical order of the concretization in Rp

Example

ˆ x = 2 + ǫ and ˆ x = 2 − ǫ (concretization : [1, 3]) x ǫ

5 / 19

slide-8
SLIDE 8

Zonotopes (2) : Partial order

Functional Order, Augmented Space

◮ Partial order on affine sets is a functional order ◮ Functional order = geometrical order of the concretization in Rp ◮ Functional order = geometrical order in augmentend space Rp+n

Example

ˆ x = 2 + ǫ and ˆ x = 2 − ǫ (concretization : [1, 3]) x ǫ

5 / 19

slide-9
SLIDE 9

Zonotopes (3) : Semantics of + and ×

Consider two affines sets ˆ x = 2 + 3ǫ1 − 2ǫ2 and ˆ y = 3 + 2ǫ2

Addition x + y

◮ Exact operation

  • x + y = 5 + 3ǫ1

Multiplication x × y

◮ Exact operation

  • x × y = 6 + 9ǫ1 + (4 − 6)ǫ2 + 6ǫ1ǫ2 − 4ǫ2

2

6 / 19

slide-10
SLIDE 10

Zonotopes (3) : Semantics of + and ×

Consider two affines sets ˆ x = 2 + 3ǫ1 − 2ǫ2 and ˆ y = 3 + 2ǫ2

Addition x + y

◮ Exact operation

  • x + y = 5 + 3ǫ1

Multiplication x × y

◮ Exact operation

  • x × y = 6 + 9ǫ1 + (4 − 6)ǫ2 + 6ǫ1ǫ2 − 4ǫ2

2 ◮ Second-order terms range in [−10, 2.25] = −3.875 + 6.125η1

  • x × y = 2.125 + 9ǫ1 − 2ǫ2 + 6.125η1

6 / 19

slide-11
SLIDE 11

Zonotopes (4) : Advantages and Drawbacks

Advantages

◮ Relational lattice, cheap linear assignments ◮ Non-linear assignments (Taylor, 1st order)

Drawbacks

◮ Meet ◮ Join

7 / 19

slide-12
SLIDE 12

Zonotopes (4) : Advantages and Drawbacks

Advantages

◮ Relational lattice, cheap linear assignments ◮ Non-linear assignments (Taylor, 1st order)

Drawbacks / improvements

◮ Meet : constrained affine sets ◮ Join

7 / 19

slide-13
SLIDE 13

Zonotopes (4) : Advantages and Drawbacks

Advantages

◮ Relational lattice, cheap linear assignments ◮ Non-linear assignments (Taylor, 1st order)

Drawbacks / improvements

◮ Meet : constrained affine sets ◮ Join : global join

7 / 19

slide-14
SLIDE 14

Example (1)

Example of join

double x1 := [1,3] ; double x2 := [1,3] ; double x3 ; if (random()) { x1 = x1 + 2 ; x2 = x2 + 2 ; } x3 = x2 - x1 ; Affine sets : ˆ x1 = 2 + ǫ1 ˆ x2 = 2 + ǫ2 ˆ x3 = ⊤ and ˆ x1 = 4 + ǫ1 ˆ x2 = 4 + ǫ2 ˆ x3 = ⊤

8 / 19

slide-15
SLIDE 15

Example (2)

x1 x2 1 3 5 1 3 5

9 / 19

slide-16
SLIDE 16

Example (2)

x1 x2 1 3 5 1 3 5

◮ Componentwise join (one dimension at a time)

ˆ x1 = 3 + ǫ1 + η1 ˆ x2 = 3 + ǫ2 + η2 ˆ x3 = ⊤

9 / 19

slide-17
SLIDE 17

Example (2)

x1 x2 1 3 5 1 3 5

◮ Componentwise join (one dimension at a time) ◮ Common affine relation : x1 − x2 = ǫ1 − ǫ2

9 / 19

slide-18
SLIDE 18

Example (2)

x1 x2 1 3 5 1 3 5

◮ Componentwise join (one dimension at a time) ◮ Common affine relation : x1 − x2 = ǫ1 − ǫ2 ◮ Global join

9 / 19

slide-19
SLIDE 19

Main idea

Goal : to preserve affine relations

◮ Two affine sets X and Y , p variables x1 . . . xp, n + 1 noise symbols

ε0, . . . , εn

◮ An affine relation : α1x1 + · · · + αpxp = β0ε0 + β1ε1 + · · · + βnεn ◮ Our goal : to find an upper bound Z that preserves common affine

relations

10 / 19

slide-20
SLIDE 20

Main idea

Goal : to preserve affine relations

◮ Two affine sets X and Y , p variables x1 . . . xp, n + 1 noise symbols

ε0, . . . , εn

◮ An affine relation : α1x1 + · · · + αpxp = β0ε0 + β1ε1 + · · · + βnεn ◮ Our goal : to find an upper bound Z that preserves common affine

relations

Issues

  • 1. How to discover common affine relations ?
  • 2. How to reduce the size of the problem ?
  • 3. How to rebuild the affine sets with the help of the affine relations ?

10 / 19

slide-21
SLIDE 21

Geometrical intuition

Augmented space

◮ Program variables + noise symbols : vector space, dimension p + n + 1 ◮ Functional order = geometrical order ◮ A relation defines an hyperplane containing the zonotope.

11 / 19

slide-22
SLIDE 22

Geometrical intuition

Augmented space

◮ Program variables + noise symbols : vector space, dimension p + n + 1 ◮ Functional order = geometrical order ◮ A relation defines an hyperplane containing the zonotope.

General algorithm

Assume we have k relations, defining the variables x1, . . . , xk, we compute X ⊔G Y :

  • 1. Existential quantification : X>k and Y>k (elimination of x1, . . . , xk)
  • 2. Componentwise join Z>k = X>k ⊔ Y>k
  • 3. Reconstruction (intersection with hyperplanes)

Any relation true for both X and Y is also true for Z.

11 / 19

slide-23
SLIDE 23

Discovery of common affine relations

Algorithm to find affine relations

  • 1. The value of each variable is replaced by its expression (linear sum of noise

symbol)

  • 2. The coefficients of noise symbols must be equal in both affine sets X and

Y

  • 3. One equation per noise symbol, then we solve them by a Gauss reduction

to obtain the coefficients αi , then the coefficients βi

  • 4. Solutions belong to a vector space (finite dimension)

Example

Affine sets X and Y : x1 = 2 + ǫ1 x2 = 2 + ǫ2 x3 = ⊤ and x1 = 4 + ǫ1 x2 = 4 + ǫ2 x3 = ⊤ We are looking for a relation : α1x1 + α2x2 = β0 + β1ǫ1 + β2ǫ2

12 / 19

slide-24
SLIDE 24

Discovery of common affine relations (2)

Affine sets X and Y : x1 = 2 + ǫ1 x2 = 2 + ǫ2 x3 = ⊤ and x1 = 4 + ǫ1 x2 = 4 + ǫ2 x3 = ⊤

Example (cont.)

  • 1. We replace x1 and x2 by their expressions :

α1(2 + ǫ1) + α2(2 + ǫ2) = β0 + β1ǫ1 + β2ǫ2 and : α1(4 + ǫ1) + α2(4 + ǫ2) = β0 + β1ǫ1 + β2ǫ2

13 / 19

slide-25
SLIDE 25

Discovery of common affine relations (2)

Affine sets X and Y : x1 = 2 + ǫ1 x2 = 2 + ǫ2 x3 = ⊤ and x1 = 4 + ǫ1 x2 = 4 + ǫ2 x3 = ⊤

Example (cont.)

  • 1. We replace x1 and x2 by their expressions :

α1(2 + ǫ1) + α2(2 + ǫ2) = β0 + β1ǫ1 + β2ǫ2 and : α1(4 + ǫ1) + α2(4 + ǫ2) = β0 + β1ǫ1 + β2ǫ2

  • 2. The coefficients of the noise symbols must be equal ; we get the

equations : 2α1 + 2α2 = 4α1 + 4α2, and β0 = 0, β1 = α1, β2 = α2

13 / 19

slide-26
SLIDE 26

Discovery of common affine relations (2)

Affine sets X and Y : x1 = 2 + ǫ1 x2 = 2 + ǫ2 x3 = ⊤ and x1 = 4 + ǫ1 x2 = 4 + ǫ2 x3 = ⊤

Example (cont.)

  • 1. We replace x1 and x2 by their expressions :

α1(2 + ǫ1) + α2(2 + ǫ2) = β0 + β1ǫ1 + β2ǫ2 and : α1(4 + ǫ1) + α2(4 + ǫ2) = β0 + β1ǫ1 + β2ǫ2

  • 2. The coefficients of the noise symbols must be equal ; we get the

equations : 2α1 + 2α2 = 4α1 + 4α2, and β0 = 0, β1 = α1, β2 = α2

  • 3. Example of solution : α1 = 1, α2 = −1, β0 = 0, β1 = 1, β2 = −1

13 / 19

slide-27
SLIDE 27

Discovery of common affine relations (2)

Affine sets X and Y : x1 = 2 + ǫ1 x2 = 2 + ǫ2 x3 = ⊤ and x1 = 4 + ǫ1 x2 = 4 + ǫ2 x3 = ⊤

Example (cont.)

  • 1. We replace x1 and x2 by their expressions :

α1(2 + ǫ1) + α2(2 + ǫ2) = β0 + β1ǫ1 + β2ǫ2 and : α1(4 + ǫ1) + α2(4 + ǫ2) = β0 + β1ǫ1 + β2ǫ2

  • 2. The coefficients of the noise symbols must be equal ; we get the

equations : 2α1 + 2α2 = 4α1 + 4α2, and β0 = 0, β1 = α1, β2 = α2

  • 3. Example of solution : α1 = 1, α2 = −1, β0 = 0, β1 = 1, β2 = −1
  • 4. Relation : x1 = x2 + ε1 − ε2

13 / 19

slide-28
SLIDE 28

Other steps of the algorithm

Algorithm

Assume we have k relations, defining the variables x1, . . . , xk. We compute X ⊔G Y

  • 1. Existential quantification : X>k and Y>k ( elimination of x1, . . . , xk)
  • 2. Componentwise join Z>k = X>k ⊔ Y>k
  • 3. Reconstruction

Example

Relation x1 = x2 + ǫ1 − ǫ2. X =    ˆ x1 = 2 + ǫ1 ˆ x2 = 2 + ǫ2 ˆ x3 = ⊤ Y =    ˆ x1 = 4 + ǫ1 ˆ x2 = 4 + ǫ2 ˆ x3 = ⊤

14 / 19

slide-29
SLIDE 29

Other steps of the algorithm

Algorithm

Assume we have k relations, defining the variables x1, . . . , xk. We compute X ⊔G Y

  • 1. Existential quantification : X>k and Y>k ( elimination of x1, . . . , xk)
  • 2. Componentwise join Z>k = X>k ⊔ Y>k
  • 3. Reconstruction

Example

Relation x1 = x2 + ǫ1 − ǫ2. X>k =    ˆ x1 = ⊤ ˆ x2 = 2 + ǫ2 ˆ x3 = ⊤ Y>k =    ˆ x1 = ⊤ ˆ x2 = 4 + ǫ2 ˆ x3 = ⊤

14 / 19

slide-30
SLIDE 30

Other steps of the algorithm

Algorithm

Assume we have k relations, defining the variables x1, . . . , xk. We compute X ⊔G Y

  • 1. Existential quantification : X>k and Y>k ( elimination of x1, . . . , xk)
  • 2. Componentwise join Z>k = X>k ⊔ Y>k
  • 3. Reconstruction

Example

Relation x1 = x2 + ǫ1 − ǫ2. X>k =    ˆ x1 = ⊤ ˆ x2 = 2 + ǫ2 ˆ x3 = ⊤ Y>k =    ˆ x1 = ⊤ ˆ x2 = 4 + ǫ2 ˆ x3 = ⊤ Z>k =    ˆ x1 = ⊤ ˆ x2 = 3 + ǫ2 + η ˆ x3 = ⊤

14 / 19

slide-31
SLIDE 31

Other steps of the algorithm

Algorithm

Assume we have k relations, defining the variables x1, . . . , xk. We compute X ⊔G Y

  • 1. Existential quantification : X>k and Y>k ( elimination of x1, . . . , xk)
  • 2. Componentwise join Z>k = X>k ⊔ Y>k
  • 3. Reconstruction

Example

Relation x1 = x2 + ǫ1 − ǫ2. X =    ˆ x1 = 2 + ǫ1 ˆ x2 = 2 + ǫ2 ˆ x3 = ⊤ Y =    ˆ x1 = 4 + ǫ1 ˆ x2 = 4 + ǫ2 ˆ x3 = ⊤ Z =    ˆ x1 = 3 + ǫ1 + η ˆ x2 = 3 + ǫ2 + η ˆ x3 = ⊤

14 / 19

slide-32
SLIDE 32

Properties

Theorem

Z = X ⊔G Y is an upper bound of X and Y , and if Z>k is a minimal upper bound of X>k and Y>k, then Z is a minimal upper bound of X and Y .

15 / 19

slide-33
SLIDE 33

Properties

Theorem

Z = X ⊔G Y is an upper bound of X and Y , and if Z>k is a minimal upper bound of X>k and Y>k, then Z is a minimal upper bound of X and Y .

Remarks

◮ Any relation true for X and Y is also true for Z ◮ The componentwise join Z>k = X>k ⊔ Y>k is a minimal upper bound if

k = p − 1

◮ We can do the same for the widening

15 / 19

slide-34
SLIDE 34

Experiments (1) : Loop counter

Program 1

double x=[0,4] ; int i=0 ; while i ≤ 5 { i++ ; x++ ;}

◮ Issue : (lack of) explicit relation between x and i

16 / 19

slide-35
SLIDE 35

Experiments (1) : Loop counter

Program 1

double x=[0,4] ; int i=0 ; while i ≤ 5 { i++ ; x++ ;}

◮ Issue : (lack of) explicit relation between x and i ◮ Componentwise join : no convergence (without widening)

16 / 19

slide-36
SLIDE 36

Experiments (1) : Loop counter

Program 1

double x=[0,4] ; int i=0 ; while i ≤ 5 { i++ ; x++ ;}

◮ Issue : (lack of) explicit relation between x and i ◮ Componentwise join : no convergence (without widening) ◮ Global join : loop invariant x − i = 2 + 2ǫ1 (thus x ∈ [0, 10])

16 / 19

slide-37
SLIDE 37

Experiments (2) : Linear recurrence

Program 2

double x=12 ; double x1=12 ; double y=16 ; double y1=16 ; while (true) { x=x1 ; y=y1 ; x1=3*x/4 + y/4 ; y1=x/4 + 3* y/4 ;}

17 / 19

slide-38
SLIDE 38

Experiments (2) : Linear recurrence

Program 2

double x=12 ; double x1=12 ; double y=16 ; double y1=16 ; while (true) { x=x1 ; y=y1 ; x1=3*x/4 + y/4 ; y1=x/4 + 3* y/4 ;} componentwise join

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12 13 14 15 16 x y iterations

17 / 19

slide-39
SLIDE 39

Experiments (2) : Linear recurrence

Program 2

double x=12 ; double x1=12 ; double y=16 ; double y1=16 ; while (true) { x=x1 ; y=y1 ; x1=3*x/4 + y/4 ; y1=x/4 + 3* y/4 ;} componentwise join global join

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12 13 14 15 16 x y iterations 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12 13 14 15 16 x y iterations

17 / 19

slide-40
SLIDE 40

Experiments (3) : Benchmarks

Program 3

double f(double x) { return 2*x-3 ; } double g(double x) { return -x+5 ; } int main() { y = f(0) ; z = g(0) ; u = f(.75) ; v = g(.25) ; for (i=1 ; i¡=N ; i++) { x=[0,((double)i)/N] ; y=f(x) ; z=g(x) ; u=f(v) ; v=g(u)/2 ; } t=y+2*z ; return 0 ; } Increasing N increases the number of operations, but does not change the result.

18 / 19

slide-41
SLIDE 41

Experiments (3) : Benchmarks

10000 20000 30000 40000 50000 60000 20 40 60 80 100 120 140 160 180 Octagons Polyhedra Taylor1+ Taylor1+gj Box

Value of parameter N Time(s)

Exact result : only polyhedra and zonotopes with global join

18 / 19

slide-42
SLIDE 42

Conclusion

Summary

◮ A nice improvement of the join operator for zonotopes ◮ Implementation (APRON)

Ongoing work

◮ Implementation (Fluctuat) ◮ Imprecise relations ◮ Policy Iteration

19 / 19