constraint-logic object-oriented programming is a young programming paradigm that aims to bring constraint-solving techniques to an audience more accustomed to imperative programming. A prototypical language of this p...
详细信息
ISBN:
(纸本)9789897586477
constraint-logic object-oriented programming is a young programming paradigm that aims to bring constraint-solving techniques to an audience more accustomed to imperative programming. A prototypical language of this paradigm, Muli, allows for the use not only of primitive-typed free variables, but also for free objects and free arrays of primitive-typed elements. In the work at hand, we extend the current version of Muli so that it supports free arrays of arrays and free arrays of objects. We do so by utilizing the concept of symbolic aliasing. Our evaluation shows that the presented approach can speed up program validation and test case generation, as well as solving complex constraint satisfaction problems.
constraint-logic object-oriented programming is a paradigm by means of which multiple application areas, such as the formulation of and solving constraint-satisfaction problems, the systematic generation of object gra...
详细信息
ISBN:
(纸本)9781450387132
constraint-logic object-oriented programming is a paradigm by means of which multiple application areas, such as the formulation of and solving constraint-satisfaction problems, the systematic generation of object graphs, and test-case generation become language features. This paradigm has been implemented in the prototypical programming language Muli. Though the usefulness of aforementioned features has been demonstrated in the past, Muli has seen little practical adoption. The reasons for this is the performance of the current implementation of Muli and its technical incompatibility with existing systems. In this paper, we give further details on these limitations, derive desiderata for a new implementation of Muli and design a new system, Mulib, that enables the features of this paradigm on a standard Java virtual machine. In this context, we furthermore provide the means to efficiently make use of incremental constraint solvers in a parallel setting.
constraint-logic object-oriented programming facilitates the integrated development of business software that occasionally solves constraint-logic problems or makes other use of structured search. So far, work in cons...
详细信息
ISBN:
(纸本)9781450386890
constraint-logic object-oriented programming facilitates the integrated development of business software that occasionally solves constraint-logic problems or makes other use of structured search. So far, work in constraint-logic object-oriented programming has been limited to considering constraints that only involve logic variables of primitive types;in particular, boolean, integer, and floating-point numbers. However, the availability of object-oriented features calls for the option to use logic variables in lieu of objects as well. Therefore, support for reference-type logic variables (or free objects) is required. With the work at hand, we add support for free objects to a Java-based constraint-logicobject-oriented language, Muli. Allowing free objects in statements and expressions results in novel interactions with objects at run time, for instance, non-deterministic execution of polymorphic method invocations (taking arbitrary class hierarchies into account) and non-deterministic type operations. At run time, this is supported by a dynamic type constraint that restricts the possible types of a free object at non-deterministic choices.
constraint-logic object-oriented programming facilitates the development of applications that occasionally solve search problems. To that end it is possible to define constraints imperatively on-the-fly, using conditi...
详细信息
ISBN:
(纸本)9781450359337
constraint-logic object-oriented programming facilitates the development of applications that occasionally solve search problems. To that end it is possible to define constraints imperatively on-the-fly, using conditions over free variables. As a result, the search space is defined dynamically at runtime, based on the evaluation of such conditions in control structures. Consequently, the search space can -intentionally or by accident - become infinitely large if recursion and/or loops are involved. It is therefore desirable that the corresponding encapsulated search can be controlled by application developers. To that end, we discuss mechanisms for encapsulating such a search space and retrieving solutions from it. Our implementation for Muli is based on an appropriately extended symbolic Java virtual machine and it leverages the Java Stream API to provide a control mechanism that integrates well with object-oriented programs. Moreover, we show how our language Muli behaves for some example programs.
暂无评论