Abstract
The use of abstraction in the context of abstract data types, is investigated. Properties to be checked are formulas in a first order logic under Kleene's 3-valued interpretation. Abstractions are defined as pairs consisting of a congruence and a predicate interpretation. Three types of abstractions are considered,∀∀, ∀∃ and ∃0,1∀, and for each of them corresponding property preservation results are established. An abstraction refinement property is also obtained. It shows how one can pass from an existing abstraction to a (less) finer one. Finally, equationally specified abstractions in the context of equationally specified abstract data types are discussed and exemplified.
Similar content being viewed by others
References
Assmann, U., Weinhardt, M.: Interprocedural Heap Analysis for Parallelizing Imperative Programs, In: Giloi, W.K., Jähnichen, S., Shriver, B.D. (eds.) Programming Models for Massively Parallel Computers. IEEE Press, pp. 74–82 (1993)
Ball, Th., Podelski, A., Rajamani, S.K.: Boolean and Cartesian Abstraction for Model Checking C Programs, Technical Report MSR-TR-2000-115, Microsoft Research (2000)
Bidoit, M., Boisseau A.: Algebraic Abstractions. In: 15th Workshop on Algebraic Development Techniques WADT'01, Lecture Notes in Computer Science 2267, 21–47 (2001)
Burch, J., Clarke, E., McMillan, K., Dill D.: Symbolic Model Checking: 1020 States and Beyond, In: Proceedings of the 5th Symposium on Logic in Computer Science (1990)
Chase, D., Wegman, M., Zadeck F.: Analysis of Pointers and Structures, In: SIGPLAN Conference on Programming Languages, Design and Implementation, pp. 296–310 (1990)
Clarke, E.M., Grumberg, O., Peled D.A.: Model Checking, MIT Press (2000)
Clarke, E.M., Grumberg, O., Long, D.E.: Model Checking and Abstraction, ACM Transactions on Programming Languages and Systems, pp. 1512–1542 (1994)
Cousot, P., Cousot, R.: Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In: 4th ACM Symposium on Principles of Programming Languages, pp. 238–252 (1977)
Dams, D.: Abstract Interpretation and Partial Refinement for Model Checking, Ph.D. Thesis, Technische Universität Eindhoven (1996)
Dams, D., Gerth, R., Grumberg, O.: Abstract Interpretation of Reactive Systems, ACM Transactions on Programming Languages and Systems 19(2) (1997)
Das, S., Dill, D.L., Park S.: Experience with Predicate Abstraction. In: Proceedings of the 11th International Conference on Computer Aided Verification CAV'99, Lecture Notes in Computer Science 1633, 160–171 (1999)
Dill, D.L., Drexler, A.J., Hu, A.J., Yang, C.H.: Protocol Verification as a Hardware Design Aid. In: Proceedings of the IEEE International Conference on Computer Design: VLSI in Computers and Processors, pp. 522–525 (1992)
Ehrig, H., Mahr, B.: Fundamentals of Algebraic Specification 1: Equations and Initial Semantics, Springer-Verlag (1985)
Ehrig, H., Mahr, B.: Fundamentals of Algebraic Specification 2: Module Specifications and Constraints, Springer-Verlag (1990)
Ehrig, H., Kreowski, H.-J.: Refinement and Implementation. In: Astesiano, E. et al. (eds.) Algebraic Foundations of Systems Specification, IFIP State-of-the-Art Report. Springer, pp. 201–242 (1999)
Ginsberg, M.: Multivalued Logics. A Uniform Approach to Inference in Artificial Intelligence, Computational Intelligence 4, 265–316 (1988)
Graf, S., Saidi, H.: Construction of Abstract State Graphs with PVS. In: Proceedings of the 9th International Conference on Computer Aided Verification, Lecture Notes in Computer Science 1254, 72–83 (1997)
The HOL System, Computer Laboratory, University of Cambridge, http://www.cl.cam.ac.uk/Research/HVG/HOL
Holzmann, G.J.: A Practical Method for Verifying Event-driven Software. In: Proceedings of the 21st International Conference on Software Engineering ICSE'99, pp. 597–607 (1999)
Holzmann, G.J.: The SPIN Model Checker. Primer and Reference Manual, Addison-Wesley (2003)
Horwitz, S., Pfeiffer, P., Reps, T.: Dependence Analysis for Pointer Variables. In: SIGPLAN Conference on Programming Languages, Design and Implementation, pp. 28–40 (1989)
Jones, N.D., Muchnick, S.: Flow Analysis and Optimization of Lisp-like Structures. In: Muchnick, S., Jones, N.D. (eds.) Program Flow Analysis: Theory and Applications, Prentice-Hall, pp. 102–131 (1981)
Jones, N.D., Muchnick, S.: A Flexible Approach to Interprocedural Data Flow Analysis and Programs with Recursive Data Structures. In: Symposium on Principles of Programing Languages, pp. 66–74 (1982)
Kurshan, R.P.: Computer-Aided Verification of Coordinating Processes: The Automata-Theoretic Approach. Princeton University Press (1994)
Lamport, L.: A New Solution of the Dijkstra's Concurrent Problem, Communications of the ACM 17(8), 453–455 (1974)
Larus, J., Hilfinger, P.: Detecting Conflicts Between Structure Accesses. In: SIGPLAN Conference on Programming Languages, Design and Implementation, pp. 21–34 (1988)
Loeckx, J., Ehrich, H.-D., Wolf, M.: Algebraic Specification of Abstract Data Types. In: Abramsky, S., Gabbay, D.M., Maibaum, T.S.E. (eds.) Handbook of Logic in Computer Science, vol. 5, Clarendon Press, pp. 217–316 (2000)
Manna, Z., Pnueli, A.: The Temporal logic of Reactive and Concurrent Systems. Specification, Springer-Verlag (1992)
McMillan, K.: Verification of Infinite State Systems by Compositional Model Checking, Research Report, Cadence Berkeley Labs (1999)
Meinke, K., Tucker, J.V.: Universal Algebra, In: Abramsky, S., Gabbay, D., Maibaum, T.S.E. (eds.) Handbook of Logic in Computer Science vol. 1, Oxford University Press, Oxford, pp. 189–411 (1993)
Mitchell, J.: Foundations of Programming Languages, The MIT Press (1996)
Nielson, F., Nielson, H.R., Hankin, Ch.: Principles of Program Analysis, Springer-Verlag (1999)
Peled, D.A.: Software Reliability Methods, Springer-Verlag (2001)
Plevyak, J., Chien, A., Karamcheti, V.: Analysis of Dynamic Structures for Efficient Parallel Execution. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D.: (eds.) Languages and Compilers for Parallel Computing Lecture Notes in Computer Science 768, Springer-Verlag, pp. 37–57 (1993)
The PVS Specification and Verification System, Computer Science Laboratory, SRI International, http://pvs.csl.sri.com
Saidi, H.: Model Checking Guided Abstraction and Analysis, In: Proceedings of the 7th International Static Analysis Symposium (2000)
Sagiv, M., Reps, Th., Wilhelm, R.: Solving Shape-Analysis Problems in Languages with Destructive Updating, ACM Transaction on Programming Languages and Systems, 20(1), 1–50 (1998)
Sagiv, M., Reps, Th., Wilhelm, R.: Parametric Shape Analysis via 3-Valued Logic, ACM Transaction on Programming Languages and Systems, 24(3), 217–298 (2002)
STeP: The Stanford Temporal Prover, http://www-step.stanford.edu
Stransky, J.: A Lattice for Abstract Interpretation of Dynamic (Lisp-like) Structures, Information and Computation 101(1), 70–102 (1992)
Wang, E.Y.-B.: Analysis of Recursive Types in an Imperative Language, Ph.D. Thesis, University of California, Berkeley (1994)
Viser, W., Park, S., Penix, J.: Using Predicate Abstraction to Reduce Object-oriented Programs for Model Checking. In: Proceedings of the 3rd ACM Workshop on Formal Methods in Software Practice, Portland (Oregon), pp. 3–12 (2000)
Visser, W., Park, S., Penix, J., Oh, P.: Abstracting Object-Oriented Programs for Model Checking, unpublished manuscript (2001)
Author information
Authors and Affiliations
Corresponding author
Additional information
On leave from the Department of Computer Science, “Al. I. Cuza” University, Iaşi 740083, Romania
The research reported in this paper was partially supported by the program ECO-NET 08112WJ/2004-2005 and by the National University Research Council of Romania, grants CNCSIS 632(28)/2004 and CNCSIS 632(50)/2005.
Rights and permissions
About this article
Cite this article
Ţiplea, F.L., Enea, C. Abstractions of data types. Acta Informatica 42, 639–671 (2006). https://doi.org/10.1007/s00236-006-0010-3
Received:
Revised:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00236-006-0010-3