Skip to main content

Reference Type Logic Variables in Constraint-Logic Object-Oriented Programming

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 11285))

Abstract

Constraint-logic object-oriented programming, for example using Muli, facilitates the integrated development of business software that occasionally involves finding solutions to constraint-logic problems. The availability of object-oriented features calls for the option to use objects as logic variables as well, as opposed to being limited to primitive type logic variables. The present work contributes a concept for reference type logic variables in constraint-logic object-oriented programming that takes arbitrary class hierarchies of programs written in object-oriented languages into account. The concept discusses interactions between constraint-logic object-oriented programs and reference type logic variables, particularly invocations on and access to logic variables, type operations, and equality. Furthermore, it proposes approaches as to how these interactions can be handled by a corresponding execution environment.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    Even though is not declared explicitly in the given interface, the Java language specification implicitly augments interfaces with abstract methods that correspond to every method that is declared in [5, Sect. 9.2]. Among others, this includes an implicit declaration of that is consistent with the corresponding declaration in .

  2. 2.

    Note that only the standalone use of type variables is disregarded here. Consequently, the reference types that we consider in the following may still make use of type variables as part of parameterised (generic) types.

  3. 3.

    In general, this includes parameterised (generic) types that remain in parameterised form (e.g., ). Therefore, this set is finite.

  4. 4.

    Note that here \(fields(o_1) = fields(o_2)\) since \(type(o_1) = type(o_2)\), so \(fields(o_2)\) could be used just as well.

  5. 5.

    https://github.com/wwu-pi/muli.

References

  1. Antoy, S., Hanus, M.: From boolean equalities to constraints. In: Falaschi, M. (ed.) LOPSTR 2015. LNCS, vol. 9527, pp. 73–88. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-27436-2_5

    Chapter  Google Scholar 

  2. Dageförde, J.C., Kuchen, H.: A constraint-logic object-oriented language. In: SAC 2018, pp. 1185–1194. ACM (2018). https://doi.org/10.1145/3167132.3167260

  3. Dageförde, J.C., Kuchen, H.: An operational semantics for constraint-logic imperative programming. In: Seipel, D., Hanus, M., Abreu, S. (eds.) WFLP/WLP/INAP 2017. LNCS, vol. 10997, pp. 64–80. Springer, Cham (2018). https://doi.org/10.1007/978-3-030-00801-7_5

    Chapter  Google Scholar 

  4. Denti, E., Omicini, A., Ricci, A.: Multi-paradigm Java-Prolog integration in tuProlog. Sci. Comput. Program. 57(2), 217–250 (2005). https://doi.org/10.1016/j.scico.2005.02.001

    Article  Google Scholar 

  5. Gosling, J., Joy, B., Steele, G., Bracha, G., Buckley, A.: The Java® Language Specification - Java SE 8 Edition (2015). https://docs.oracle.com/javase/specs/jls/se8/jls8.pdf

  6. Hanus, M., Kuchen, H., Moreno-Navarro, J.J., Votano, J., Parham, M., Hall, L.: Curry: a truly functional logic language. In: Workshop on Visions for the Future of Logic Programming, ILPS 1995, pp. 95–107 (1995)

    Google Scholar 

  7. King, J.C.: Symbolic execution and program testing. Commun. ACM 19(7), 385–394 (1976). https://doi.org/10.1145/360248.360252

    Article  MathSciNet  MATH  Google Scholar 

  8. Lazutkin, E.: Unification for JS (2014). http://www.lazutkin.com/blog/2014/05/18/unification-for-js/

  9. Meijer, E., Beckman, B., Bierman, G.: LINQ: reconciling objects, relations and XML in the .NET framework. In: ACM SIGMOD International Conference on Management of Data, p. 706 (2006). https://doi.org/10.1145/1142473.1142552

  10. Microsoft: Reference Types (C# Reference) (2015). https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/reference-types

  11. Odersky, M., et al.: Scala Language Specification (2017). http://www.scala-lang.org/files/archive/spec/2.12/

  12. Ostermayer, L.: Seamless cooperation of Java and Prolog for rule-based software development. In: Proceedings of RuleML 2015 (2015). http://ceur-ws.org/Vol-1417/paper2.pdf

  13. Plümicke, M.: Java type unification with wildcards. In: Seipel, D., Hanus, M., Wolf, A. (eds.) INAP/WLP 2007. LNCS, vol. 5437, pp. 223–240. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-00675-3_15

    Chapter  Google Scholar 

  14. Urma, R.G., Fusco, M., Mycroft, A.: Java 8 in Action: Lambdas, Streams, and Functional-Style Programming. Manning Publications Co., Greenwich (2014)

    Google Scholar 

  15. Van Roy, P., Brand, P., Duchier, D., Haridi, S., Schulte, C., Henz, M.: Logic programming in the context of multiparadigm programming: the Oz experience. Theory Pract. Logic Program. 3(6), 717–763 (2003). https://doi.org/10.1017/S1471068403001741

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jan C. Dageförde .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Dageförde, J.C. (2019). Reference Type Logic Variables in Constraint-Logic Object-Oriented Programming. In: Silva, J. (eds) Functional and Constraint Logic Programming. WFLP 2018. Lecture Notes in Computer Science(), vol 11285. Springer, Cham. https://doi.org/10.1007/978-3-030-16202-3_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-16202-3_8

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-16201-6

  • Online ISBN: 978-3-030-16202-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics