Denotational Engineering by Andrzej Blikle
Preprint, 2019
The paper is devoted to showing how to systematically design a programming language in “reverse o... more 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 there is a unique homomorphism from concrete syntax to denotations, which constitutes the denotational semantics of the language.
Besides its algebraic framework, the model is set-theoretic, i.e. the denotational domains are just sets, rather than Scott’s reflexive domains.
The method is illustrated by a layer-by-layer development of a virtual language Lingua: an applicative layer, an imperative layer (with recursive procedures) and an SQL layer where Lingua is regarded as an API (Application Programming Interface) for an SQL engine. The latter is given a denotational semantics as well.
The langue is equipped with a strong typing mechanism which covers basic types (numbers, Booleans, etc.), lists, arrays, record and their arbitrary combinations plus SQL-like types: rows, tables and databases. The model of types includes SQL integrity constraints.
The described model is further developed in a preprint book available on my profile: “A Denotational Engineering of Programming Languages”.
Preprint, 2019
Denotational models should provide an opportunity for the revision of current practices seen in t... more 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 to understand the definition of a programming language written in a new style. At the same time ? I strongly believe that ? it should be written for professional programmers rather than for amateurs. The role of a manual is not to teach the skills of programming. Such textbooks are, of course, necessary, but they should tell the readers what the programming is about rather than the technicalities of a concrete language. The paper contains an example of a manual for a virtual programming language Lingua developed in our project.
Preprint, 2019
Is it thinkable that a producer of a car, a dishwasher or a building could request such a disclai... more Is it thinkable that a producer of a car, a dishwasher or a building could request such a disclaimer from his client? Why then is the software industry an exception? In my opinion, the cause of this situation is a lack of such mathematical models and tools for software engineers that would guarantee the functional reliability of products based on the way they have been designed and manufactured. The lack of mathematical models for programming languages also affects user-manuals of these languages which again contributes to low quality of programs. The problem of mathematically-provable program-correctness (i.e. reliability) appeared for the first time in a work of Alan Turing [6] in 1949. Later, for several decades, that subject was investigated usually as proving program correctness, but the developed methods never became everyday tools of software engineers. Finally, all these efforts were abandoned what has been commented in 2016 by the authors of a monography Deductive Software Verification [1]: For a long time, the term formal verification was almost synonymous with functional verification. In the last years, it became more and more clear that full functional verification is an elusive goal for almost all application scenarios. Ironically, this happened because of advances in verification technology: with the advent of verifiers, such as KeY, that mostly cover and precisely model industrial languages and that can handle realistic systems, it finally became obvious just how difficult and time-consuming the specification of the functionality of real systems is. Not verification but specification is the real bottleneck in functional verification.
Pełen tekst książki w j. polskim lub angielskim może być pobrany z platform Academia.edu oraz Res... more Pełen tekst książki w j. polskim lub angielskim może być pobrany z platform Academia.edu oraz ResearchGate, a także z mojej witryny: http://www.moznainaczej.com.pl/skad-ta-ksiazka-edycja polska http://www.moznainaczej.com.pl/why-this-book-English edition Jest powszechnie znanym faktem, że użytkownik nabywający aplikację informatyczną musi zaakceptować tzw. "wyłączenie odpowiedzialności" (ang. disclaimer) ze strony producenta aplikacji. A oto typowy przykład takiego wyłączenia (nazwa firmy została zastąpiona słowem "Firma"): O ile nie zaznaczono inaczej w Warunkach dodatkowych, Usługi i Oprogramowanie są udostępniane w stanie, w jakim się znajdują ("AS-IS"). W maksymalnym zakresie dozwolonym przez prawo, Firma wyłącza wszelkie gwarancje wyraźne lub domniemane, w tym domniemane gwarancje nienaruszania praw, przydatności handlowej i przydatności do określonego celu. Firma nie przyjmuje żadnych zobowiązań dotyczących treści zawartej w Usługach. Ponadto Firma nie gwarantuje, że: a) Usługi lub Oprogramowanie spełnią wymagania Użytkownika, będą stale dostępne oraz że będą działały w sposób nieprzerwany, terminowy i bezbłędny; b) efekty uzyskane w wyniku użycia Usług lub Oprogramowania będą skuteczne, dokładne i niezawodne; c) jakość Usług i Oprogramowania spełni oczekiwania Użytkownika; oraz d) błędy lub usterki w Usługach lub Oprogramowaniu zostaną naprawione. To wyłączenie pochodzi z 2018 roku i dotyczy nie małej lokalnej firmy, ale dużej i międzynarodowej. Czy ktoś mógłby sobie wyobrazić, że producent jakiegokolwiek nieinformatycznego produktu przemysłowego-samochodu, pralki, telewizora, czy budynku-mógłby zażądać od swoich klientów zgody na podobne zrzeczenie się swoich praw? Dlaczego więc w przemyśle IT jest to zjawisko powszechne? Myślę, że odpowiedzi na to pytanie udzielił pewien producent systemu finansowo-księgowego, który nabyłem swojego czasu dla mojej firmy:
Preprint, 2018
The book is devoted to two research areas: (1) Designing programming languages along with their d... more 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) Designing sound program-constructors for languages with denotational models. In our approach programs syntactically contain their total-correctness specifications. A program is said to be correct if it is correct wrt its specification. A program-constructor is sound if given correct component-programs yields a correct resulting program. Both methods are illustrated on an example-language Lingua.
MetaSoft by Andrzej Blikle
Acta Informatica, 1981
The paper is devoted to a program-correctness concept which captures partial correctness, termina... more 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 possibly nondeterministic iterative programs. Next, this case is restricted to arbitrary deterministic iterative programs and finally to structured programs. The presented approach is compared with partial correctness, total correctness and weakest precondition methods. The concluding example shows the verification of an arithmetical program in machine-bounded arithmetics. As a side effect of the verification procedure one finds input boundary conditions which guarantee clean termination.
IEEE Transactions on Software Engineering, 2000
The paper describes a method of program development which guarantees correctness. Our programs co... more 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 called local specification. A specified program is called correct if: 1) the operational part is totally correct w.r.t. the pre-and postcondition, 2) the precondition guarantees nonabortion, 3) local assertions are adequate for the proof of 1) and 2). The requirement of nonabortion leads to the use of a three-valued predicate calculus. We use McCarthy's calculus in that place. The paper contains a description of an experimental programming language PROMET-1 designed for our style of programming. The method is illustrated by the derivation of a bubblesort procedure.
Information Processing Letters, 1988
Information Systems, 1980
and Finland). The opening speech of the symposium was made by A. Klas, Director of the "United Na... more and Finland). The opening speech of the symposium was made by A. Klas, Director of the "United Nations Program" Scientific-Research Computing Center.
Zeitschrift für Mathematische Logik und Grundlagen der Mathematik, 1965
Zeitschrift für Mathematische Logik und Grundlagen der Mathematik, 1966
Theoretical Computer Science, 1991
ABSTRACT
Fundamenta Informaticae - FUIN, 1996
ABSTRACT
By a computation of a program we mean any finite or infinite sequence of consecutive data-vector ... more 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, but also with properties of runs independently are they finite or not. In particular one can analyse system-like programs, where no output at all is expected. Given a program to be analysed we split it into a finite number of modules each of them simple enough for the set of all its computations to be obvioust. Sets of computations associated to modules are combined then into a global set in a way that is described by operational semantics. This semantics — being of litle use for program analysis — is supplemented then by a fixed point semantics that is proved equivalent to the former. Two examples of program analysis are considered: the...
Lecture Notes in Computer Science, 1987
ABSTRACT
Lecture Notes in Computer Science, 1988
Different calculi of partial or three-valued predicates have been used and studied by several aut... more 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.
Different calculi of partial or three-valued predicates have been used and studied by several aut... more 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.
Information and Control, 1972
This paper deals with equations whose solutions are vectors of languages. Formally, solutions of ... more 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) relationship between type of functions used in equations and properties of languages defined by them, (3) applications to the theory of Context-free and regular languages.
Lecture Notes in Computer Science, 1979
ABSTRACT
Uploads
Denotational Engineering by Andrzej Blikle
Besides its algebraic framework, the model is set-theoretic, i.e. the denotational domains are just sets, rather than Scott’s reflexive domains.
The method is illustrated by a layer-by-layer development of a virtual language Lingua: an applicative layer, an imperative layer (with recursive procedures) and an SQL layer where Lingua is regarded as an API (Application Programming Interface) for an SQL engine. The latter is given a denotational semantics as well.
The langue is equipped with a strong typing mechanism which covers basic types (numbers, Booleans, etc.), lists, arrays, record and their arbitrary combinations plus SQL-like types: rows, tables and databases. The model of types includes SQL integrity constraints.
The described model is further developed in a preprint book available on my profile: “A Denotational Engineering of Programming Languages”.
MetaSoft by Andrzej Blikle
Besides its algebraic framework, the model is set-theoretic, i.e. the denotational domains are just sets, rather than Scott’s reflexive domains.
The method is illustrated by a layer-by-layer development of a virtual language Lingua: an applicative layer, an imperative layer (with recursive procedures) and an SQL layer where Lingua is regarded as an API (Application Programming Interface) for an SQL engine. The latter is given a denotational semantics as well.
The langue is equipped with a strong typing mechanism which covers basic types (numbers, Booleans, etc.), lists, arrays, record and their arbitrary combinations plus SQL-like types: rows, tables and databases. The model of types includes SQL integrity constraints.
The described model is further developed in a preprint book available on my profile: “A Denotational Engineering of Programming Languages”.
Wydanie pierwsze otrzymało dwie nagrody:
(1) I miejsce w kategorii „Najlepszy poradnik ekonomiczny” w kon-kursie Economicus 2015 organizowanym przez „Dziennik Gazeta Prawna”.
(2) Nagroda Kolegium Nauk o Przedsiębiorstwie Szkoły Głównej Handlowej w Warszawie „za najlepszą pracę z zakresu nauk o przedsiębiorstwie w la-tach 2014 – 2015”.