Presburger Arithmetic and Its Use in Verification
Presburger Arithmetic and Its Use in Verification
Presburger Arithmetic and Its Use in Verification
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
7.1. A PARALLEL VERSION OF COOPER’S ALGORITHM<br />
Figure 7.1. Task graph of an elim<strong>in</strong>ation step <strong>in</strong> Cooper’s algorithm.<br />
elim<strong>in</strong>ation step, a big disjunct consists of 1 + |B| <strong>in</strong>ner formulas which are subject<br />
to parallel elim<strong>in</strong>ation. Aga<strong>in</strong> good concurrency requires a big number of terms.<br />
7.1.2 Design <strong>and</strong> Implementation<br />
The algorithm we use follows ideas of Cooper’s algorithm discussed <strong>in</strong> Section 4.2<br />
<strong>and</strong> there are some differences related to elim<strong>in</strong>at<strong>in</strong>g blocks of quantifiers <strong>and</strong> us<strong>in</strong>g<br />
heterogeneous coefficients as discussed <strong>in</strong> Section 6.3. Here we focus on data<br />
representation which will be shown to have a big <strong>in</strong>fluence on performance later on.<br />
The type Term is employed to represent a l<strong>in</strong>ear term c + Σ i a i x i :<br />
•Itconsistsofaconstantc <strong>and</strong> a collection of variables x i <strong>and</strong> correspond<strong>in</strong>g<br />
coefficients a i .<br />
•Variablescannotbeduplicated,<strong>and</strong>eachvariablehasexactlyonecoefficient.<br />
•<strong>Arithmetic</strong>operationssuchasaddition,subtractionbetweenTerms, unary<br />
m<strong>in</strong>us of Terms;multiplication<strong>and</strong>divisionbyaconstantarealsosupported.<br />
AnaturalrepresentationofTerm <strong>in</strong> F# is the follow<strong>in</strong>g type:<br />
type Term = struct<br />
val Vars: Map<br />
val Const: <strong>in</strong>t<br />
end<br />
51