摘要:
The claimed subject matter provides a method for performing a static analysis of concurrent programs. The method includes determining that a static analysis of the first concurrent program generates a warning for an input. The method also includes determining whether a static analysis of the second concurrent program generates the warning for the input. The method further includes removing the warning if the static analysis of the second concurrent program generates the warning.
摘要:
Predicate abstraction techniques and tools. Using symbolic decision procedures, predicate abstractions for computer programs are generated based on a set of predicates representing observations of expected behavior of the program. The set of predicates may be generated by an automatic program analysis tool or may be provided a user based on the user's observations. The predicate abstraction process may employ binary decision diagrams. Two or more symbolic decision procedures (e.g., for different kinds of program logic) can be combined to form a combined symbolic decision procedure to be used for predicate abstraction. A data structure can be used to track derived predicates during predicate abstraction.
摘要:
A computer implemented method for solving linear arithmetic constraints that combines a solver for difference constraints with a general linear arithmetic constraint solver. When used to solve sparse linear arithmetic constraints, the time and space complexity of the process is determined by the difference constraint component.
摘要:
This document describes a unified type checker and property checker for a low level program's heap and its types. The type checker can use the full power of the property checker to express and verify subtle, program specific type and memory safety invariants well beyond what the native low level program system can check. Meanwhile, the property checker can rely on the type checker to provide structure and disambiguation for the program's heap, enabling more concise and more powerful type-based specifications. This approach makes use of a fully automated Satisfiability Modulo Theories (SMT) solver and a decision procedure for checking type safety, which means that the programmer's only duty is to provide high-level type and property annotations as part of the original program's source.
摘要:
A computer implemented method for solving linear arithmetic constraints that combines a solver for difference constraints with a general linear arithmetic constraint solver. When used to solve sparse linear arithmetic constraints, the time and space complexity of the process is determined by the difference constraint component.
摘要:
The claimed subject matter provides a method for performing a static analysis of concurrent programs. The method includes determining that a static analysis of the first concurrent program generates a warning for an input. The method also includes determining whether a static analysis of the second concurrent program generates the warning for the input. The method further includes removing the warning if the static analysis of the second concurrent program generates the warning.
摘要:
To overcome the difficulties inherent in traditional compiler validating methods, a new technique is herein provided for validating compiler output via program verification. In one embodiment, this technique is implemented as an automated tool that merges both a source program and the compiler-generated target program into a single (intermediate) program. An automated program verifier is then applied to the merged program. Subsequently, the program verifier compares the source and target programs and determines if the programs are semantically equivalent.
摘要:
A library or application is selected comprising one or more functions or methods. An interesting subset of the functions or methods is created. A plurality of multi-threaded test cases are generated from the subset of interesting functions or methods, with each test case comprising a unique pair or triple of functions or methods from the subset. The resulting set of test cases may then be filtered of thread safe test cases using static analysis techniques. The filtered set of test cases is then used as an input to a specialized application that executes each of the multi-threaded test cases to detect atomicity violations and race conditions. The results of the execution of each of the test cases by the specialized application are then aggregated and presented to a user or administrator in a report, for example.
摘要:
To overcome the difficulties inherent in traditional compiler validating methods, a new technique is herein provided for validating compiler output via program verification. In one embodiment, this technique is implemented as an automated tool that merges both a source program and the compiler-generated target program into a single (intermediate) program. An automated program verifier is then applied to the merged program. Subsequently, the program verifier compares the source and target programs and determines if the programs are semantically equivalent.
摘要:
This document describes a unified type checker and property checker for a low level program's heap and its types. The type checker can use the full power of the property checker to express and verify subtle, program specific type and memory safety invariants well beyond what the native low level program system can check. Meanwhile, the property checker can rely on the type checker to provide structure and disambiguation for the program's heap, enabling more concise and more powerful type-based specifications. This approach makes use of a fully automated Satisfiability Modulo Theories (SMT) solver and a decision procedure for checking type safety, which means that the programmer's only duty is to provide high-level type and property annotations as part of the original program's source.