CoqJVM: An Executable Specification of the Java Virtual Machine Using Dependent Types
We describe an executable specification of the Java Virtual Machine (JVM) within the Coq proof assistant. The principal features of the development are that it is executable, meaning that it can be tested against a real JVM to gain confidence in the correctness of the specification; and that it has been written with heavy use of dependent types, this is both to structure the model in a useful way, and to constrain the model to prevent spurious partiality. We describe the structure of the formalisation and the way in which we have used dependent types.
Unable to display preview. Download preview PDF.
- 2.Barthe, G., Dufay, G., Jakubiec, L., Serpette, B., de Sousa, S.M.: A Formal Executable Semantics of the JavaCard Platform. In: Sands, D. (ed.) ESOP 2001. LNCS, vol. 2028, pp. 302–319. Springer, Heidelberg (2001)Google Scholar
- 8.Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn. Addison-Wesley, Reading (1999)Google Scholar
- 11.The Coq development team. The Coq proof assistant reference manual. LogiCal Project, Version 8.0 (2004)Google Scholar
- 12.Necula, G.C.: Proof-carrying code. In: Proceedings of POPL 1997 (January 1997)Google Scholar