Referential transparency, definiteness and unfoldability

@article{Sndergaard2004ReferentialTD,
  title={Referential transparency, definiteness and unfoldability},
  author={Harald S{\o}ndergaard and Peter Sestoft},
  journal={Acta Informatica},
  year={2004},
  volume={27},
  pages={505-517}
}
SummaryThe term “referential transparency” is frequently used to indicate that a programming language has certain useful substitution properties. We observe, however, that the formal and informal definitions given in the literature are not equivalent and we investigate their relationships. To this end, we study the definitions in the context of a simple expression language and show that in the presence of non-determinism, the differences between the definitions are manifest. We propose a… 

Correctness of Non-determinism Analyses in a Parallel-Functional Language

TLDR
A “maximal” denotational semantics for Eden in the sense that the set of possible values produced by an expression is bigger than the actual one is defined, which is enough to prove the correctness of the analyses of non-determinism analyses.

Functional Approaches to Constraint Handling and State Change

TLDR
This chapter shows how referential transparency is compromised in the presence of certain forms of state change, and outlines a number of solutions to this problem.

Infinite Unfolding and Transformations of Nondeterministic Programs

  • B. Lisper
  • Computer Science
    Fundam. Informaticae
  • 2005
TLDR
The reported work formalises the intuitive idea that two recursive programs ought to be equivalent, also in a nondeterministic setting, if they can be symbolically unfolded, through deterministic reductions, to the same, possibly infinite, term.

Mars: an imperative/declarative higher-order programming language with automatic destructive update

TLDR
This thesis presents a framework for classifying programming languages according to the benefits of pure programming, and presents the design and implementation of a new programming language, Mars, which allows the programmer to write imperative-style code using Python syntax, yet has thebenefits of a language with referential transparency.

Non-determinism analyses in a parallel-functional language

TLDR
Several non-determinism analyses developed for Eden aimed at detecting the parts of the program that, even in the presence of a process merge, still exhibit a deterministic behaviour are described.

Semantics of under-determined expressions

TLDR
This work considers a simple functional language including under-determined expressions and presents a denotational semantics for the language along with a set of proof rules for reasoning about properties of under-Determined expressions.

Implementing declarative parallel bottom-avoiding choice

TLDR
The design, semantics, implementation and use of a family of bottom-avoiding choice operators for Glasgow parallel Haskell are presented and their effectiveness is demonstrated by comparing the parallel performance of the speculative search with naive and 'perfect' implementations.

Non-determinism in Functional Languages

TLDR
The introduction of a non-deterministic operator in even a very simple functional programming language gives rise to a plethora of semantic questions and the diversity of semantic possibilities is examined systematically using denotational definitions based on mathematical structures called power domains, resulting in an improved understanding of the different kinds of nondeterminism and the properties of different kind of non-Deterministic languages.

Semantics of the VDM Real-Time Dialect

TLDR
In this technical report a semantic model is provided for the Real-Time dialect of the Vienna Development Method, which builds upon both the formal semantics providing for the ISO standard VDM Specification Language and on other work on the core of the VDM-RT notation.

A Non-unified View of Modelling, Specification and Programming

TLDR
This paper argues that because they serve different purposes, real care should be taken to distinguish them during development and recommends exploiting intersections between them where they arise.
...

References

SHOWING 1-10 OF 28 REFERENCES

Denotational Semantics

  • P. Mosses
  • Computer Science
    Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics
  • 1990

Parameter-passing mechanisms and nondeterminism

The problem of defining an adequate semantics for recursive definitions which allow various types of parameter-passing mechanisms has generated a considerable amount of interest in the literature.

Word and Object

TLDR
This edition offers a new preface by Quine's student and colleague Dagfinn Follesdal that describes the never-realized plans for a second edition of Word and Object, in which Quine would offer a more unified treatment of the public nature of meaning, modalities, and propositional attitudes.

Fundamental Concepts in Programming Languages

  • C. Strachey
  • Computer Science
    High. Order Symb. Comput.
  • 2000
This paper forms the substance of a course of lectures given at the International Summer School in Computer Programming at Copenhagen in August, 1967. The lectures were originally given from notes

Fundamentals of Programming Languages

  • E. Horowitz
  • Computer Science
    Springer Berlin Heidelberg
  • 1984
TLDR
Though at the time of writing this it is unclear how popular or influential Ada will become, I have decided to select many examples from Ada as the authors make their way through this book, with a list of the high level programming languages Advances in the '70s.

Nondeterministic call by need is neither lazy nor by name

TLDR
This paper offers a definition of nondeterministiccall by need and gives two alternative call by need power domain semantics for a language with McCarthy's ambiguous operator amb, showing the usefulness of amb even for writing deterministic expressions.

The Munich Project CIP: Volume I: The Wide Spectrum Language CIP-L

TLDR
A good way to break the boredom in reading is choosing the munich project cip vol i the wide spectrum language cip l as the reading material.

Introduction to Logic Programming

TLDR
This introduction to logic programming is based on Haskell, a very simple way of programming that can be applied to any kind of computer programming.

Algorithmic Language and Program Development

TLDR
This chapter discusses the construction of Routines, a type of programming language, and some of the techniques used to design and implement these systems.