# Andrzej BliklePolish Academy of Sciences | PAN · Institute of Computer Science

Andrzej Blikle

Professor

Looking for collaborators in my project Denotational Engineering. Details on: https://moznainaczej.com.pl/denotational-e

## About

88

Publications

3,112

Reads

**How we measure 'reads'**

A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more

483

Citations

Introduction

My research activity concentrates on Denotational Engineering – a project started in 2018. This is a follower of MetaSoft project developed in the years 1970–90. My research concentrates on:
(1) Denotational models of programming languages developed from denotations to syntax.
(2) The development of correct programs rather than proving programs correct.
Mathematical techniques used:
(1) Denotational semantics based on set theory.
(2) Many-sorted algebras.
(3) Three-valued predicate calculus to describe error-elaboration mechanisms.
(4) Hoare’s logic with clean termination (no error message).
I am currently working on the development of a denotational model, and of program-construction rules, for a virtual programming language Lingua. All interested in the subject are invited to join.

Additional affiliations

January 1971 - December 2015

## Publications

Publications (88)

Pomimo stwierdzania licznych problemów, barier i złych praktyk autorzy wciąż dostrzegają możliwości naprawy i rozwoju nauki. Zapewne kluczowe jest kształtowanie odpowiednich postaw naukowców, ich indywidualnego podejścia do spraw naukowych. Dobrze byłoby, gdyby uwarunkowania formalno-instytucjonalne nie stwarzały w tym zakresie barier ani nie narzu...

It is known that parametric measures such as the Journal Index Factor or Hirsh Index provoke negative consequences in academic communities, significantly lowering job satisfaction and quality. A "game with algorithms" replaces researchers and academic teacher ethos, frequently leading to frustration and scientific misconduct. This situation is anal...

Raport dla biznesu na podstawie alertów zespołu prof J Hausnera

The paper is devoted to showing how to systematically design a programming language in “reverse order”, i.e., from denotations to syntax. This construction is developed in an algebraic framework consisting of three many-sorted algebras: of denotations, of an abstract syntax and of a concrete syntax. These algebras are constructed in such a way that...

Denotational models should provide an opportunity for the revision of current practices seen in the manuals of programming languages. New styles should on one hand base on denotational models but on the other - do not assume that today readers are acquainted in this field. A manual should, therefore, provide some basic knowledge and notation needed...

The experiment has been carried out in a virtual programming language Lingua for which a denotational semantics has been defined. It consists in a correctness-preserving development of a simple but tricky program which computes the integer square root of a number in logarithmic time. The development starts with an obvious (i.e. easy to prove correc...

A virtual programming language Lingua is developed in a “reverse order”, i.e. from denotations to syntax. The development is carried out through a series of many-sorted algebras: of data, of types, of expression denotations and of the denotations of the language. From the latter, we derive an algebra of syntax in such a way, that there exists a uni...

This is an invitation to the project Denotational Engineering for all interested parties. The project is currently documented on my profile.

The paper is devoted to showing how to systematically design a programming language in "re-verse order", i.e. from denotations to syntax. This construction is developed in an algebraic framework consisting of three many-sorted algebras: of denotations, of an abstract syntax and of a concrete syntax. These algebras are constructed in such a way that...

This is a Polish version of “Denotational Engineering of Programming Languages” available on my Research Gate account.
Książka jest poświęcona eksperymentowi zbudowania języka programowania na gruncie modelu denotacyjnego oraz wyposażenia tegoż języka w reguły pozwalające na budowanie programów poprawnych w sensie Hoare’a z tzw. czystą terminacją...

Denotational models should provide an opportunity for the revision of current practices seen in the manuals of programming languages. New styles should on one hand base on denotational models but on the other ? do not assume that today readers are acquainted in this field. A manual should, therefore, provide some basic knowledge and notation needed...

It is a well-known fact that every user of a software application has to accept a disclaimer. Here is a typical example dating from 2018: There is no warranty for the program, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the program "as is" without warranty of...

The book is devoted to two research areas:
(1) Designing programming languages along with their denotational models. A denotational model of a language consists of two many-sorted algebras ― an algebra of syntax and an algebra of denotations ― and a (unique) homomorphism from syntax to denotations called the semantics of the language.
(2) Designi...

In the years 1990 – 2010 I was running my family business (luxury confectionary) established by my great-grandfather in 1869. In 1990 right after the fall of communism in Poland, I started to run the business as its fourth generation with one pastry shop and a small production facility employing 42 workers altogether. When I passed the business to...

Partial functions, hence also partial predicates, cannot be avoided in algorithms. Although the former fact has been accepted in the theory of software very early, the latter is still not quite commonly recognised. In many programming- and software-specification languages the partiality of predicates (Boolean expressions) is treated only semiformal...

Different calculi of partial or three-valued predicates have been used and studied by several authors in the context of software specification, development and validation. This paper offers a critical survey on the development of different three-valued logics based on such calculi. In the first part of the paper, we review two three-valued predicat...

This is an essay where the author expresses his views on applied denotational semantics. In the author's opinion, whether a software system has or does not have a sufficiently abstract denotational semantics should be regarded as a pragmatic attribute of the system rather than merely as a mathematical attribute of its description. In a software sys...

Every modification of a software system may be described as a combination of two steps: a restriction, where we remove some existing mechanisms, and an extension, where we add some new ones. In the former case the modification of syntax is rather easy: we just have to remove some productions from the corresponding grammar. The latter case, however,...

Partial functions, hence also partial predicates, cannot be avoided in algorithms. However, in spite of the fact that partial functions have been formally introduced into the theory of software very early, partial predicates are still not quite commonly recognized. In many programming- and software-specification languages partial Boolean expression...

Different calculi of partial or three-valued predicates have been used and studied by several authors in the context of software specification, development and validation. This paper offers a critical survey on the development of three-valued logics based on such calculi. In the first part of the paper we review two three-valued predicate calculi,...

Different calculi of partial or three-valued predicates have been used and studied by several authors in the context of software specification, development and validation. This paper offers a critical survey on the development of different three-valued logics based on such calculi. In the first part of the paper, we review two three-valued predicat...

This paper is devoted to the methodology of using denotational techniques in software design. Since denotations describe the essential components comprising a system and syntax provides ways for the user to access and communicate with these components, we suggest that denotations are developed in the first place and that syntax be derived from them...

The book is devoted to a simplified set-theoretic version of denotational semantics where sets are used in place of Scott's reflexive domains and where jumps are described without continuations. This approach has emerged as a reaction to the sophisticated model of traditional semantics. It was also strongly stimulated by the applications of denotat...

This paper is devoted to the methodology of using denotational techniques in software design. Since denotations describe the mechanisms of a system and syntax is only a user-visible representation of these mechanisms, we suggest that denotations are developed in the first place and that syntax be derived from them later. That viewpoint is opposite...

The paper is devoted to a program-correctness concept which captures partial correctness, termination (nonlooping) and clean termination (nonabortion). The underlying proof method offers a one-stage proof of all the three properties. This method is proved consistent and algebraically complete. It is first discussed for the general case of arbitrary...

The paper describes a method of program development which guarantees correctness. Our programs consist of an operational part, called instruction, and a specification. Both these parts are subject to the development and the refinement process. The specification consists of a pre-and postcondition called global specification and a set of assertions...

The paper describes a method of the systematic development of programs supplemented by specifications. A program in our sense consists of an instruction (the virtual program) plus the specification which in turn consists of a precondition, a postcondition and a set of assertions. Such a program is called correct if the instruction is totally correc...

The paper presents a method of correct programs' derivation. Our programs consist of an operational part (the virtual program) and a specification. Both these parts are subject to the development and the refinement process. Specifications consist of a precondition and a postcondition (global specification) plus a set of assertions (local specificat...

The paper presents a method of mathematically supported correct programming. Totally correct programs are developed employing transformation rules. These programs are considered and transformed together with their specifications. The specifications are of two types: global (pre- and post- conditions) and local (redundant tests). The transformations...

This algebraic method provides a mathematical framework for proving input-output properties (such as partial and total correctness) of iterative programs. Technically it uses a calculus of binary relations extended with fixed-point equations. The method has been tested on several microprograms of a computer's arithmetical unit. One example of such...

By a computation of a program we mean any finite or infinite sequence of consecutive data-vector states generated by the program during a run. The set of all such computations can be considered as the program meaning. Analysing programs by sets of computations permits one to deal not only with input-output properties like correctness or termination...

This paper deals with equations whose solutions are vectors of languages. Formally, solutions of equations are fix points of vectorial functions on languages. On the other hand equations (and sets of equations) can be considered as grammars. Three main groups of problems are dealt with: (1) solvability of equations in a lattice of languages, (2) re...

The paper deMs with the problem of how to design a computer so that the loop-free parts of computations performed by it are handled in the most efficient and rapid manner. In particular, the question is how to design a unit to carry out loop-free computations and how to design the unit-oriented language. Clearly, the sensitive area here is the stor...

As is suggested by the title we shall be concerned here with production processes having tree-structure. First we shall introduce some basic notions of the theory of graphs. As there are no proofs in this paper (they can be found in references) our definitions need not be formulated in a very formal way.