Abstract
PROLOG is a programming language based on first order logic. The feature that distinguishes PROLOG from most other programming languages is that the execution of PROLOG programs is based on subgoal reduction and unification. Unfortunately, the reliance on unification for execution has also inhibited PROLOG from utilizing some recently developed concepts in programming languages such as abstract data types. In this paper we introduce a discipline for incorporating abstract data types into PROLOG, and study the use of PROLOG as a uniform programming environment for the specification, implementation, and verification of PROLOG programs. We illustrate the application of the environment to the development of abstract data types in PROLOG.
In addition to producing executable specifications, the proposed discipline also provides automatic means of refining a specification into an implementation. We also present a PROLOG-based inductive theorem proving method for proving properties of data types and correctness of implementations.
Research supported in part by the National Science Foundation under grants DCR-8401624 and DCR-8319966
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
1. References
R. E. Davis, “Runnable Specification as a Design Tool”, in Logic Programming, K. L. Clark and S. Tarnlund, (eds.), Academic Press, January 1982, 141–152.
H. Ehrig, “Algebraic Theory of Parameterized Specifications with Requirements”, 6th CAAP, 1981.
F. Fages, “Associative-Commutative Unification”, 7th Conf. on Automated Deduction, Nappa Valley, CA, May, 1984, 194–208.
J. A. Goguen, J. W. Thatcher and E. G. Wagner, “Initial Algebra Approach to the Specification, Correctness, and Implementation of Abstract Data Types”, in Current Trends in Programming Methodology, vol. IV Data Structuring, R. T. Yeh, (ed.), Prentice Hall (Automatic Computation Series), Englewood Cliffs, NJ, 1978.
J. A. Goguen and J. J. Tardo, “An Introduction to OBJ: A Language for Writing and Testing Formal Algebraic Program Specifications”, Proceedings of the Conference on Specification of Reliable Software, Cambridge, MA 02139, 1979.
J. A. Goguen, “Parameterized Programming”, Proceedings of the Workshop on Reusability in Programming, 1982.
J. V. Guttag and J. J. Horning, “The Algebraic Specification of Abstract Data Types”, Acta Informatica, 10, 1 (1978), 27–52.
A. Hansson and S. Tarnlund, “Program Transformation by Data Structure”, in Logic Programming, K. L. Clark and S. Tarnlund, (eds.), Academic Press, January 1982, 141–152.
J. Hsiang and M. K. Srivas, “On Proving First Order Inductive Properties in Horn Clauses”, Technical Report 84/75, SUNY at Stony Brook, Stony Brook, NY 11794, 1984.
J. Hsiang and M. K. Srivas, “A PROLOG Environment for Developing and Reasoning about Data Types”, Technical Report 84/074, SUNY at Stony Brook, Stony Brook, NY 11794, 1984.
G. Huet and J. M. Hullot, “Proofs by Induction in Equational Theories with Constructors”, 21st IEEE Symposium on Foundations of Computer Science, 1980, 797–821.
G. Huet and D. C. Oppen, “Equations and Rewrite Rules: A Survey”, in Formal Languages: Perspectives and Open Problems, R. Book, (ed.), Academic Press, 1980.
J. M. Hullot, “Canonical Forms and Unification”, 5th Conference on Automated Deduction, Les Arcs, France, 1980, 318–334.
D. Kapur and M. K. Srivas, “Expressiveness of the Operation Set of a Data Abstraction”, Seventh Annual ACM Symposium on Principles of Programming Languages, Las Vegas, Nevada, January 28–30, 1980, 139–153.
W. A. Kornfeld, “Equality in Prolog”, Proc. 8th IJCAI, Karlsruhe, Germany, August 1983, 514–519.
P. Mishra, “Towards a Theory of Types in Prolog”, 1984 International Symposium on Logic Programming, Atlantic City, New Jersey, Feb. 6–9, 1984, 289–298.
D. R. Musser, “Abstract Data Types in the AFFIRM System”, IEEE, 1, 6 (Jan. 1980),.
P. Padawitz, “Correctness, Completeness and Consistency of Equational Data Type Specifications”, in Ph.D. Thesis,, Technische Universitat, Berlin, 1982.
D. A. Plaisted, “The Occur-Check Problem in Prolog”, 1984 International Symposium on Logic Programming, Atlantic City, New Jersey, Feb. 6–9, 1984, 272–280.
M. K. Srivas, “A Rewrite Rule Based Approach to Program Transformation”, The Rewrite Rule Laboratory Workshop, Schenectady, NY 12345, September 1983.
M. E. Stickel, “A Unification Algorithm for Associative-Commutative Functions”, J. ACM, 28, (1981), 233–264.
M. E. Stickel, “A Prolog Technology Theorem Prover”, 1984 International Symposium on Logic Programming, Atlantic City, New Jersey, Feb. 6–9, 1984, 212–219.
P. A. Subrahmanyam and J. You, “Conceptual Basis and Evaluation Strategies for Integrating Functional and Logic Programming”, 1984 International Symposium on Logic Programming, Atlantic City, New Jersey, February 6–9, 1984, 144–153.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1985 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hsiang, J., Srivas, M.K. (1985). A PROLOG environment for developing and reasoning about data types. In: Ehrig, H., Floyd, C., Nivat, M., Thatcher, J. (eds) Formal Methods and Software Development. TAPSOFT 1985. Lecture Notes in Computer Science, vol 186. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-15199-0_18
Download citation
DOI: https://doi.org/10.1007/3-540-15199-0_18
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-15199-9
Online ISBN: 978-3-540-39307-8
eBook Packages: Springer Book Archive