A computational logic handbook
A computational logic handbook
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Optimizing Supercompilers for Supercomputers
Optimizing Supercompilers for Supercomputers
Dynamic Logic
Software Analysis and Model Checking
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Customised Induction Rules for Proving Correctness of Imperative Programs
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
Rippling: meta-level guidance for mathematical reasoning
Rippling: meta-level guidance for mathematical reasoning
Termination proofs for systems code
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Time and Parallel Processor Bounds for Fortran-Like Loops
IEEE Transactions on Computers
Verification of object-oriented software: The KeY approach
Verification of object-oriented software: The KeY approach
Automating verification of loops by parallelization
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Sequential, parallel, and quantified updates of first-order structures
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
An improved rule for while loops in deductive program verification
ICFEM'05 Proceedings of the 7th international conference on Formal Methods and Software Engineering
Program verification using automatic generation of invariants
ICTAC'04 Proceedings of the First international conference on Theoretical Aspects of Computing
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Formalisation and verification of java card security properties in dynamic logic
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
Reasoning about java programs with aliasing and frame conditions
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Journal of Symbolic Computation
Hi-index | 0.00 |
Loops and other unbound control structures constitute a major bottleneck in formal software verification, because correctness proofs over such control structures generally require user interaction: typically, induction hypotheses or invariants must be found or modified by hand. Such interaction involves expert knowledge of the underlying calculus and proof engine. We show that one can replace interactive proof techniques, such as induction, with automated first-order reasoning in order to deal with parallelizable loops. A loop can be parallelized, whenever the execution of a generic iteration of its body depends only on the step parameter and not on other iterations. We use a symbolic dependence analysis that ensures parallelizability. This guarantees soundness of a proof rule that transforms a loop into a universally quantified update of the state change information effected by the loop body. This rule makes it possible to employ automatic first-order reasoning techniques to deal with loops. The method has been implemented in the KeY verification tool. We evaluated its applicability with representative case studies from the Java Card domain.