Abstract
This paper presents a full formalization of the semantics of definite programs, in the calculus of inductive constructions. First, we describe a formalization of the proof of first-order terms unification: this proof is obtained from a similar proof dealing with quasi-terms, thus showing how to relate an inductive set with a subset defined by a predicate. Then, SLD-resolution is explicitely defined: the renaming process used in SLD-derivations is made explicit, thus introducing complications, usually overlooked, during the proofs of classical results. Last, switching and lifting lemmas and soundness and completeness theorems are formalized. For this, we present two lemmas, usually omitted, which are needed. This development also contains a formalization of basic results on operators and their fixpoints in a general setting. All the proofs of the results, presented here, have been checked with the proof assistant Coq.
Similar content being viewed by others
References
Abadi, M., Cardelli, L., Curien, P. L. and Lévy, J. J.: Explicit substitutions, J. Funct. Programming 1(4) (1991), 375-416.
Apt, K. R.: Logic programming, in J. van Leewen (ed.), Handbook of Theoretical Computer Science, Volume B: Formal Models and Semantics, Chapter 10, The MIT Press, New York, 1990, pp. 493-574.
Apt, K. R. and van Emden, M. H.: Contributions to the theory of logic programming, J. ACM 29(3) (1982), 841-862.
Project Coq, The Coq Proof Assistant Reference Manual Version 6.2, INRIA-Rocquencourt, 1998.
Coquand, T. and Huet, G.: The calculus of constructions, Inform. and Comput. 76(2-3) (1988), 95-120.
Dubois, C. and Viguié Donzeau-Gouge, V.: A step towards the mechanization of partial functions: Domains as inductive predicates, in Workshop on Mechanization of Partial Functions, CADE 15, July 1998.
Falaschi, M., Levi, G., Palamidessi, C. and Martelli, M.: Declarative modeling of the operational behavior of logic languages, Theoret. Comput. Sci. 69(3) (1989), 289-318.
Gallier, J. H.: Logic for Computer Science, Foundations of Automatic Theorem Proving, Harper and Row Publishers, 1986.
Girard, J. Y., Lafont, Y. and Taylor, P.: Proofs and Types, Cambridge Tracts in Theoret. Comput. Sci. 7, Cambridge University Press, 1989.
Gordon, M. J. C., Milner, R. and Wadsworth, C.: Edinburgh LCF: A Mechanised Logic of Computation, Springer-Verlag, 1979.
Harrison, J.: Formalizing basic first order model theory, in J. Grundy and M. Newey (eds.), 11th International Conference on Theorem Proving in Higher Order Logics TPHOLs'98, LNCS 1479, Springer-Verlag, 1998, pp. 153-170.
Jaume, M.: Formalization of SLD-resolution in the calculus of inductives constructions. Research Report 96-67, ENPC-CERMICS, 1996.
Jaume, M.: Unification: A case study in transposition of formal properties, in E. L. Gunter and A. Felty (eds.), Supplementary Proceedings of the 10th International Conference on Theorem Proving in Higher Order Logics: Poster session TPHOLs'97, Murray Hill, NJ, 1997, pp. 79-93.
Kemp, R. S. and Ringwood, G. A.: Reynolds and Heyting models of logic programs, in ICLP94 Workshop on Proof Theoretical Extensions of Logic Programming, 1994.
Ko, H. P. and Nadel, M. E.: Substitution and refutation revisited, in Koichi Furukawa (ed.), Proceedings of the Eighth International Conference on Logic Programming, The MIT Press, 1991, pp. 679-692.
Krivine, J.-L.: Une preuve formelle et intuitionniste du théorème de complétude de la logique classique, Bull. Symbolic Logic 2(4) (1996), 405-421.
Lalement, R.: Computation as Logic, Prentice-Hall International Series in Computer Science, 1993.
Lassez, J.-L., Maher, M. and Mariott, K.: Unification revisited, in J. Minker (ed.), Foundations of Deductive Databases and Logic Programming, M. Kaufman, Los Altos, California, 1987, pp. 587-625.
Lloyd, J. W.: Foundations of Logic Programming, Springer-Verlag, 1987.
Lloyd, J. W. and Sheperdson, J. C.: Partial evaluation in logic programming, J. Logic Programming 11(3-4) (1991), 217-242.
Manna, Z. and Waldinger, R. J.: Deductive synthesis of the unification algorithm, Sci. Comput. Programming 1(1-2) (1981), 5-48.
Nilsson, U. and Maluszynski, J.: Logic Programming and Prolog, Wiley, 1990.
Paulson, L. C.: Verifying the unification algorithm in LCF, Sci. Comput. Programming 5 (1985), 143-169.
Persson, H.: Constructive completeness of intuitionistic predicate logic: A formalization in type theory, Licenciate thesis, Department of Computing Science, Chalmers University of Technology and University of Goteborg, Sweden, 1996.
Pusch, C.: Verification of compiler correctness for the WAM, in J. Von Wright, J. Grundy, and J. Harrison (eds.), Ninth International Conference on Theorem Proving in Higher Order Logics TPHOLs'96, LNCS 1125, Springer-Verlag, 1996, pp. 347-362.
Rouyer, J.: Développement de l'algorithme d'unification dans le calcul des constructions avec types inductifs, Research Report, INRIA, Lorraine, 1992.
Shepherdson, J. C.: The role of standardising apart in logic programming, Theoret. Comput. Sci. 129(1) (1994), 143-166.
van Emden, M. H. and Kowalski, R. A.: The semantics of predicate logic as a programming language, J. ACM 23(4) (1976), 733-742.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Jaume, M. A Full Formalization of SLD-Resolution in the Calculus of Inductive Constructions. Journal of Automated Reasoning 23, 347–371 (1999). https://doi.org/10.1023/A:1006242018697
Issue Date:
DOI: https://doi.org/10.1023/A:1006242018697