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 7.<br />
PARALLEL EXECUTION OF DECISION PROCEDURES<br />
elim<strong>in</strong>ation based on Exact Shadow is very effective; it is able to elim<strong>in</strong>ate all<br />
quantifiers for consistency predicates from 3-sequence <strong>and</strong> 4-sequence automata. In<br />
the case of 5-sequence automaton, the procedure stops with three quantifiers left, we<br />
th<strong>in</strong>k that even this partial elim<strong>in</strong>ation could help to simplify <strong>Presburger</strong> formulas.<br />
Detailed source code of the Omega Test can be found <strong>in</strong> Appendix B.6 <strong>and</strong> B.7.<br />
Automaton Quantifiers before Quantifiers after<br />
3-seq 3 0<br />
4-seq 6 0<br />
5-seq 10 3<br />
Table 7.4. Results of the Omega Test.<br />
7.3 Summary<br />
We have discussed parallelism aspects of Cooper’s algorithm <strong>and</strong> the Omega Test.<br />
Each discussion follows with some experiments, reasonable speedups have been obta<strong>in</strong>ed.<br />
It is easy to come up with a correct implementation of these parallel algorithms;<br />
however, it is not free to achieve good efficiency. The method we use for<br />
implementation has some <strong>in</strong>terest<strong>in</strong>g po<strong>in</strong>ts:<br />
•Weemployatrial-<strong>and</strong>-errorprocess.Eachattemptisevaluatedbyprofil<strong>in</strong>g<br />
applications with some specific <strong>in</strong>puts.<br />
•Somelow-leveltoolsareused<strong>in</strong>clud<strong>in</strong>gCLR Profiler <strong>and</strong> ILSpy. Theformer<br />
provides more <strong>in</strong>formation regard<strong>in</strong>g memory <strong>and</strong> garbage collection <strong>and</strong><br />
the latter helps to translate F# to other .NET languages for underst<strong>and</strong><strong>in</strong>g<br />
low-level implementation <strong>and</strong> optimiz<strong>in</strong>g F# code.<br />
•Wefollowtheidiomoflittlememoryallocation<strong>and</strong>littlegarbagecollection;<br />
therefore, code is optimized so that their memory footpr<strong>in</strong>ts are small <strong>and</strong><br />
unnecessary garbage collection is avoided.<br />
F# has provided a very convenient environment for parallel programm<strong>in</strong>g. We<br />
can start prototyp<strong>in</strong>g algorithms without worry<strong>in</strong>g about sophisticated synchronization<br />
constructs <strong>and</strong> F# <strong>in</strong>terpreter has been a good <strong>in</strong>dicator for parallelism,<br />
so that we can decide when to start benchmark<strong>in</strong>g. However, it is still difficult<br />
to optimize algorithms for parallelism because memory footpr<strong>in</strong>ts of F# programs<br />
are quite large <strong>and</strong> garbage collection has a bad <strong>in</strong>fluence on performance <strong>in</strong> an<br />
unpredictable way.<br />
60