Formal Methods in System Design - Special issue on symmetry in automatic verification
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automated parallelization of discrete state-space generation
Journal of Parallel and Distributed Computing - Special issue on dynamic load balancing
Tool-supported program abstraction for finite-state verification
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem
Model Checking of Safety Properties
Formal Methods in System Design
Parallelizing the Murphi Verifier
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
ICSE '81 Proceedings of the 5th international conference on Software engineering
Foundations of the Bandera abstraction tools
The essence of computation
Model-carrying code: a practical approach for safe execution of untrusted applications
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Certified assembly programming with embedded code pointers
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Symmetry in temporal logic model checking
ACM Computing Surveys (CSUR)
CTL* model checking on a shared-memory architecture
Formal Methods in System Design
Using Software Model Checking for Software Component Certification
ICSE COMPANION '07 Companion to the proceedings of the 29th International Conference on Software Engineering
Shared Hash Tables in Parallel Model Checking
Electronic Notes in Theoretical Computer Science (ENTCS)
Incremental state-space exploration for programs with dynamically allocated data
Proceedings of the 30th international conference on Software engineering
Semantic foundations for typed assembly languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Small witnesses for abstract interpretation-based proofs
ESOP'07 Proceedings of the 16th European conference on Programming
Scalable multi-core LTL model-checking
Proceedings of the 14th international SPIN conference on Model checking software
Evaluating the effectiveness of slicing for model reduction of concurrent object-oriented programs
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Hi-index | 0.00 |
In this paper, we introduce a model-checking-based certification technique called search-carrying code (SCC). SCC is an adaptation of the principles of proof-carrying code, in which program certification is reduced to checking a provided safety proof. In SCC, program certification is an efficient re-examination of a program's state space. A code producer, who offers a program for use, provides a search script that encodes a search of the program's state space. A code consumer, who wants to certify that the program fits her needs, uses the search script to direct how a model checker searches the program's state space. Basic SCC achieves slight reductions in certification time, but it can be optimized in two important ways. (1) When a program comes from a trusted source, SCC certification can forgo authenticating the provided search script and instead optimize for speed of certification. (2) The search script can be partitioned into multiple partial certification tasks of roughly equal size, which can be performed in parallel. Using parallel model checking, we reduce the certification times by a factor of up to n, for n processors. When certifying a program from a trusted source, we reduce the certification times by a factor of up to 5n, for n processors.