Scispace (Formerly Typeset)
  1. Home
  2. Journals
  3. arXiv: Programming Languages
  4. 2009
  1. Home
  2. Journals
  3. arXiv: Programming Languages
  4. 2009
Showing papers in "arXiv: Programming Languages in 2009"
Journal Article•10.1007/S10817-009-9148-3•
Mechanized semantics for the Clight subset of the C language

[...]

Sandrine Blazy1, Xavier Leroy1•
French Institute for Research in Computer Science and Automation1
23 Jan 2009-arXiv: Programming Languages
TL;DR: In this article, the formal semantics of a large subset of the C language called Clight are presented, which includes pointer arithmetic, "struct" and "union" types, C loops and structured "switch" statements.
Abstract: This article presents the formal semantics of a large subset of the C language called Clight. Clight includes pointer arithmetic, "struct" and "union" types, C loops and structured "switch" statements. Clight is the source language of the CompCert verified compiler. The formal semantics of Clight is a big-step operational semantics that observes both terminating and diverging executions and produces traces of input/output events. The formal semantics of Clight is mechanized using the Coq proof assistant. In addition to the semantics of Clight, this article describes its integration in the CompCert verified compiler and several ways by which the semantics was validated.

147 citations

Journal Article•10.2168/LMCS-5(3:1)2009•
A Theory of Explicit Substitutions with Safe and Full Composition

[...]

Delia Kesner
15 May 2009-arXiv: Programming Languages
TL;DR: Very simple technology in named variable-style notation is used to establish a theory of explicit substitutions for the lambda-calculus which enjoys a whole set of useful properties such as full composition, simulation of one-step beta-reduction, preservation of beta-strong normalisation, strong normalisation of typed terms and confluence on metaterms.
Abstract: Many different systems with explicit substitutions have been proposed to implement a large class of higher-order languages. Motivations and challenges that guided the development of such calculi in functional frameworks are surveyed in the first part of this paper. Then, very simple technology in named variable-style notation is used to establish a theory of explicit substitutions for the lambda-calculus which enjoys a whole set of useful properties such as full composition, simulation of one-step beta-reduction, preservation of beta-strong normalisation, strong normalisation of typed terms and confluence on metaterms. Normalisation of related calculi is also discussed.

41 citations

Posted Content•
CPAchecker: A Tool for Configurable Software Verification

[...]

Dirk Beyer1, M. Erkan Keremoglu1•
Simon Fraser University1
30 Jan 2009-arXiv: Programming Languages
TL;DR: This paper presents CPAchecker, a tool and framework that aims at easy integration of new verification components and evaluates the efficiency of the current version of the tool on software-verification benchmarks from the literature, and compares it with other state-of-the-art model checkers.
Abstract: Configurable software verification is a recent concept for expressing different program analysis and model checking approaches in one single formalism. This paper presents CPAchecker, a tool and framework that aims at easy integration of new verification components. Every abstract domain, together with the corresponding operations, is required to implement the interface of configurable program analysis (CPA). The main algorithm is configurable to perform a reachability analysis on arbitrary combinations of existing CPAs. The major design goal during the development was to provide a framework for developers that is flexible and easy to extend. We hope that researchers find it convenient and productive to implement new verification ideas and algorithms using this platform and that it advances the field by making it easier to perform practical experiments. The tool is implemented in Java and runs as command-line tool or as Eclipse plug-in. We evaluate the efficiency of our tool on benchmarks from the software model checker BLAST. The first released version of CPAchecker implements CPAs for predicate abstraction, octagon, and explicit-value domains. Binaries and the source code of CPAchecker are publicly available as free software.

38 citations

Journal Article•10.2168/LMCS-5(1:3)2009•
The Safe Lambda Calculus

[...]

William Blum, C.-H. Luke Ong
16 Jan 2009-arXiv: Programming Languages
TL;DR: The safe lambda calculus is introduced, which is obtained by transposing (and generalizing) the safety condition to the setting of the simply-typed lambda calculus, and it is shown that the numeric functions representable in the safelambda calculus are exactly the multivariate polynomials; thus conditional is not definable.
Abstract: Safety is a syntactic condition of higher-order grammars that constrains occurrences of variables in the production rules according to their type-theoretic order. In this paper, we introduce the safe lambda calculus, which is obtained by transposing (and generalizing) the safety condition to the setting of the simply-typed lambda calculus. In contrast to the original definition of safety, our calculus does not constrain types (to be homogeneous). We show that in the safe lambda calculus, there is no need to rename bound variables when performing substitution, as variable capture is guaranteed not to happen. We also propose an adequate notion of beta-reduction that preserves safety. In the same vein as Schwichtenberg's 1976 characterization of the simply-typed lambda calculus, we show that the numeric functions representable in the safe lambda calculus are exactly the multivariate polynomials; thus conditional is not definable. We also give a characterization of representable word functions. We then study the complexity of deciding beta-eta equality of two safe simply-typed terms and show that this problem is PSPACE-hard. Finally we give a game-semantic analysis of safety: We show that safe terms are denoted by `P-incrementally justified strategies'. Consequently pointers in the game semantics of safe lambda-terms are only necessary from order 4 onwards.

31 citations

Journal Article•
Logics for XML

[...]

Pierre Genevès
23 Sep 2009-arXiv: Programming Languages
TL;DR: A new class of static analyzers for programs manipulating XML data allow to ensure at compile-time valuable properties such as type-safety and optimizations, for safer and more efficient XML processing.
Abstract: This work describes the theoretical and practical foundations of a system for the static analysis of XML processing languages. The system relies on a fixpoint modal logic with converse where models are finite trees. This calculus is expressive enough to capture regular tree types along with multi-directional navigation in trees. The decidability of the logic is proved in time 2^O(n) where n is the size of the input formula. XPath expressions and XML schemas are linearly translated into the logic. Based on these embeddings, several problems of major importance in XML applications are reduced to logical satisfiability. The focus is then given to a sound and complete algorithm for deciding the logic, along with crucial implementation techniques for building an effective solver. Practical experiments using a full system implementation are presented. The system appears efficient in practice for several realistic scenarios. The main application of this work is a new class of static analyzers for programs manipulating XML data. Such analyzers allow to ensure at compile-time valuable properties such as type-safety and optimizations, for safer and more efficient XML processing.

25 citations

Posted Content•
Constraint solving for high-level WCET analysis

[...]

Adrian Prantl1, Jens Knoop1, Markus Schordan1, Markus Triska2•
Vienna University of Technology1, University of Applied Sciences Technikum Wien2
12 Mar 2009-arXiv: Programming Languages
TL;DR: The TuBound approach to worst case execution time analysis, at whose heart is a constraint logic based approach for loop analysis, is highlighted.
Abstract: The safety of our day-to-day life depends crucially on the correct functioning of embedded software systems which control the functioning of more and more technical devices. Many of these software systems are time-critical. Hence, computations performed need not only to be correct, but must also be issued in a timely fashion. Worst case execution time (WCET) analysis is concerned with computing tight upper bounds for the execution time of a system in order to provide formal guarantees for the proper timing behaviour of a system. Central for this is to compute safe and tight bounds for loops and recursion depths. In this paper, we highlight the TuBound approach to this challenge at whose heart is a constraint logic based approach for loop analysis.

24 citations

Posted Content•
As time goes by: Constraint Handling Rules - A survey of CHR research from 1998 to 2007

[...]

Jon Sneyers1, Peter Van Weert1, Tom Schrijvers1, Leslie De Koninck1•
Katholieke Universiteit Leuven1
24 Jun 2009-arXiv: Programming Languages
TL;DR: Covering more than 180 publications, this new survey provides an overview of recent results in a wide range of research areas, from semantics and analysis to systems, extensions and applications.
Abstract: Constraint Handling Rules (CHR) is a high-level programming language based on multi-headed multiset rewrite rules. Originally designed for writing user-defined constraint solvers, it is now recognized as an elegant general purpose language. CHR-related research has surged during the decade following the previous survey by Fruehwirth. Covering more than 180 publications, this new survey provides an overview of recent results in a wide range of research areas, from semantics and analysis to systems, extensions and applications.

22 citations

Posted Content•
An Instruction Sequence Semigroup with Involutive Anti-Automorphisms

[...]

Jan A. Bergstra1, Alban Ponse1•
University of Amsterdam1
07 Mar 2009-arXiv: Programming Languages
TL;DR: In this paper, an algebra of instruction sequences is presented, in which programs can be represented without directional bias, in terms of the next instruction to be executed, C has both forward and backward instructions and a C-expression can be interpreted starting from any instruction.
Abstract: We introduce an algebra of instruction sequences by presenting a semigroup C in which programs can be represented without directional bias: in terms of the next instruction to be executed, C has both forward and backward instructions and a C-expression can be interpreted starting from any instruction. We provide equations for thread extraction, i.e., C's program semantics. Then we consider thread extraction compatible (anti-)homomorphisms and (anti-)automorphisms. Finally we discuss some expressiveness results.

20 citations

Posted Content•
Small-step and big-step semantics for call-by-need

[...]

Keiko Nakata1, Masahito Hasegawa2•
Tallinn University of Technology1, Research Institute for Mathematical Sciences2
27 Jul 2009-arXiv: Programming Languages
TL;DR: In this paper, the natural semantics for cyclic call-by-name lambda calculi have been proved equivalent to the reduction semantics given by Ariola and Felleisen, which is the same semantics used in this paper.
Abstract: We present natural semantics for acyclic as well as cyclic call-by-need lambda calculi, which are proved equivalent to the reduction semantics given by Ariola and Felleisen. The natural semantics are big-step and use global heaps, where evaluation is suspended and memorized. The reduction semantics are small-step and evaluation is suspended and memorized locally in let-bindings. Thus two styles of formalization describe the call-by-need strategy from different angles. The natural semantics for the acyclic calculus is revised from the previous presentation by Maraist et al. and its adequacy is ascribed to its correspondence with the reduction semantics, which has been proved equivalent to call-by-name by Ariola and Felleisen. The natural semantics for the cyclic calculus is inspired by that of Launchbury and Sestoft and we state its adequacy using a denotational semantics in the style of Launchbury; adequacy of the reduction semantics for the cyclic calculus is in turn ascribed to its correspondence with the natural semantics.

20 citations

Posted Content•
Polytool: polynomial interpretations as a basis for termination analysis of Logic programs

[...]

Manh Thang Nguyen1, Danny De Schreye1, Jürgen Giesl2, Peter Schneider-Kamp3•
Katholieke Universiteit Leuven1, RWTH Aachen University2, University of Southern Denmark3
22 Dec 2009-arXiv: Programming Languages
TL;DR: An approach that can be seen as a direct generalization of the traditional techniques in termination analysis of LPs, where linear norms and level mappings are used is shown, and a constraint-based approach for automatically generating polynomial interpretations that satisfy the termination conditions is proposed.
Abstract: Our goal is to study the feasibility of porting termination analysis techniques developed for one programming paradigm to another paradigm. In this paper, we show how to adapt termination analysis techniques based on polynomial interpretations - very well known in the context of term rewrite systems (TRSs) - to obtain new (non-transformational) ter- mination analysis techniques for definite logic programs (LPs). This leads to an approach that can be seen as a direct generalization of the traditional techniques in termination analysis of LPs, where linear norms and level mappings are used. Our extension general- izes these to arbitrary polynomials. We extend a number of standard concepts and results on termination analysis to the context of polynomial interpretations. We also propose a constraint-based approach for automatically generating polynomial interpretations that satisfy the termination conditions. Based on this approach, we implemented a new tool, called Polytool, for automatic termination analysis of LPs.

20 citations

Proceedings Article•10.1109/SERA.2010.23•
Using the General Intensional Programming System (GIPSY) for Evaluation of Higher-Order Intensional Logic (HOIL) Expressions

[...]

Serguei A. Mokhov1, Joey Paquet1•
Concordia University1
22 Jun 2009-arXiv: Programming Languages
TL;DR: The General Intensional Programming System (GIPSY) as discussed by the authors is based on the Lucid family of intensional programming languages that rely on the higher-order intensional logic (HOIL) to provide context-oriented multidimensional reasoning.
Abstract: The General Intensional Programming System (GIPSY) has been built around the Lucid family of intensional programming languages that rely on the higher-order intensional logic (HOIL) to provide context-oriented multidimensional reasoning of intensional expressions. HOIL combines functional programming with various intensional logics to allow explicit context expressions to be evaluated as first-class values that can be passed as parameters to functions and return as results with an appropriate set of operators defined on contexts. GIPSY's frameworks are implemented in Java as a collection of replaceable components for the compilers of various Lucid dialects and the demand-driven eductive evaluation engine that can run distributively. GIPSY provides support for hybrid programming models that couple intensional and imperative languages for a variety of needs. Explicit context expressions limit the scope of evaluation of math expressions (effectively a Lucid program is a mathematics or physics expression constrained by the context) in tensor physics, regular math in multiple dimensions, etc., and for cyberforensic reasoning as one of the use-cases of interest. Thus, GIPSY is a support testbed for HOIL-based languages some of which enable such reasoning, as in formal cyberforensic case analysis with event reconstruction. In this paper we discuss the GIPSY architecture, its evaluation engine and example use-cases.
Posted Content•
On the Cooperation of the Constraint Domains H, R and FD in CFLP

[...]

Sonia Estévez-Martín, Teresa Hortalá-González, Rodríguez-Artalejo, R. del Vado-Vírseda, Fernando Sáenz-Pérez, Antonio J. Fernández 
14 Apr 2009-arXiv: Programming Languages
TL;DR: In this article, a computational model for the cooperation of constraint domains and an implementation for a particular case of practical importance is presented, which supports declarative programming with lazy and possibly higher-order functions, predicates, and cooperation of different constraint domains equipped with their respective solvers, relying on a so-called Constraint Functional Logic Programming scheme.
Abstract: This paper presents a computational model for the cooperation of constraint domains and an implementation for a particular case of practical importance. The computational model supports declarative programming with lazy and possibly higher-order functions, predicates, and the cooperation of different constraint domains equipped with their respective solvers, relying on a so-called Constraint Functional Logic Programming (CFLP) scheme. The implementation has been developed on top of the CFLP system TOY, supporting the cooperation of the three domains H, R and FD, which supply equality and disequality constraints over symbolic terms, arithmetic constraints over the real numbers, and finite domain constraints over the integers, respectively. The computational model has been proved sound and complete w.r.t. the declarative semantics provided by the $CFLP$ scheme, while the implemented system has been tested with a set of benchmarks and shown to behave quite efficiently in comparison to the closest related approach we are aware of. To appear in Theory and Practice of Logic Programming (TPLP)
Posted Content•
Using Ellipsoidal Domains to Analyze Control Systems Software

[...]

Fernando Alegre, Eric Feron, Santosh Pande
10 Sep 2009-arXiv: Programming Languages
TL;DR: An abstract interpretation framework is developed that follows closely the Lyapunov methods used in proofs at the model level and describes the corresponding abstract domains, which for linear systems consist of ellipsoidal constraints.
Abstract: We propose a methodology for the automatic verification of safety properties of controllers based on dynamical systems, such as those typically used in avionics. In particular, our focus is on proving stability properties of software implementing linear and some non-linear controllers. We develop an abstract interpretation framework that follows closely the Lyapunov methods used in proofs at the model level and describe the corresponding abstract domains, which for linear systems consist of ellipsoidal constraints. These ellipsoidal domains provide abstractions for the values of state variables and must be combined with other domains that model the remaining variables in a program. Thus, the problem of automatically assigning the right type of abstract domain to each variable arises. We provide an algorithm that solves this classification problem in many practical cases and suggest how it could be generalized to more complicated cases. We then find a fixpoint by solving a matrix equation, which in the linear case is just the discrete Lyapunov equation. Contrary to most cases in software analysis, this fixpoint cannot be reached by the usual iterative method of propagating constraints until saturation and so numerical methods become essential. Finally, we illustrate our methodology with several examples.
Journal Article•10.2168/LMCS-5(3:8)2009•
Full abstraction for nominal general references

[...]

Nikos Tzevelekos
26 Jul 2009-arXiv: Programming Languages
TL;DR: In this article, a fully abstract semantics for a language with nominal general references is proposed, which is based on the game semantics for nominal sets developed by Pitts and Gabbay.
Abstract: Game semantics has been used with considerable success in formulating fully abstract semantics for languages with higher-order procedures and a wide range of computational effects. Recently, nominal games have been proposed for modelling functional languages with names. These are ordinary, stateful games cast in the theory of nominal sets developed by Pitts and Gabbay. Here we take nominal games one step further, by developing a fully abstract semantics for a language with nominal general references.
Journal Article•10.4204/EPTCS.12.5•
Session Types at the Mirror

[...]

Luca Padovani1•
University of Urbino1
29 Nov 2009-arXiv: Programming Languages
TL;DR: The authors define session types as projections of process behaviors with respect to the communication channels they use and give session types a semantics based on fair testing, which is similar to fair testing for conversation types.
Abstract: We (re)define session types as projections of process behaviors with respect to the communication channels they use In this setting, we give session types a semantics based on fair testing The outcome is a unified theory of behavioral types that shares common aspects with conversation types and that encompass features of both dyadic and multi-party session types The point of view we provide sheds light on the nature of session types and gives us a chance to reason about them in a framework where every notion, from well-typedness to the subtyping relation between session types, is semantically -rather than syntactically- grounded
Journal Article•10.7561/SACS.2012.2.253•
Indirect jumps improve instruction sequence performance

[...]

Jan A. Bergstra, Cornelis A. Middelburg
11 Sep 2009-arXiv: Programming Languages
TL;DR: In this article, it was shown that the maximal internal delays of instruction sequences on execution that are not bounded by a linear function can be increased with the elimination of indirect jump instructions.
Abstract: Instruction sequences with direct and indirect jump instructions are as expressive as instruction sequences with direct jump instructions only. We show that, in the case where the number of instructions is not bounded, we are faced with increases of the maximal internal delays of instruction sequences on execution that are not bounded by a linear function if we strive for acceptable increases of the lengths of instruction sequences on elimination of indirect jump instructions.
Posted Content•
Functional Units for Natural Numbers

[...]

Jan A. Bergstra, Cornelis A. Middelburg
10 Nov 2009-arXiv: Programming Languages
TL;DR: This paper establishes the exis- tence of a universal computable functional unit for natural numbers and related results.
Abstract: Interaction with services provided by an execution environ- ment forms part of the behaviours exhibited by instruction sequences under execution. Mechanisms related to the kind of interaction in ques- tion have been proposed in the setting of thread algebra. Like thread, service is an abstract behavioural concept. The concept of a functional unit is similar to the concept of a service, but more concrete. A state space is inherent in the concept of a functional unit, whereas it is not inherent in the concept of a service. In this paper, we establish the exis- tence of a universal computable functional unit for natural numbers and related results.
Journal Article•10.4204/EPTCS.9.9•
An Intuitive Automated Modelling Interface for Systems Biology

[...]

Ozan Kahramanoğulları, Luca Cardelli, Emmanuelle Caron
12 Nov 2009-arXiv: Programming Languages
TL;DR: A natural language interface for building stochastic p calculus models of biological systems modularly by describing their dynamics in a narrative-style language, while making amendments, refinements and extensions on the models easy.
Abstract: We introduce a natural language interface for building stochastic pi calculus models of biological systems. In this language, complex constructs describing biochemical events are built from basic primitives of association, dissociation and transformation. This language thus allows us to model biochemical systems modularly by describing their dynamics in a narrative-style language, while making amendments, refinements and extensions on the models easy. We demonstrate the language on a model of Fc-gamma receptor phosphorylation during phagocytosis. We provide a tool implementation of the translation into a stochastic pi calculus language, Microsoft Research's SPiM.
Book Chapter•10.1007/978-3-642-03466-4_8•
Transmission protocols for instruction streams

[...]

Jan A. Bergstra1, Cornelis A. Middelburg1•
University of Amsterdam1
17 Feb 2009-arXiv: Programming Languages
TL;DR: In this article, the authors describe and analyse some transmission protocols for passing instructions from a thread to a remote execution environment, where the execution environment is remote and the thread is considered in thread algebra.
Abstract: Threads as considered in thread algebra model behaviours to be controlled by some execution environment: upon each action performed by a thread, a reply from its execution environment -- which takes the action as an instruction to be processed -- determines how the thread proceeds. In this paper, we are concerned with the case where the execution environment is remote: we describe and analyse some transmission protocols for passing instructions from a thread to a remote execution environment.
Posted Content•
A progression ring for interfaces of instruction sequences, threads, and services

[...]

Jan A. Bergstra, Alban Ponse
15 Sep 2009-arXiv: Programming Languages
TL;DR: This work provides a flexible and practical notation for interfaces using an abstract datatype specification comparable to that of basic process algebra with deadlock, and defines focus-method interfaces and some connections between such interfaces and instruction sequences, giving rise to instruction sequence components.
Abstract: We define focus-method interfaces and some connections between such interfaces and instruction sequences, giving rise to instruction sequence components We provide a flexible and practical notation for interfaces using an abstract datatype specification comparable to that of basic process algebra with deadlock The structures thus defined are called progression rings We also define thread and service components Two types of composition of instruction sequences or threads and services (called `use' and `apply') are lifted to the level of components
Proceedings Article•10.1109/SERA.2010.29•
Object-Oriented Intensional Programming: Intensional Classes Using Java and Lucid

[...]

Aihua Wu1, Joey Paquet, Serguei A. Mokhov•
Concordia University1
03 Sep 2009-arXiv: Programming Languages
TL;DR: The Object-Oriented Intensional Programming (OO-IP) as mentioned in this paper is a hybrid language between object-oriented and Intensional programming languages, which combines the essential characteristics of Lucid and Java, and introduces the notion of object streams which makes it possible that each element ina Lucid stream to be an object with embedded intensional properties.
Abstract: This article introduces Object-Oriented Intensional Programming (OO-IP), a new hybrid lan-guage between Object-Oriented and Intensional Programming Languages in the sense of the latestevolutions of Lucid. This new hybrid language combines the essential characteristics of Lucid andJava, and introduces the notion of object streams which makes it is possible that each element ina Lucid stream to be an object with embedded intensional properties. Interestingly, this hybrid lan-guage also brings to Java objects the power to explicitly express and manipulate the notion of context,creating the novel concept of intensional object, i.e. objects whose evaluation is context-dependent,which are here demonstrated to be translatable into standard objects. By this new approach, weextend the use and meaning of the notion of intensional objects and enrich the meaning of objectstreams in Lucid and semantics of intensional objects in Java.Keywords: intensional programming, Java, object-oriented programming, hybrid programming lan-guages, General Intensional Programming System (GISPY)
Posted Content•
On the Generation of Test Data for Prolog by Partial Evaluation

[...]

Miguel Gómez-Zamalloa, Elvira Albert, Germán Puebla
12 Mar 2009-arXiv: Programming Languages
TL;DR: This work proposes to transform the original Prolog program into an equivalent prolog program with explicit failure by partially evaluating a Prolog interpreter which captures failing derivations w.r.t. the input program.
Abstract: In recent work, we have proposed an approach to Test Data Generation (TDG) of imperative bytecode by partial evaluation (PE) of CLP which consists in two phases: (1) the bytecode program is first transformed into an equivalent CLP program by means of interpretive compilation by PE, (2) a second PE is performed in order to supervise the generation of test-cases by execution of the CLP decompiled program. The main advantages of TDG by PE include flexibility to handle new coverage criteria, the possibility to obtain test-case generators and its simplicity to be implemented. The approach in principle can be directly applied for TDG of any imperative language. However, when one tries to apply it to a declarative language like Prolog, we have found as a main difficulty the generation of test-cases which cover the more complex control flow of Prolog. Essentially, the problem is that an intrinsic feature of PE is that it only computes non-failing derivations while in TDG for Prolog it is essential to generate test-cases associated to failing computations. Basically, we propose to transform the original Prolog program into an equivalent Prolog program with explicit failure by partially evaluating a Prolog interpreter which captures failing derivations w.r.t. the input program. Another issue that we discuss in the paper is that, while in the case of bytecode the underlying constraint domain only manipulates integers, in Prolog it should properly handle the symbolic data manipulated by the program. The resulting scheme is of interest for bringing the advantages which are inherent in TDG by PE to the field of logic programming.
Journal Article•10.2168/LMCS-5(4:2)2009•
A Step-indexed Semantics of Imperative Objects

[...]

Catalin Hritcu1, Jan Schwinghammer1•
Saarland University1
07 Jun 2009-arXiv: Programming Languages
TL;DR: It is shown that, using step-indexing, one can interpret a rich type discipline with object types, subtyping, recursive and bounded quantified types in the presence of state.
Abstract: Step-indexed semantic interpretations of types were proposed as an alternative to purely syntactic proofs of type safety using subject reduction. The types are interpreted as sets of values indexed by the number of computation steps for which these values are guaranteed to behave like proper elements of the type. Building on work by Ahmed, Appel and others, we introduce a step-indexed semantics for the imperative object calculus of Abadi and Cardelli. Providing a semantic account of this calculus using more `traditional', domain-theoretic approaches has proved challenging due to the combination of dynamically allocated objects, higher-order store, and an expressive type system. Here we show that, using step-indexing, one can interpret a rich type discipline with object types, subtyping, recursive and bounded quantified types in the presence of state.
Journal Article•
An implementation of the language lambda prolog organized around higher-order pattern unification

[...]

Gopalan Nadathur1, Xiaochu Qi1•
University of Minnesota1
01 Jan 2009-arXiv: Programming Languages
TL;DR: A new virtual machine and compilation based scheme for the language λProlog is developed by embedding a higher-order pattern unification algorithm due to Nadathur and Linnell within the well-known Warren Abstract Machine model for Prolog.
Abstract: The automation of meta-theoretic aspects of formal systems typically requires the treatment of syntactically complex objects. Thus, programs must be represented and manipulated by program development systems, mathematical expressions by computer-based algebraic systems, and logic formulas and proofs by automatic proof systems and proof assistants. The notion of bound variables plays an important role in the structures of such syntactic objects, and should therefore be reflected in their representations and properly accounted for in their manipulation. The λ-calculus was designed specifically to treat binding in a logically precise way and the terms of such a calculus turn out to be an especially suitable representational device for the application tasks of interest. Moreover, the equality relation associated with these terms and the accompanying notion of higher-order unification leads to a convenient means for analyzing and decomposing these representations in a way that respects the binding structure inherent in the formal objects. This thesis concerns the language λProlog that has been designed to provide support for the kinds of meta-programming tasks discussed above. In its essence, λProlog is a logic programming language that builds on a conventional language like Prolog by using typed λ-terms instead of first-order terms as data structures, by using higher-order unification rather than first-order unification to manipulate these data structures and by including new devices for restricting the scopes of names and of code and thereby providing the basis for realizing recursion over binding constructs. These features make λProlog a convenient programming vehicle in the domain of interest. However, they also raise significant implementation questions that must be addressed adequately if the language is to be an effective tool in these contexts. It is this task that is undertaken in this thesis. An efficient implementation of λProlog can potentially exploit the processing structure that has been previously designed for realizing Prolog. In this context, the main new issue to be treated becomes that of higher order unification. This computation has characteristics that make it difficult to embed it effectively within a low-level implementation: higher-order unification is in general undecidable, it does not admit a notion of most general unifiers and a branching search is involved in the task of looking for unifiers. However, a sub-class of this computation that is referred to as Lλ or higher-order pattern unification has been discovered that is substantially better behaved: in particular, for this class, unification is decidable, most general unifiers exist and a deterministic unification procedure can be provided. This class is also interesting from a programming point-of-view: most natural computations carried out using λProlog fall within it. Finally, a treatment of full higher-order unification within the context of λProlog can be realized by solving only higher-order pattern unification problems at intermediate stages, delaying any branching and possibly costly search to the end of the computation. This thesis examines the use of the strategy described above in providing an implementation of λProlog. In particular, it develops a new virtual machine and compilation based scheme for the language by embedding a higher-order pattern unification algorithm due to Nadathur and Linnell within the well-known Warren Abstract Machine model for Prolog. In executing this idea, it exposes and treats various auxiliary issues such as the low-level representation of λ-terms, the implementation of reduction on such terms, the optimized processing of types in computation and the representation of unification problems whose solution must be deferred till a later point in computation. Another important component of this thesis is the development of an actual implementation of λProlog—called Teyjus Version 2—that is based on the conceptual design that is presented. This system contains an emulator for the virtual machine that is written in the C language for efficiency and a compiler that is written in the OCaml language so as to enhance readability and extensibility. This mix of languages within one system raises interesting software issues that are handled. Portability across architectures for the emulator is also treated by developing a modular mapping from term representation to actual machine structures. A final contribution of the thesis is an assessment of the efficacy of the various design ideas through experiments carried out with the assistance of the system.
Posted Content•
Termination Prediction for General Logic Programs

[...]

Yi-Dong Shen1, Danny De Schreye2, Dean Voets2•
Chinese Academy of Sciences1, Katholieke Universiteit Leuven2
13 May 2009-arXiv: Programming Languages
TL;DR: An idea of termination prediction, which predicts termination of a logic program in case that neither a termination nor a non-termination proof is applicable, is introduced, and a necessary and sufficient characterization of infinite SLDNF-derivations with arbitrary (concrete or moded) queries is established.
Abstract: We present a heuristic framework for attacking the undecidable termination problem of logic programs, as an alternative to current termination/non-termination proof approaches. We introduce an idea of termination prediction, which predicts termination of a logic program in case that neither a termination nor a non-termination proof is applicable. We establish a necessary and sufficient characterization of infinite (generalized) SLDNF-derivations with arbitrary (concrete or moded) queries, and develop an algorithm that predicts termination of general logic programs with arbitrary non-floundering queries. We have implemented a termination prediction tool and obtained quite satisfactory experimental results. Except for five programs which break the experiment time limit, our prediction is 100% correct for all 296 benchmark programs of the Termination Competition 2007, of which eighteen programs cannot be proved by any of the existing state-of-the-art analyzers like AProVE07, NTI, Polytool and TALP.
Posted Content•
Inconsistency Robustness in Foundations: Mathematics self proves its own Consistency and Other Matters

[...]

Carl Hewitt
20 Jul 2009-arXiv: Programming Languages
TL;DR: How considerations of Inconsistency Robustness have recently influenced the foundations of mathematics for Computer Science continuing a tradition developing the sociological basis for foundations is reported.
Abstract: Inconsistency Robustness is performance of information systems with pervasively inconsistent information. Inconsistency Robustness of the community of professional mathematicians is their performance repeatedly repairing contradictions over the centuries. In the Inconsistency Robustness paradigm, deriving contradictions have been a progressive development and not "game stoppers." Contradictions can be helpful instead of being something to be "swept under the rug" by denying their existence, which has been repeatedly attempted by Establishment Philosophers (beginning with some Pythagoreans). Such denial has delayed mathematical development. This article reports how considerations of Inconsistency Robustness have recently influenced the foundations of mathematics for Computer Science continuing a tradition developing the sociological basis for foundations. The current common understanding is that G\"odel proved "Mathematics cannot prove its own consistency, if it is consistent." However, the consistency of mathematics is proved by a simple argument in this article. Consequently, the current common understanding that G\"odel proved "Mathematics cannot prove its own consistency, if it is consistent" is inaccurate. Wittgenstein long ago showed that contradiction in mathematics results from the kind of "self-referential" sentence that G\"odel used in his argument that mathematics cannot prove its own consistency. However, using a typed grammar for mathematical sentences, it can be proved that the kind "self-referential" sentence that G\"odel used in his argument cannot be constructed because required the fixed point that G\"odel used to the construct the "self-referential" sentence does not exist. In this way, consistency of mathematics is preserved without giving up power.
Posted Content•
Logical Algorithms meets CHR: A meta-complexity result for Constraint Handling Rules with rule priorities

[...]

Leslie De Koninck1•
Katholieke Universiteit Leuven1
09 Jan 2009-arXiv: Programming Languages
TL;DR: In this article, the authors investigated the relationship between the Logical Algorithms language (LA) of Ganzinger and McAllester and Constraint Handling Rules (CHR).
Abstract: This paper investigates the relationship between the Logical Algorithms language (LA) of Ganzinger and McAllester and Constraint Handling Rules (CHR). We present a translation schema from LA to CHR-rp: CHR with rule priorities, and show that the meta-complexity theorem for LA can be applied to a subset of CHR-rp via inverse translation. Inspired by the high-level implementation proposal for Logical Algorithm by Ganzinger and McAllester and based on a new scheduling algorithm, we propose an alternative implementation for CHR-rp that gives strong complexity guarantees and results in a new and accurate meta-complexity theorem for CHR-rp. It is furthermore shown that the translation from Logical Algorithms to CHR-rp combined with the new CHR-rp implementation, satisfies the required complexity for the Logical Algorithms meta-complexity result to hold.
Posted Content•
A Lightweight Combination of Semantics for Non-deterministic Functions

[...]

Francisco Javier López-Fraguas1, Juan Rodríguez-Hortalá, Jaime Sánchez-Hernández1•
Complutense University of Madrid1
12 Mar 2009-arXiv: Programming Languages
TL;DR: This paper proposes an extension of existing call- time choice based languages, to provide support for run-time choice in localized parts of a program, based on the system Toy.
Abstract: The use of non-deterministic functions is a distinctive feature of modern functional logic languages. The semantics commonly adopted is call-time choice, a notion that at the operational level is related to the sharing mechanism of lazy evaluation in functional languages. However, there are situations where run-time choice, closer to ordinary rewriting, is more appropriate. In this paper we propose an extension of existing call-time choice based languages, to provide support for run-time choice in localized parts of a program. The extension is remarkably simple at three relevant levels: syntax, formal operational calculi and implementation, which is based on the system Toy.
Posted Content•
Correctness Kernels of Abstract Interpretations

[...]

Roberto Giacobazzi1, Francesco Ranzato2•
University of Verona1, University of Padua2
25 Oct 2009-arXiv: Programming Languages
TL;DR: This paper introduces the notion of correctness kernel of an abstract interpretation, a methodology for simplifying abstract domains, i.e. removing abstract values from them, in a maximal way while retaining exactly the same approximate behavior of the system under analysis.
Abstract: In abstract interpretation-based static analysis, approximation is encoded by abstract domains. They provide systematic guidelines for designing abstract semantic functions that approximate some concrete system behaviors under analysis. It may happen that an abstract domain contains redundant information for the specific purpose of approximating a given concrete semantic function. This paper introduces the notion of correctness kernel of abstract interpretations, a methodology for simplifying abstract domains, i.e. removing abstract values from them, in a maximal way while retaining exactly the same approximate behavior of the system under analysis. We show that in abstract model checking correctness kernels provide a simplification paradigm of the abstract state space that is guided by examples, meaning that this simplification preserves spuriousness of examples (i.e., abstract paths). In particular, we show how correctness kernels can be integrated with the well-known CEGAR (CounterExample-Guided Abstraction Refinement) methodology.
Posted Content•
Better Termination for Prolog with Constraints

[...]

Markus Triska1, Ulrich Neumerkel1, Jan Wielemaker2•
Vienna University of Technology1, University of Amsterdam2
12 Mar 2009-arXiv: Programming Languages
TL;DR: Improved unification modes meet the requirements of norm based analysers by offering dynamic occurs-check detection and a generalized finite domain solver overcomes the shortcomings of conventional arithmetic without significant runtime overhead.
Abstract: Termination properties of actual Prolog systems with constraints are fragile and difficult to analyse. The lack of the occurs-check, moded and overloaded arithmetical evaluation via is/2 and the occasional nontermination of finite domain constraints are all sources for invalidating termination results obtained by current termination analysers that rely on idealized assumptions. In this paper, we present solutions to address these problems on the level of the underlying Prolog system. Improved unification modes meet the requirements of norm based analysers by offering dynamic occurs-check detection. A generalized finite domain solver overcomes the shortcomings of conventional arithmetic without significant runtime overhead. The solver offers unbounded domains, yet propagation always terminates. Our work improves Prolog's termination and makes Prolog a more reliable target for termination and type analysis. It is part of SWI-Prolog since version 5.6.50.

Tools

SciSpace AgentBiomedical AgentSciSpace RecruitSciSpace for EnterpriseAgent GalleryChat with PDFLiterature ReviewAI WriterFind TopicsParaphraserCitation GeneratorExtract DataAI DetectorCitation Booster

Learn

ResourcesLive Workshops

SciSpace

CareersSupportBrowse PapersPricingSciSpace Affiliate ProgramCancellation & Refund PolicyTermsPrivacyData Sources

Directories

PapersTopicsJournalsAuthorsConferencesInstitutionsCitation StylesWriting templates

Extension & Apps

SciSpace Chrome ExtensionSciSpace Mobile App

Contact

support@scispace.com
SciSpace

© 2026 | PubGenius Inc. | Suite # 217 691 S Milpitas Blvd Milpitas CA 95035, USA

soc2
Secured by Delve