ABSTRACT
Modularity is a key issue in the construction of large multi-paradigm declarative programs involving complex features like higher-order, polymorphism or constraints. The modular framework defined in this paper for higher-order declarative constraint programming builds complex software systems by combining and composing existing components or modules from a number of composition operations expressive enough to model typical modularization issues like export/import relationships and inheritance. The effectiveness of our approach relies on a higher-order constraint rewriting logic over a parametrically given constraint domain as the basis of a model-theoretic and fixpoint semantics for program modules, and a modular semantics given by a suitable immediate consequence operator which is compositional and fully abstract, offering the possibility of reasoning on the composition process itself. The availability of this well-founded semantics characterization for structuring and modularizing higher-order declarative constraint programs provides the ground to perform sound semantics-based transformation, analysis, debugging and verification of declarative software.
- K. R. Apt. Logic programming. In Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics (B), pages 493--574. 1990. Google ScholarDigital Library
- A. Brogi, P. Mancarella, D. Pedreschi, and F. Turini. Modular logic programming. ACM Trans. Program. Lang. Syst., 16(4):1361--1398, 1994. Google ScholarDigital Library
- A. Brogi and F. Turini. Fully abstract composition semantics for an algebra of logic programs. Theor. Comput. Sci., 149(2):201--209, 1995. Google ScholarDigital Library
- T.-R. Chuang and J.-L. Lin. On modular transformations of structural content. In APLAS, pages 251--263, 2001. Google ScholarDigital Library
- J. M. Cleva, J. Leach, and F. J. López-Fraguas. A logic programming approach to the verification of functional-logic programs. In PPDP, pages 9--19. ACM, 2004. Google ScholarDigital Library
- L. Damas and R. Milner. Principal type-schemes for functional programs. In POPL, pages 207--212, 198. Google ScholarDigital Library
- R. del Vado Vírseda. A higher-order demand-driven narrowing calculus with definitional trees. In ICTAC, volume 4711 of Lecture Notes in Computer Science, pages 169--184, 2007. Google ScholarDigital Library
- R. del Vado Vírseda. A higher-order logical framework for the algorithmic debugging and verification of declarative programs. In PPDP, pages 49--60. ACM, 2009. Google ScholarDigital Library
- R. del Vado Vírseda. Cooperation of algebraic constraint domains in higher-order functional and logic programming. In AMAST, volume 6486 of Lecture Notes in Computer Science, pages 180--200, 2011. Google ScholarDigital Library
- R. del Vado Vírseda. A Theoretical Framework for the Higher-Order Cooperation of Numeric Constraint Domains. In LSFA, volume 269 of Electr. Notes Theor. Comput. Sci., pages 55--69, 2011. Google ScholarDigital Library
- R. del Vado Vírseda and I. Castiñeiras. A theoretical framework for the declarative debugging of functional logic programs with lambda abstractions. In WFLP, volume 5979 of Lecture Notes in Computer Science, pages 162--178, 2009. Google ScholarDigital Library
- M. Falaschi, G. Levi, M. Martelli, and C. Palamidessi. A modeltheoretic reconstruction of the operational semantics of logic programs. Inf. Comput., 103(1):86--113, 1993. Google ScholarDigital Library
- M. Fitting. Enumeration operators and modular logic programming. J. Log. Program., 4(1):11--21, 1987. Google ScholarDigital Library
- R. Giacobazzi. Abductive analysis of modular logic programs. J. Log. Comput., 8(4):457--483, 1998.Google ScholarCross Ref
- R. Haemmerlé and F. Fages. Modules for prolog revisited. In ICLP, volume 4079, pages 41--55, 2006. Google ScholarDigital Library
- M. Hanus. A unified computation model for functional and logic programming. In POPL, pages 80--93, 1997. Google ScholarDigital Library
- M. Hanus. Multi-paradigm declarative languages. In ICLP, volume 4670 of Lecture Notes in Computer Science, pages 45--75, 2007. Google ScholarDigital Library
- M. Hanus and C. Prehofer. Higher-order narrowing with definitional trees. J. Funct. Program., 9(1):33--75, 1999. Google ScholarDigital Library
- R. Harper, R. Milner, and M. Tofte. A type discipline for program modules. In TAPSOFT, Vol.2, volume 250 of Lecture Notes in Computer Science, pages 308--319, 1987. Google ScholarDigital Library
- R. Harper and F. Pfenning. A module system for a programming language based on the lf logical framework. J. Log. Comput., 8(1):5--31, 1998.Google ScholarCross Ref
- P. Hill and J. W. Lloyd. The gödel programming language. In MIT Press, 1994. Google ScholarDigital Library
- J. R. Hindley and J. P. Seldin. Introduction to combinators and λ- calculus. Cambridge University Press, New York, NY, USA, 1986. Google ScholarDigital Library
- D. Kranzlmüller, C. Schaubschläger, M. Scarpa, and J. Volkert. A modular debbuging insfrastructure for parallel programs. In PARCO, volume 13 of Advances in Parallel Computing, pages 143--150. Elsevier, 2003.Google Scholar
- K. Kwon, G. Nadathur, and D. S. Wilson. Implementing a notion of modules in the logic programming language lambda-prolog. In ELP, volume 660 of Lecture Notes in Computer Science, pages 359--393, 1992. Google ScholarDigital Library
- F. Logozzo. Cibai: An abstract interpretation-based static analyzer for modular analysis and verification of java classes. In VMCAI, volume 4349 of Lecture Notes in Computer Science, pages 283--298, 2007. Google ScholarDigital Library
- F. J. López-Fraguas and J. Sànchez-Hernandez. TOY: A multiparadigm declarative system. In RTA, volume 1631 of Lecture Notes in Computer Science, pages 244--247, 1999. Google ScholarDigital Library
- P. Mancarella and D. Pedreschi. An algebra of logic programs. In ICLP/SLP, pages 1006--1023, 1988.Google Scholar
- S. E. Martín, M. T. Hortalà-Gonzàlez, M. Rodríguez-Artalejo, R. del Vado Vírseda, F. Sàenz-Pérez, and A. J. Fernàndez. On the cooperation of the constraint domains H, R, and FD in CFLP. TPLP, 9(4):415--527, 2009. Google ScholarDigital Library
- D. Miller. A theory of modules for logic programming. In SLP, pages 106--114, 1986.Google Scholar
- D. Miller. A logic programming language with lambda-abstraction, function variables, and simple unification. J. Log. Comput., 1(4):497--536, 1991.Google ScholarCross Ref
- J. M. Molina-Bravo and E. Pimentel. Modularity in functional-logic programming. In ICLP, pages 183--197, 1997.Google Scholar
- J. M. Molina-Bravo and E. Pimentel. Composing programs in a rewriting logic for declarative programming. TPLP, 3(2):189--221, 2003. Google ScholarDigital Library
- J. C. G. Moreno, M. T. Hortalà-Gonzàlez, F. J. López-Fraguas, and M. Rodríguez-Artalejo. An approach to declarative programming based on a rewriting logic. J. Log. Program., 40(1):47--87, 1999.Google ScholarCross Ref
- J. C. G. Moreno, M. T. Hortalà-Gonzàlez, and M. Rodríguez-Artalejo. A higher order rewriting logic for functional logic programming. In ICLP, pages 153--167, 1997.Google Scholar
- J. C. G. Moreno, M. T. Hortala-Gonzalez, and M. Rodríguez-Artalejo. Polymorphic types in functional logic programming. Journal of Functional and Logic Programming, 2001(1), 2001.Google Scholar
- L. C. Paulson. Isabelle - A Generic Theorem Prover (with a contribution by T. Nipkow), volume 828 of Lecture Notes in Computer Science. Springer, 1994.Google Scholar
- P. Pietrzak, J. Correas, G. Puebla, and M. V. Hermenegildo. A practical type analysis for verification of modular prolog programs. In PEPM, pages 61--70. ACM, 2008. Google ScholarDigital Library
- D. Sannella and L. A. Wallen. A calculus for the construction of modular prolog programs. J. Log. Program., 12(1&2):147--177, 1992. Google ScholarDigital Library
Index Terms
- A modular semantics for higher-order declarative programming with constraints
Recommendations
A higher-order logical framework for the algorithmic debugging and verification of declarative programs
PPDP '09: Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programmingWe propose a higher-order logical framework for declarative programming as an extension to the setting of the simply typed lambda calculus of a first-order rewriting logic, where programs are now presented by conditional pattern rewrite systems on ...
Higher-order logic programming languages with constraints: a semantics
TLCA'07: Proceedings of the 8th international conference on Typed lambda calculi and applicationsA Kripke Semantics is defined for a higher-order logic programming language with constraints, based on Church's Theory of Types and a generic constraint formalism.
Our syntactic formal system, hoHH(C) (higher-order hereditary Harrop formulas with ...
Comments