
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