Dependent Types for Program Understanding
Weakly-typed languages such as Cobol often force programmers to represent distinct data abstractions using the same low-level physical type. In this paper, we describe a technique to recover implicitly-defined data abstractions from programs using type inference. We present a novel system of dependent types which we call guarded types, a path-sensitive algorithm for inferring guarded types for Cobol programs, and a semantic characterization of correct guarded typings. The results of our inference technique can be used to enhance program understanding for legacy applications, and to enable a number of type-based program transformations.
- 1.Canfora, G., Cimitile, A., Lucca, G.A.D.: Recovering a conceptual data model from cobol code. In: Proc. 8th Intl. Conf. on Softw. Engg. and Knowledge Engg (SEKE 1996), pp. 277–284. Knowledge Systems Institute (1996)Google Scholar
- 2.Demsky, B., Rinard, M.: Role-based exploration of object-oriented programs. In: Proc. 24th Intl. Conf. on Softw. Engg., pp. 313–324. ACM Press, New York (2002)Google Scholar
- 8.Rumbaugh, J., Jacobson, I., Booch, G.: The Unified Modeling Language Reference Manual, 2nd edn. Addison-Wesley Professional, Reading (2004)Google Scholar
- 11.Xi, H.: Dependent Types in Practical Programming. PhD thesis, Carnegie-Mellon University (1998)Google Scholar