2005 International Conference on Computer Design
DOI: 10.1109/iccd.2005.77
|View full text |Cite
|
Sign up to set email alerts
|

Model checking C programs using F-Soft

Abstract: Abstract-With the success of formal verification techniques like equivalence checking and model checking for hardware designs, there has been growing interest in applying such techniques for formal analysis and automatic verification of software programs. This paper provides a brief tutorial on model checking of C programs. The essential approach is to model the semantics of C programs in the form of finite state systems by using suitable abstractions. The use of abstractions is key, both for modeling programs… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
64
0

Publication Types

Select...
7

Relationship

0
7

Authors

Journals

citations
Cited by 55 publications
(66 citation statements)
references
References 55 publications
0
64
0
Order By: Relevance
“…Besides the basic types, we also allow assert(C) for checking assertions, exit for signaling the termination of a thread, and the synchronization primitives. fork(t) and join(t) allow a thread to dispatch and wait for the completion of another Thread t. Given a program written in a full-fledged programming languages like C, one can use pre-processing [21] to simplify its executed traces into the basic statements described above.…”
Section: Algorithm Overviewmentioning
confidence: 99%
“…Besides the basic types, we also allow assert(C) for checking assertions, exit for signaling the termination of a thread, and the synchronization primitives. fork(t) and join(t) allow a thread to dispatch and wait for the completion of another Thread t. Given a program written in a full-fledged programming languages like C, one can use pre-processing [21] to simplify its executed traces into the basic statements described above.…”
Section: Algorithm Overviewmentioning
confidence: 99%
“…In this section we briefly describe how, using the F-Soft machinery, we first obtain a circuit-based model of each thread, under the assumption of bounded data and bounded control (recursion) (see [ISGG05] for more details). We begin with full-fledged C and apply a series of source-to-source transformations to simplify complex C expressions into smaller but equivalent subsets of C .…”
Section: Translating Individual Threads Into Circuitsmentioning
confidence: 99%
“…Building upon the F-Soft framework [ISGG05] for translating sequential programs with bounded data and bounded recursion into circuits, we first obtain a finite model for each individual thread wherein each variable of the thread is represented in terms of a vector of binary-valued latches and a boolean next-state function (or relation) for each latch. Then using a scheduler, we compose the circuits for the individual threads into one single circuit for the entire concurrent program.…”
Section: Introductionmentioning
confidence: 99%
“…We have implemented the SLR technique inside the F-Soft C program verifier [14] to check array, pointer, and C string usage. The analyzer is context sensitive, by using call strings to track contexts.…”
Section: Methodsmentioning
confidence: 99%
“…The F-Soft tool checks C programs for invalid pointer accesses, buffer overflows, memory leaks, incorrect usage of APIs, and arbitrary safety properties specified by a user [14]. We use the techniques described in the paper to improve the path-insensitive analysis used inside the F-Soft tool to obtain the effects of path-sensitive analysis.…”
Section: Introductionmentioning
confidence: 99%