Higher Order Logic(HOL) [2], the Prototype Verification System(PVS) [4] and Ex-
tended Static Checking(ESC) system [5]. The main weakness of existing proof-based
approaches is that they require the programmers to provide annotated program speci-
fication.
The main contribution of our approach to the traditional logic proof-based ap-
proach is that our approach not only uses the reasoning technology to verify source
code, but also uses automated theorem prover to discover the logic information based
on proper hypotheses according to specific runtime violation category. This means
our approach breaks through the limitation of other proof-based approaches. Our
works also show the feasibility of using formal methods to discover the implicit pro-
gram specification.
Since this is still a research project undergoing, there are some limitations exists.
In our future research work, we are going to make more accurate hypotheses not only
in terms of violations, but also on the pattern of the source code, which will discover
the weaker form of preconditions or invariants and provide more accurate result of
analysis. Also in order to make our tools more practical, our future research will fo-
cus on the path reduction and analysis optimization.
References
1. Cousot, P. and Cousot R., 1977. Abstract Interpretation: A Unified Lattice Model for Static
Analysis of Programs by Construction or Approximation Fixpoints In Proc. ACM SIGPLAN
Conference on Programming Languages
2. Dijkstra, E., 1975. Guarded Commands, Nondeterminacy and Formal Derivation of Program.
In Communications of ACM. 18(8).
3. Hoare, A., 1969. An Axiomatic Basis for Computer Programming. In Communications of
ACM, 12(10).
4. Kemp, D. and Goodfellow G., 1990. The Official Report, technical report. In ACM
SIGSOFT).
5. Leino, K. and Stata, R., 1997. Checking Object Invariants, technical report, Digital Equip-
ment Corporation Research Center. Palo Alto, CA.
6. Schumann, J., 2001. Automated Theorem Proving in Software Engineering, Springer
7. Skevoulis, S. and Jia, X., 2000. Generic Invariant-Based Static Analysis Tool For Detection
of Runtime Errors in Java Programs.
8. McMillan, K., 1993. Symbolic Model Checking: An Approach to the State Explosion Prob-
lem, Kluwer.
9. Holzmann, G., 1991. Design and Validation of Computer Protocols, Prentice Hall.
10. Visser, W., Havelund, K., Brat, G. and Park, S., 2000. Model cheking Programs. In 15th
Conference on automated Software Engineering(ASE), IEEE Press
11. Pasareanu, C., Dwyer, M. and Visser, W., 2001. Finding Feasible Counter-examples when
Model checking Java Programs. In Proc. of the 7th International Conference on Tools and
Algorithms for the Construction and Analysis of Systems, Springer-Verlag
12. Ball, T. and Rajamani, S., 2001. Automatically Validating Temporal Safety Properties of
Interface. In Proc. of SPIN 2001 Workshop on Model Checking of Software.
13. Gosling, J., Joy, B. and Steele, G., 1996. The Java
tm
Language Specification, Addison-
Wesley
65