Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
CVC: A Cooperating Validity Checker
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
SATABS: SAT-Based predicate abstraction for ANSI-C
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Termination proofs for systems code
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
EXE: automatically generating inputs of death
Proceedings of the 13th ACM conference on Computer and communications security
Types, bytes, and separation logic
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Thorough static analysis of device drivers
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Verification of SpecC using predicate abstraction
Formal Methods in System Design
QAGen: generating query-aware test databases
Proceedings of the 2007 ACM SIGMOD international conference on Management of data
Formal verification at higher levels of abstraction
Proceedings of the 2007 IEEE/ACM international conference on Computer-aided design
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Decision Procedures for the Grand Challenge
Verified Software: Theories, Tools, Experiments
EXE: Automatically Generating Inputs of Death
ACM Transactions on Information and System Security (TISSEC)
A new testability guided abstraction to solving bit-vector formula
SMT '08/BPR '08 Proceedings of the Joint Workshops of the 6th International Workshop on Satisfiability Modulo Theories and 1st International Workshop on Bit-Precise Reasoning
ICFEM '09 Proceedings of the 11th International Conference on Formal Engineering Methods: Formal Methods and Software Engineering
Deciding bit-vector arithmetic with abstraction
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
C32SAT: checking C expressions
CAV'07 Proceedings of the 19th international conference on Computer aided verification
A framework for testing DBMS features
The VLDB Journal — The International Journal on Very Large Data Bases
Generating unit tests from formal proofs
TAP'07 Proceedings of the 1st international conference on Tests and proofs
Integrating verification and testing of object-oriented software
TAP'08 Proceedings of the 2nd international conference on Tests and proofs
Generating databases for query workloads
Proceedings of the VLDB Endowment
Qex: symbolic SQL query explorer
LPAR'10 Proceedings of the 16th international conference on Logic for programming, artificial intelligence, and reasoning
Accurate theorem proving for program verification
ISoLA'04 Proceedings of the First international conference on Leveraging Applications of Formal Methods
Using stålmarck’s algorithm to prove inequalities
ICFEM'05 Proceedings of the 7th international conference on Formal Methods and Software Engineering
Symbolic model checking for asynchronous boolean programs
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Approximating predicate images for bit-vector logic
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Counterexample-guided abstraction refinement for linear programs with arrays
Automated Software Engineering
Hi-index | 0.00 |
Many symbolic software verification engines such as Slam and ESC/Java rely on automatic theorem provers. The existing theorem provers, such as Simplify, lack precise support for important programming language constructs such as pointers, structures and unions. This paper describes a theorem prover, Cogent, that accurately supports all ANSI-C expressions. The prover's implementation is based on a machine-level interpretation of expressions into propositional logic, and supports finite machine-level variables, bit operations, structures, unions, references, pointers and pointer arithmetic. When used by Slam during the model checking of over 300 benchmarks, Cogent's improved accuracy reduced the number of Slam timeouts by half, increased the number of true errors found, and decreased the number of false errors.