Proceedings of the 33rd International Conference on Software Engineering 2011
DOI: 10.1145/1985793.1985863
|View full text |Cite
|
Sign up to set email alerts
|

Unifying execution of imperative and declarative code

Abstract: We present a unified environment for running declarative specifications in the context of an imperative object-oriented programming language. Specifications are Alloy-like, written in first-order relational logic with transitive closure, and the imperative language is Java. By being able to mix imperative code with executable declarative specifications, the user can easily express constraint problems in place, i.e., in terms of the existing data structures and objects on the heap. After a solution is found, th… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
30
0

Year Published

2012
2012
2020
2020

Publication Types

Select...
6
1
1

Relationship

1
7

Authors

Journals

citations
Cited by 44 publications
(30 citation statements)
references
References 18 publications
0
30
0
Order By: Relevance
“…In comparison, our Python API seems more lightweight, since it does not require an object-oriented approach. When it comes to computational performance, [12] reports good results, which our implementation is not able to match.…”
Section: Related Workmentioning
confidence: 85%
See 1 more Smart Citation
“…In comparison, our Python API seems more lightweight, since it does not require an object-oriented approach. When it comes to computational performance, [12] reports good results, which our implementation is not able to match.…”
Section: Related Workmentioning
confidence: 85%
“…In [12], a reasoner for FO extended with transitive closure is integrated into Java. Their KB language is therefore very similar to (but more restricted than) that of IDP.…”
Section: Related Workmentioning
confidence: 99%
“…In this case, declarative specifications are executed 'by magic', as if, in a conventional setting, the interpreter could execute a program assertion by making it true despite the lack of any explicit code to establish it [10,9]. Alternatively, flipping the precedence of the two paradigms, the interpreter can be viewed as a declarative model finder that uses imperative code to setup a declarative specification to be solved.…”
Section: Motivationsmentioning
confidence: 99%
“…In Jeeves, the logical environment is always consistent and the runtime only performs decidable search routines. Jeeves differs from the Squander system [31] for unified execution of imperative and declarative code in that Jeeves propagates constraints alongside the core program rather than executing isolated constraint-based subprocedures. As with relaxed approximate programs [11], Jeeves nondeterministically provides an acceptable output for a specific class of acceptability properties.…”
Section: Related Workmentioning
confidence: 99%