skip to main content
10.1145/3167132.3167260acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

A constraint-logic object-oriented language

Published:09 April 2018Publication History

ABSTRACT

Object-oriented (OO) programming languages prevail in the development of enterprise software, but they do not particularly support the implementation of software which includes solving complicated search problems with dynamically appearing constraints, e. g. as found in logistics. Such problems could be tackled by implementing the main business logic in e. g. Java and the search in a constraint-logic language. However, integrating both aspects is clumsy.

Thus, we propose the constraint-logic OO language Muli. It facilitates an integrated implementation of applications that use both aspects. Muli extends Java by logic variables and encapsulated search. Its implementation is based on a symbolic Java virtual machine and constraint solvers. Outside of search regions, Muli behaves just like Java.

We motivate the benefits of integrating object-oriented programming and constraint-logic programming and introduce concepts that are required to achieve a seamless integration. We also describe our implementation of these concepts and discuss our approach.

References

  1. Sergio Antoy and Andy Jost. 2016. A New Functional-Logic Compiler for Curry: Sprite. In LOPSTR. arXiv:1608.04016Google ScholarGoogle Scholar
  2. Bernd Braßel, Michael Hanus, Björn Peemöller, and Fabian Reck. 2011. KiCS2: A New Compiler from Curry to Haskell. Functional and Constraint Logic Programming 6816 (2011), 1--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Enrico Denti, Andrea Omicini, and Alessandro Ricci. 2005. Multi-paradigm Java-Prolog integration in tuProlog. Science of Computer Programming 57, 2 (2005), 217--250. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. J. Doyle and C. Meudec. 2003. IBIS: an Interactive Bytecode Inspection System, using symbolic execution and constraint logic programming. 2nd PPPJ (2003), 55--58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Torbjörn Ekman and Görel Hedin. 2007. The JastAdd extensible Java compiler. In OOPSLA. 1--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Marko Ernsting, Tim A. Majchrzak, and Herbert Kuchen. 2012. Test Case Generation and Dynamic Mixed-Integer Linear Arithmetic Constraint Solving. In 21st WFLP.Google ScholarGoogle Scholar
  7. Jacob Feldman. 2012. JSR 331: Constraint Programming API. (2012). https://jcp.org/en/jsr/detail?id=331Google ScholarGoogle Scholar
  8. James Gosling and et al. 2015. The Java® Language Specification - Java SE 8 Edition. (2015). https://docs.oracle.com/javase/specs/jls/se8/jls8.pdf Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Michael Hanus. 1997. A Unified Computation Model for Functional and Logic Programming. In POPL 97. 80--93. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M Hanus, H Kuchen, J J Moreno-Navarro, JR Votano, M Parham, and LH Hall. 1995. Curry: A Truly Functional Logic Language. ILPS'95 Workshop on Visions for the Future of Logic Programming (1995), 95--107.Google ScholarGoogle Scholar
  11. Goh Kondoh and Tamiya Onodera. 2008. Finding bugs in Java Native Interface programs. ISSTA '08 (2008), 109. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Krzysztof Kuchcinski. 2003. Constraints-driven scheduling and resource assignment. ACM Transactions on Design Automation of Electronic Systems 8, 3 (2003), 355--383. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Christoph Lembeck, Rafael Caballero, Roger A. Müller, and Herbert Kuchen. 2004. Constraint Solving for Generating Glass-Box Test Cases. In Proceedings WFLP '04. 19--32.Google ScholarGoogle Scholar
  14. Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley. 2015. The Java® Virtual Machine Specification - Java SE 8 Edition. (2015). https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Kenneth C Louden. 1993. Programming Languages: Principles and Practice. Wadsworth Publ. Co., Belmont, CA, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Wolfgang Lux and Herbert Kuchen. 1999. An Efficient Abstract Machine for Curry. In Informatik '99 - Informatik überwindet Grenzen, K Beiersdörfer, G Engels, and W Schäfer (Eds.). Springer Verlag, 390--399.Google ScholarGoogle Scholar
  17. T. A. Majchrzak and H. Kuchen. 2009. Automated Test Case Generation Based on Coverage Analysis. In 2009 Third IEEE International Symposium on Theoretical Aspects of Software Engineering. 259--266. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Tim A Majchrzak and Herbert Kuchen. 2011. Logic Java: Combining Object-Oriented and Logic Programming. In WFLP. 122--137. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. F. G. McCabe. 1992. Logic and Objects. Prentice Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Erik Meijer, Brian Beckman, and Gavin Bierman. 2006. LINQ: Reconciling Objects, Relations and XML in the .NET Framework. In ACM SIGMOD International Conference on Management of data. 706. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Chris Moss. 1994. Prolog++ - the power of object-oriented and logic programming. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Martin Odersky, Philippe Altherr, Vincent Cremet, Gilles Dubochet, Burak Emir, Philipp Haller, Stéphane Micheloud, Nikolay Mihaylov, Adriaan Moors, Lukas Rytz, Michel Schinz, Erik Stenman, and Matthias Zenger. 2017. Scala Language Specification. (2017). http://www.scala-lang.org/files/archive/spec/2.12/Google ScholarGoogle Scholar
  23. OptaPlanner Team. 2017. OptaPlanner User Guide, Version 7.0.0. https://docs.optaplanner.org/7.0.0.Final/optaplanner-docs/htmlGoogle ScholarGoogle Scholar
  24. Charles Prud'homme, Jean-Guillaume Fages, and Xavier Lorca. 2016. Choco Documentation. TASC, INRIA Rennes. http://www.choco-solver.orgGoogle ScholarGoogle Scholar
  25. David Renshaw. 2017. Seer: Symbolic Execution Engine for Rust. (2017). https://github.com/dwrensha/seerGoogle ScholarGoogle Scholar
  26. Randall Scott. 2010. A Guide to Artificial Intelligence with Visual Prolog. Outskirts Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Ehud Shapiro and Akikazu Takeuchi. 1983. Object oriented programming in Concurrent Prolog. New Generation Computing 1, 1 (1983), 25--48.Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Stack Overflow. 2017. Developer Survey Results 2017. (2017). https://insights.stackoverflow.com/survey/2017Google ScholarGoogle Scholar
  29. Nikolai Tillmann and Jonathan de Halleux. 2008. Pex: White Box Test Generation for .NET. In 2nd International Conference on Tests and Proofs. 134--153. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. TIOBE Software BV. 2017. TIOBE Index. (2017). https://www.tiobe.com/tiobe-index/Google ScholarGoogle Scholar
  31. Markus Triska. 2012. The Finite Domain Constraint Solver of SWI-Prolog. In FLOPS (LNCS), Vol. 7294. 307--316. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft. 2014. Java 8 in Action: Lambdas, Streams, and Functional-style Programming. Manning Publications Co., Greenwich, CT. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Peter Van Roy, Per Brand, Denys Duchier, Seif Haridi, Christian Schulte, and Martin Henz. 2003. Logic programming in the context of multiparadigm programming: the Oz experience. Theory and Practice of Logic Programming 3, 6 (2003), 717--763. arXiv:cs/0208029 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. David H. D. Warren. 1983. An Abstract Prolog Instruction Set. Technical Report. SRI International, Menlo Park.Google ScholarGoogle Scholar

Index Terms

  1. A constraint-logic object-oriented language

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in
            • Published in

              cover image ACM Conferences
              SAC '18: Proceedings of the 33rd Annual ACM Symposium on Applied Computing
              April 2018
              2327 pages
              ISBN:9781450351911
              DOI:10.1145/3167132

              Copyright © 2018 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 9 April 2018

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article

              Acceptance Rates

              Overall Acceptance Rate1,650of6,669submissions,25%

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader