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.
CHAPTER 1.<br />
INTRODUCTION<br />
functional paradigm <strong>in</strong> the context of parallel programm<strong>in</strong>g. Functional programm<strong>in</strong>g<br />
has its clear advantages of support<strong>in</strong>g parallel comput<strong>in</strong>g. First, functional<br />
programm<strong>in</strong>g relies on data immutability which guarantees code execution without<br />
side effects; therefore, different parts of algorithms could be parallelized without<br />
<strong>in</strong>troduc<strong>in</strong>g any synchronization construct. Second, the declarative way of programm<strong>in</strong>g<br />
enables developers to describe what problems are rather than how to<br />
solve them <strong>and</strong> consequently make them easier to break up <strong>and</strong> parallelize. Third,<br />
functional constructs such as high-order functions <strong>and</strong> lambda expressions provide<br />
convenient tools for clearly structur<strong>in</strong>g the code, which eases the pa<strong>in</strong> of prototyp<strong>in</strong>g<br />
parallel programs. F# is chosen as the functional programm<strong>in</strong>g language for<br />
development. Beside other advantages of a functional programm<strong>in</strong>g language, its<br />
well-supported .NET framework provides rich libraries for develop<strong>in</strong>g applications<br />
<strong>and</strong> efficient constructs for parallelism.<br />
Later we review the idiom of functional paradigm <strong>and</strong> parallel execution along<br />
with decision procedures for <strong>Presburger</strong> <strong>Arithmetic</strong> (PA). These algorithms are difficult<br />
case studies of tool support; <strong>Presburger</strong> formulas are known to be decidable<br />
but their decision procedures are doubly exponential lower bound <strong>and</strong> triply exponential<br />
upper bound [23]. However, <strong>in</strong>stances of PA keep appear<strong>in</strong>g <strong>in</strong> compiler<br />
optimization <strong>and</strong> model check<strong>in</strong>g problems, which raises the need for practically<br />
fast implementation of PA decision procedure. Some <strong>Presburger</strong> fragments are be<strong>in</strong>g<br />
used <strong>in</strong> connection with a model checker for Duration Calculus (DC) [10]. For<br />
example, power usage of nodes on a Wireless Sensor Network (WSN) is expressed<br />
<strong>in</strong> DC <strong>and</strong> later converted <strong>in</strong>to a <strong>Presburger</strong> fragment. To be able to deduce conclusions<br />
about power usage, the <strong>Presburger</strong> formula which may appear to have rather<br />
big size has to be decided. Therefore, we perform experiments with parallelism <strong>and</strong><br />
PA decision procedures us<strong>in</strong>g F# <strong>and</strong> .NET framework. Hopefully, these experiments<br />
can help us to get closer to the goal of efficient tool support for PA.<br />
1.2 <strong>Presburger</strong> <strong>Arithmetic</strong> <strong>and</strong> problems of parallel<br />
decision procedures<br />
Decision procedures for PA exist but they are quite expensive for practical usage<br />
[28]. There are various attempts to optimize those decision procedures <strong>in</strong> many<br />
aspects. However, those efforts only help to reduce memory usage <strong>and</strong> provide<br />
fast response for a certa<strong>in</strong> type of formulas; no attempt on employ<strong>in</strong>g extra CPU<br />
power for PA algorithms is found <strong>in</strong> the academia. Although lack of reference for<br />
related work on the problem br<strong>in</strong>gs us a new challenge, we enlarge the <strong>in</strong>vestigation<br />
to parallel execution of decision procedures <strong>in</strong> general; hopefully underst<strong>and</strong><strong>in</strong>g of<br />
their approaches might be helpful. As it turns out, parallelization of SAT solvers<br />
is a rather unexplored topic. Two ma<strong>in</strong> approaches are ma<strong>in</strong>ly used for parallel<br />
SAT solv<strong>in</strong>g. The first one is Search Space Splitt<strong>in</strong>g where search space is broken<br />
<strong>in</strong>to <strong>in</strong>dependent parts <strong>and</strong> subproblems are solved <strong>in</strong> parallel. Typically <strong>in</strong> this<br />
approach, if one thread completes its work early, it will be assigned other tasks by<br />
2