29.04.2014 Views

Presburger Arithmetic and Its Use in Verification

Presburger Arithmetic and Its Use in Verification

Presburger Arithmetic and Its Use in Verification

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!