Harald Søndergaard

dblp:s/HaraldSondergaard · DBLP profile ↗
← Back
59ranked-venue papers
6as first author
8since 2021 · last 2024
0000-0002-2352-1883ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 39 · 2 first-author · 7 since 2021Theory of computation · 13 · 3 first-author · 1 since 2021Artificial intelligence and machine learning · 8Human-computer interaction and ubiquitous computing · 3 · 1 first-author · 1 since 2021Systems, architecture and hardware · 2Databases, data management, data science and information retrieval · 1Graphics, computer vision, multimedia, augmented reality and games · 1Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author
YearPublicationVenuePosition
2024 The Genesis of Mix: Early Days of Self-Applicable Partial Evaluation (Invited Contribution)
abstract
Forty years ago development started on Mix, a partial evaluator designed specifically for the purpose of self-application. The effort, led by Neil D. Jones at the University of Copenhagen, eventually demonstrated that non-trivial compilers could be generated automatically by applying a partial evaluator to itself. The possibility, in theory, of such self-application had been known for more than a decade, but remained unrealized by the start of 1984. We describe the genesis of Mix, including the research environment, the challenges, and the main insights that led to success. We emphasize the critical role played by program annotation as a pre-processing step, later automated in the form of binding-time analysis.
Peter Sestoft, Harald Søndergaard
PEPM2
2024 A lightweight approach to nontermination inference using Constrained Horn Clauses
Bishoksan Kafle, Graeme Gange, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
Softw. Syst. Model.4
2022 Programming to Learn: Logic and Computation from a Programming Perspective
abstract
Programming problems are commonly used as a learning and assessment activity for learning to program. We believe that programming problems can be effective for broader learning goals. In our large-enrolment course, we have designed special programming problems relevant to logic, discrete mathematics, and the theory of computation, and we have used them for formative and summative assessment. In this report, we reflect on our experience. We aim to leverage our students' programming backgrounds by offering a code-based formalism for our mathematical syllabus. We find we can translate many traditional questions into programming problems of a special kind - calling for 'programs' as simple as a single expression, such as a formula or automaton represented in code. A web-based platform enables self-paced learning with rapid contextual corrective feedback, and helps us scale summative assessment to the size of our cohort. We identify several barriers arising with our approach and discuss how we have attempted to negate them. We highlight the potential of programming problems as a digital learning activity even beyond a logic and computation course.
Matthew Farrugia-Roberts, Bryn Jeffries, Harald Søndergaard
ITiCSE (1)3
2021 String Abstract Domains and Their Combination
Harald Søndergaard
LOPSTR1
2021 Disjunctive Interval Analysis
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
SAS4
2021 Lightweight Nontermination Inference with CHCs
Bishoksan Kafle, Graeme Gange, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
SEFM4
2021 A Fresh Look at Zones and Octagons
abstract
Zones and Octagons are popular abstract domains for static program analysis. They enable the automated discovery of simple numerical relations that hold between pairs of program variables. Both domains are well understood mathematically but the detailed implementation of static analyses based on these domains poses many interesting algorithmic challenges. In this article, we study the two abstract domains, their implementation and use. Utilizing improved data structures and algorithms for the manipulation of graphs that represent difference-bound constraints, we present fast implementations of both abstract domains, built around a common infrastructure. We compare the performance of these implementations against alternative approaches offering the same precision. We quantify the differences in performance by measuring their speed and precision on standard benchmarks. We also assess, in the context of software verification, the extent to which the improved precision translates to better verification outcomes. Experiments demonstrate that our new implementations improve the state of the art for both Zones and Octagons significantly.
Graeme Gange, Zequn Ma, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
ACM Trans. Program. Lang. Syst.5
2021 Transformation-Enabled Precondition Inference
abstract
Abstract Precondition inference is a non-trivial problem with important applications in program analysis and verification. We present a novel iterative method for automatically deriving preconditions for the safety and unsafety of programs. Each iteration maintains over-approximations of the set of safe and unsafe initial states, which are used to partition the program’s initial states into those known to be safe, known to be unsafe and unknown. We then construct revised programs with those unknown initial states and iterate the procedure until the approximations are disjoint or some termination criteria are met. An experimental evaluation of the method on a set of software verification benchmarks shows that it can infer precise preconditions (sometimes optimal) that are not possible using previous methods.
Bishoksan Kafle, Graeme Gange, Peter J. Stuckey, Peter Schachte, Harald Søndergaard
Theory Pract. Log. Program.5
2020 String Constraint Solving: Past, Present and Future
abstract
String constraint solving is an important emerging field, given the ubiquity of strings over different fields such as formal analysis, automated testing, database query processing, and cybersecurity. This paper highlights the current state-of-the-art for string constraint solving, and identifies future challenges in this field.
Roberto Amadini, Graeme Gange, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
ECAI4
2020 Algorithm Selection for Dynamic Symbolic Execution: A Preliminary Study
Roberto Amadini, Graeme Gange, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
LOPSTR4
2019 Dissecting Widening: Separating Termination from Information
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
APLAS4
2019 Optimal Bounds for Floating-Point Addition in Constant Time
abstract
Reasoning about floating-point numbers is notoriously difficult, owing to the lack of convenient algebraic properties such as associativity. This poses a substantial challenge for program analysis and verification tools which rely on precise floating-point constraint solving. Currently, interval methods in this domain often exhibit slow convergence even on simple examples. We present a new theorem supporting efficient computation of exact bounds of the intersection of a rectangle with the preimage of an interval under floating-point addition, in any radix or rounding mode. We thus give an efficient method of deducing optimal bounds on the components of an addition, solving the convergence problem.
Mak Andrlon, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
ARITH3
2019 Constraint Programming for Dynamic Symbolic Execution of JavaScript
Roberto Amadini, Mak Andrlon, Graeme Gange, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
CPAIOR5
2019 Wombit: A Portfolio Bit-Vector Solver Using Word-Level Propagation
Harald Søndergaard, Peter J. Stuckey
J. Autom. Reason.2
2018 Reference Abstract Domains and Applications to String Analysis
abstract
Abstract interpretation is a well established theory that supports reasoning about the run-time behaviour of programs. It achieves tractable reasoning by considering abstractions of run-time states, rather than the states themselves. The chosen set of abstractions is referred to as the abstract domain. We develop a novel framework for combining (a possibly large number of) abstract domains. It achieves the effect of the so-called reduced product without requiring a quadratic number of functions to translate information among abstract domains. A central notion is a reference domain, a medium for information exchange. Our approach suggests a novel and simpler way to manage the integration of large numbers of abstract domains. We instantiate our framework in the context of string analysis. Browser-embedded dynamic programming languages such as JavaScript and PHP encourage the use of strings as a universal data type for both code and data values. The ensuing vulnerabilities have made string analysis a focus of much recent research. String analysis tends to combine many elementary string abstract domains, each designed to capture a specific aspect of strings. For this instance the set of regular languages, while too expensive to use directly for analysis, provides an attractive reference domain, enabling the efficient simulation of reduced products of multiple string abstract domains.
Roberto Amadini, Graeme Gange, François Gauthier 0001, Alexander Jordan, Peter Schachte, Harald Søndergaard, Peter J. Stuckey, Chenyi Zhang 0001
Fundam. Informaticae6
2018 An iterative approach to precondition inference using constrained Horn clauses
abstract
Abstract We present a method for automatic inference of conditions on the initial states of a program that guarantee that the safety assertions in the program are not violated. Constrained Horn clauses (CHCs) are used to model the program and assertions in a uniform way, and we use standard abstract interpretations to derive an over-approximation of the set ofunsafeinitial states. The precondition then is the constraint corresponding to the complement of that set, under-approximating the set ofsafeinitial states. This idea of complementation is not new, but previous attempts to exploit it have suffered from the loss of precision. Here we develop an iterative specialisation algorithm to give more precise, and in some cases optimal safety conditions. The algorithm combines existing transformations, namely constraint specialisation, partial evaluation and a trace elimination transformation. The last two of these transformations perform polyvariant specialisation, leading to disjunctive constraints which improve precision. The algorithm is implemented and tested on a benchmark suite of programs from the literature in precondition inference and software verification competitions.
Bishoksan Kafle, John P. Gallagher, Graeme Gange, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
Theory Pract. Log. Program.5
2017 Leveraging abstract interpretation for efficient dynamic symbolic execution
abstract
Dynamic Symbolic Execution (DSE) is a technique to automatically generate test inputs by executing a program with concrete and symbolic values simultaneously. A key challenge in DSE is scalability; executing all feasible program paths is not possible, owing to the potentially exponential or infinite number of paths. Loops are a main source of path explosion, in particular where the number of iterations depends on a program's input. Problems arise because DSE maintains symbolic values that capture only the dependencies on symbolic inputs. This ignores control dependencies, including loop dependencies that depend indirectly on the inputs. We propose a method to increase the coverage achieved by DSE in the presence of input-data dependent loops and loop dependent branches. We combine DSE with abstract interpretation to find indirect control dependencies, including loop and branch indirect dependencies. Preliminary results show that this results in better coverage, within considerably less time compared to standard DSE.
Eman Alatawi, Harald Søndergaard, Tim Miller 0001
ASE2
2017 A Benders Decomposition Approach to Deciding Modular Linear Integer Arithmetic
Bishoksan Kafle, Graeme Gange, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
SAT4
2017 Combining String Abstract Domains for JavaScript Analysis: An Evaluation
Roberto Amadini, Alexander Jordan, Graeme Gange, François Gauthier 0001, Peter Schachte, Harald Søndergaard, Peter J. Stuckey, Chenyi Zhang 0001
TACAS (1)6
2016 Compositional Symbolic Execution: Incremental Solving Revisited
abstract
Symbolic execution can automatically explore different execution paths in a system under test and generate tests to precisely cover them. It has two main advantages-being automatic and thorough within a theory-and has many successful applications. The bottleneck of symbolic execution currently is the computation consumption for complex systems. Compositional Symbolic Execution (CSE) introduces a summarisation module to eliminate the redundancy in the exploration of repeatedly encountered code. In our previous work, we generalised the summarisation for any code fragments instead of functions. In this paper, we transplant this idea onto LLVM with many additional features, one of them being the use of incremental solving. We show that the combination of CSE and incremental solving is mutually beneficial. The obvious weakness of CSE is the lack of context during summarisation. We discuss the use of assumption-based features, available in modern constraint solvers, as a way to overcome this problem.
Yude Lin, Tim Miller 0001, Harald Søndergaard
APSEC3
2016 A Bit-Vector Solver with Word-Level Propagation
Harald Søndergaard, Peter J. Stuckey
CPAIOR2
2016 Exploiting Sparsity in Difference-Bound Matrices
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
SAS4
2016 An Abstract Domain of Uninterpreted Functions
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
VMCAI4
2016 A complete refinement procedure for regular separability of context-free languages
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
Theor. Comput. Sci.4
2015 Horn clauses as an intermediate representation for program analysis and transformation
abstract
Abstract Many recent analyses for conventional imperative programs begin by transforming programs into logic programs, capitalising on existing LP analyses and simple LP semantics. We propose using logic programs as an intermediate program representation throughout the compilation process. With restrictions ensuring determinism and single-modedness, a logic program can easily be transformed to machine language or other low-level language, while maintaining the simple semantics that makes it suitable as a language for program analysis and transformation. We present a simple LP language that enforces determinism and single-modedness, and show that it makes a convenient program representation for analysis and transformation.
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
Theory Pract. Log. Program.4
2014 Analyzing Array Manipulating Programs by Program Transformation
J. Robert M. Cornish, Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
LOPSTR5
2014 Four-Valued Reasoning and Cyclic Circuits
abstract
Allowing cycles in a logic circuit can be advantageous, for example, by reducing the number of gates required to implement a given Boolean function, or a set of functions. However, a cyclic circuit may easily be ill behaved. For instance, it may have some output wire oscillation instead of reaching a steady state. Propositional three-valued logic has long been used in tests for good behavior of cyclic circuits; a symbolic evaluation method known as ternary analysis provides one criterion for good behavior under certain assumptions about wire and gate delay. We revisit ternary analysis and argue for the use of four truth values. The fourth truth value allows for the distinction of undefined and underspecified behavior. Ability to under specify behavior is useful, because, in a quest for smaller circuits, an implementor can capitalize on degrees of freedom offered in the specification. Moreover, a fourth truth value is attractive because, rather than complicating (ternary) circuit analysis, it introduces a pleasant symmetry, in the form of contra-duality, as well as providing a convenient framework for manipulating specifications. We use this symmetry to provide fixed point results that clarify how two-, three-, and four-valued analyses are related, and to explain some observations about ternary analysis.
Graeme Gange, Benjamin Horsfall, Lee Naish, Harald Søndergaard
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.4
2014 Synthesizing Optimal Switching Lattices
abstract
The use of nanoscale technologies to create electronic devices has revived interest in the use of regular structures for defining complex logic functions. One such structure is the switching lattice, a two-dimensional lattice of four-terminal switches. We show how to directly construct switching lattices of polynomial size from arbitrary logic functions; we also show how to synthesize minimal-sized lattices by translating the problem to the satisfiability problem for a restricted class of quantified Boolean formulas. The synthesis method is an anytime algorithm that uses modern SAT solving technology and dichotomic search. It improves considerably on an earlier proposal for creating switching lattices for arbitrary logic functions.
Graeme Gange, Harald Søndergaard, Peter J. Stuckey
ACM Trans. Design Autom. Electr. Syst.2
2014 Interval Analysis and Machine Arithmetic: Why Signedness Ignorance Is Bliss
abstract
The most commonly used integer types have fixed bit-width, making it possible for computations to “wrap around,” and many programs depend on this behaviour. Yet much work to date on program analysis and verification of integer computations treats integers as having infinite precision, and most analyses that do respect fixed width lose precision when overflow is possible. We present a novel integer interval abstract domain that correctly handles wrap-around. The analysis is signedness agnostic. By treating integers as strings of bits, only considering signedness for operations that treat them differently, we produce precise, correct results at a modest cost in execution time.
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
ACM Trans. Program. Lang. Syst.4
2014 Truth versus information in logic programming
abstract
Abstract The semantics of logic programs was originally described in terms of two-valued logic. Soon, however, it was realised that three-valued logic had some natural advantages, as it provides distinct values not only for truth and falsehood but also for “undefined”. The three-valued semantics proposed by Fitting (Fitting, M. 1985. A Kripke–Kleene semantics for logic programs.Journal of Logic Programming 2, 4, 295–312) and Kunen (Kunen, K. 1987. Negation in logic programming.Journal of Logic Programming 4, 4, 289–308) are closely related to what is computed by a logic program, the third truth value being associated with non-termination. A different three-valued semantics, proposed by Naish, shared much with those of Fitting and Kunen but incorporated allowances for programmer intent, the third truth value being associated with underspecification. Naish used an (apparently) novel “arrow” operator to relate the intended meaning of left and right sides of predicate definitions. In this paper we suggest that the additional truth values of Fitting/Kunen and Naish are best viewed as duals. We use Belnap's four-valued logic (Belnap, N. D. 1977. A useful four-valued logic. InModern Uses of Multiple-Valued Logic, J. M. Dunn and G. Epstein, Eds. D. Reidel, Dordrecht, Netherlands, 8–37), also used elsewhere by Fitting, to unify the two three-valued approaches. The truth values are arranged in a bilattice, which supports the classical ordering on truth values as well as the “information ordering”. We note that the “arrow” operator of Naish (and our four-valued extension) is essentially the information ordering, whereas the classical arrow denotes the truth ordering. This allows us to shed new light on many aspects of logic programming, including program analysis, type and mode systems, declarative debugging and the relationships between specifications and programs, and successive execution states of a program.
Lee Naish, Harald Søndergaard
Theory Pract. Log. Program.2
2013 Solving Difference Constraints over Modular Arithmetic
Graeme Gange, Harald Søndergaard, Peter J. Stuckey, Peter Schachte
CADE2
2013 Abstract Interpretation over Non-lattice Abstract Domains
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
SAS4
2013 Unbounded Model-Checking with Interpolation for Regular Language Constraints
Graeme Gange, Jorge A. Navas, Peter J. Stuckey, Harald Søndergaard, Peter Schachte
TACAS4
2013 Failure tabled constraint logic programming by interpolation
abstract
Abstract We present a new execution strategy for constraint logic programs called Failure Tabled CLP. Similarly to Tabled CLP our strategy records certain derivations in order to prune further derivations. However, our method only learns from failed derivations. This allows us to compute interpolants rather than constraint projection for generation of reuse conditions. As a result, our technique can be used where projection is too expensive or does not exist. Our experiments indicate that Failure Tabling can speed up the execution of programs with many redundant failed derivations as well as achieve termination in the presence of infinite executions.
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
Theory Pract. Log. Program.4
2012 Signedness-Agnostic Program Analysis: Precise Integer Bounds for Low-Level Code
Jorge A. Navas, Peter Schachte, Harald Søndergaard, Peter J. Stuckey
APLAS3
2010 Automatic Abstraction for Congruences
Andy King, Harald Søndergaard
VMCAI2
2010 Information loss in knowledge compilation: A comparison of Boolean envelopes
Peter Schachte, Harald Søndergaard, Leigh Whiting, Kevin Henshall
Artif. Intell.2
2009 Learning from and with peers: the different roles of student peer reviewing
abstract
There are many different approaches to student peer assessment. In this paper I lay out the pedagogical philosophy behind my own use of student peer reviews. These should not only be seen as adding to the amount of formative feedback in a class, nor are they only about the development of certain higher-order cognitive skills. Properly aligned with an overall assessment strategy, peer reviewing can help build a stronger learning community. I describe such a strategy and my experience using PRAZE, an online tool for student peer reviewing, as well as students' response to the tool and its use.
Harald Søndergaard
ITiCSE1
2009 State Joining and Splitting for the Symbolic Execution of Binaries
Trevor Hansen, Peter Schachte, Harald Søndergaard
RV3
2008 Inferring Congruence Equations Using SAT
Andy King, Harald Søndergaard
CAV2
2006 Closure Operators for ROBDDs
Peter Schachte, Harald Søndergaard
VMCAI2
2002 Exception analysis for non-strict languages
abstract
In this paper we present the first exception analysis for a non-strict language. We augment a simply-typed functional language with exceptions, and show that we can define a type-based inference system to detect uncaught exceptions. We have implemented this exception analysis in the GHC compiler for Haskell, which has been recently extended with exceptions. We give empirical evidence that the analysis is practical.
Kevin Glynn, Peter J. Stuckey, Martin Sulzmann, Harald Søndergaard
ICFP4
2001 Higher-Precision Groundness Analysis
Michael Codish, Samir Genaim, Harald Søndergaard, Peter J. Stuckey
ICLP3
1999 A strategy for managing content complexity in algorithm animation
abstract
Computer animation is an excellent medium for capturing the dynamic nature of data structure manipulations, and can be used to advantage in the teaching of algorithms and data structures. A major educational issue is the necessity of providing a means for the student to manage the complexity of the material. We have addressed this issue in a multimedia teaching tool called "Algorithms in Action" by allowing students to view an algorithm at varying levels of detail. Starting with a high level pseudocode description of the algorithm, with accompanying high level animation and textual explanation, students can expand sections of the pseudocode to expose more detail. Animation and explanation are controlled in a coordinated fashion, becoming correspondingly more detailed as the pseudocode is expanded. The tool also supports dofferem , pdes. corresponding to different stages in the learning process. Student feedback suggests that the availability of multiple levels detail and the facility for the user to control the level of detail being viewed is an effective way to manage content complexity.
Linda Stern, Harald Søndergaard, Lee Naish
ITiCSE2
1999 Sharing and groundness dependencies in logic programs
abstract
We investigate Jacobs and Langen's Sharing domain, introduced for the analysis of variable sharing in logic programs, and show that it is isomorphic to Marriott and Søndergaard's Pos domain, introduced for the analysis of groundness dependencies. Our key idea is to view the sets of variables in a Sharing domain element as the models of a corresponding Boolean function. This leads to a recasting of sharing analysis in terms of the property of “not being affected by the binding of a single variable.” Such an “unaffectedness dependency” analysis has close connections with groundness dependency analysis using positive Boolean functions. This new view improves our understanding of sharing analysis, and leads to an elegant expression of its combination with groundness dependency analysis based on the reduced product of Sharing and Pos. It also opens up new avenues for the efficient implementation of sharing analysis, for example using reduced order binary decision diagrams, as well as efficient implementation of the reduced product, using domain factorizations.
Michael Codish, Harald Søndergaard, Peter J. Stuckey
ACM Trans. Program. Lang. Syst.2
1998 Two Classes of Boolean Functions for Dependency Analysis
Tania Armstrong, Kim Marriott, Peter Schachte, Harald Søndergaard
Sci. Comput. Program.4
1998 A Practical Object-Oriented Analysis Engine for CLP
abstract
The incorporation of global program analysis into recent compilers for Constraint Logic Programming (CLP) languages has greatly improved the efficiency of compiled programs. We present a global analyser based on abstract interpretation. Unlike traditional optimizers, whose designs tend to be ad hoc, the analyser has been designed with flexibility in mind. The analyser is incremental, allowing substantial program transformations by a compiler without requiring redundant re-computation of analysis data. The analyser is also generic in that it can perform a large number of different program analyses. Furthermore, the analyser has an object-oriented design, enabling it to be adapted to different applications easily and allowing it to be used with various CLP languages with simple modifications. As an example of this generality, we sketch the use of the analyser in two different applications involving two distinct CLP languages: an optimizing compiler for CLP(R) programs and an application for detecting occur-check problems in Prolog programs. © 1998 John Wiley & Sons Ltd.
Kim Marriott, Harald Søndergaard, Peter J. Stuckey
Softw. Pract. Exp.2
1997 Abstract Interpretation of Active Rules and its Use in Termination Analysis
James Bailey 0001, Lobel Crnogorac, Kotagiri Ramamohanarao, Harald Søndergaard
ICDT4
1997 Termination Analysis for Mercury
Chris Speirs, Zoltan Somogyi, Harald Søndergaard
SAS3
1996 Immediate Fixpoints and Their Use in Groundness Analysis
Harald Søndergaard
FSTTCS1
1996 A Comparison of Three Occur-Check Analysers
Lobel Crnogorac, Andrew D. Kelly, Harald Søndergaard
SAS3
1996 Two Applications of an Incremental Analysis Engine for (Constraint) Logic Programs
Andrew D. Kelly, Kim Marriott, Harald Søndergaard, Peter J. Stuckey
SAS3
1995 An Optimizing Compiler for CLP(R)
Andrew D. Kelly, Andrew D. Macdonald, Kim Marriott, Harald Søndergaard, Peter J. Stuckey, Roland H. C. Yap
CP4
1994 Boolean Functions for Dependency Analysis: Algebraic Properties and Efficient Representation
Tania Armstrong, Kim Marriott, Peter Schachte, Harald Søndergaard
SAS4
1994 Denotational Abstract Interpretation of Logic Programs
abstract
Logic-programming languages are based on a principle of separation “logic” and “control.”. This means that they can be given simple model-theoretic semantics without regard to any particular execution mechanism (or proof procedure, viewing execution as theorem proving). Although the separation is desirable from a semantical point of view, it makes sound, efficient implementation of logic-programming languages difficult. The lack of “control information” in programs calls for complex data-flow analysis techniques to guide execution. Since data-flow analysis furthermore finds extensive use in error-finding and transformation tools, there is a need for a simple and powerful theory of data-flow analysis of logic programs. This paper offers such a theory, based on F. Nielson's extension of P. Cousot and R. Cousot's abstract interpretation . We present a denotational definition of the semantics of definite logic programs. This definition is of interest in its own right because of its compactness. Stepwise we develop the definition into a generic data-flow analysis that encompasses a large class of data-flow analyses based on the SLD execution model. We exemplify one instance of the definition by developing a provably correct groundness analysis to predict how variables may be bound to ground terms during execution. We also discuss implementation issues and related work.
Kim Marriott, Harald Søndergaard, Neil D. Jones
ACM Trans. Program. Lang. Syst.2
1992 Non-Determinism in Functional Languages
abstract
The introduction of a non-deterministic operator in even a very simple functional programming language gives rise to a plethora of semantic questions. These questions are not only concerned with the choice operator itself. A surprisingly large number of different parameter passing mechanisms are made possible by the introduction of bounded non-determinism. The diversity of semantic possibilities is examined systematically using denotational definitions based on mathematical structures called power domains
Harald Søndergaard, Peter Sestoft
Comput. J.1
1990 Referential Transparency, Definiteness and Unfoldability
Harald Søndergaard, Peter Sestoft
Acta Informatica1
1986 An Application of Abstract Interpretation of Logic Programs: Occur Check Reduction
Harald Søndergaard
ESOP1
1985 An Experiment in Partial Evaluation: The Generation of a Compiler Generator
Neil D. Jones, Peter Sestoft, Harald Søndergaard
RTA3