Results 1 
5 of
5
Automating verification of loops by parallelization
 Proc. Intl. Conf. on Logic for Programming Artificial Intelligence and Reasoning, Phnom Penh, Cambodia, volume 4246 of LNCS
, 2006
"... Abstract. Loops are a major bottleneck in formal software verification, because they generally require user interaction: typically, induction hypotheses or invariants must be found or modified by hand. This involves expert knowledge of the underlying calculus and proof engine. We show that one can r ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Abstract. Loops are a major bottleneck in formal software verification, because they generally require user interaction: typically, induction hypotheses or invariants must be found or modified by hand. This involves expert knowledge of the underlying calculus and proof engine. We show that one can replace interactive proof techniques, such as induction, with automated firstorder reasoning in order to deal with parallelizable loops, where a loop can be parallelized whenever it avoids dependence of the loop iterations from each other. We develop a dependence analysis that ensures parallelizability. It guarantees soundness of a proof rule that transforms a loop into a universally quantified update of the state change information represented by the loop body. This makes it possible to use automatic first order reasoning techniques to deal with loops. The method has been implemented in the KeY verification tool. We evaluated it with representative case studies from the JAVA CARD domain. 1
Static analysis and deductive verification of programs. Licentiate thesis
, 2006
"... This thesis is concerned with analysis of programs. Analysis of programs can be divided into two camps: static analysis and formal verification. Static program analyses compute a result and terminate for all programs. Since virtually all interesting semantic properties are undecidable, a static prog ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
This thesis is concerned with analysis of programs. Analysis of programs can be divided into two camps: static analysis and formal verification. Static program analyses compute a result and terminate for all programs. Since virtually all interesting semantic properties are undecidable, a static program analysis needs to be approximative to ensure termination. When designing such an analysis it can be hard to know which features that have the largest impact on the precision and should be added. This is the subject of the first paper in this thesis in which we investigate the impact a number of features have on the precision of usage analysis. Formal verification often refers to deductive verification based on logic and theorem proving. When verifying a property, the program and the property are both translated into logical formulas and a theorem prover is used to show that the property holds for the program. Formal verification is a much more precise and general purpose technique than static analysis. This does, however,
Symbolic Fault Injection
"... Abstract. Fault tolerance mechanisms are a key ingredient of dependable systems. In particular, softwareimplemented hardware fault tolerance (SIHFT) is gaining in popularity, because of its cost efficiency and flexibility. Fault tolerance mechanisms are often validated using fault injection, compri ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract. Fault tolerance mechanisms are a key ingredient of dependable systems. In particular, softwareimplemented hardware fault tolerance (SIHFT) is gaining in popularity, because of its cost efficiency and flexibility. Fault tolerance mechanisms are often validated using fault injection, comprising a variety of techniques for introducing faults into a system. Traditional fault injection techniques, however, lack coverage guarantees and may fail to activate enough injected faults. In this paper we present a new approach called symbolic fault injection which is targeted at validation of SIHFT mechanisms and is based on the concept of symbolic execution of programs. It can be seen as the extension of a formal technique for formal program verification that makes it possible to evaluate the consequences of all possible faults (of a certain kind) in given memory locations for all possible system inputs. This makes it possible to formally prove properties of fault tolerance mechanisms. 1
Soundness of a LogicBased Verification Method for Imperative Loops
"... Abstract—We present a logicbased verification method for imperative loops (including ones with abrupt termination) and the automatic proof of its soundness. The verification method consists in generating verification conditions for total correctness of an imperative loop annotated with an invariant ..."
Abstract
 Add to MetaCart
Abstract—We present a logicbased verification method for imperative loops (including ones with abrupt termination) and the automatic proof of its soundness. The verification method consists in generating verification conditions for total correctness of an imperative loop annotated with an invariant. We realized, in the Theorema system (www.theorema.org), the automatic proof of the soundness of verification method: if the verification conditions hold, then the imperative loop is totally correct with respect to its given invariant. The approach is simpler than the others because it is based on functional semantics (no additional theory of program execution is necessary) and produces verification conditions in the object theory of the program. The computersupported proofs reveal the minimal collection of logical assumptions (some from natural number theory) and logical inferences (including induction) which are necessary for the soundness of the verification technique. Index Terms—program analysis and verification, symbolic execution, semantics, induction, termination, Theorema system I.
Generalisation of Induction Formulae based on Proving by Symbolic Execution
"... Induction is a powerful method that can be used to prove the total correctness of program loops. Unfortunately the induction proving process in an interactive theorem prover is often very cumbersome. In particular it can be difficult to find the right induction formula. We describe a method for gene ..."
Abstract
 Add to MetaCart
Induction is a powerful method that can be used to prove the total correctness of program loops. Unfortunately the induction proving process in an interactive theorem prover is often very cumbersome. In particular it can be difficult to find the right induction formula. We describe a method for generalising induction formulae by analysing a symbolic proof attempt in a semiinteractive firstorder theorem prover. Based on the proof attempt we introduce universally quantified variables, metavariables and sets of constraints on these. The constraints describe the conditions for a successful proof. By the help of examples, we outline some classes of problems and their associated constraint solutions, and possible ways to automate the constraint solving. 1