-
Utworzono: poniedziałek, 29 kwiecień 2019 15:07
-
Poprawiono: środa, 01 maj 2019 11:56
-
Odsłony: 5376
The project covers ideas and techniques described in my early papers published in the years 1971-1996 and recently summarised and extended in a preprinted book A Denotational Engineering of Programming Languages. All these contents base on concepts which have been well-known for years (see Sec.1.4 of the book for references):
- denotational semantics of D. Scott’s and Ch. Strachey’s,
- generative grammars of N. Chomsky’s,
- T. Hoare’s logic of programs,
- many-sorted algebras introduced to the mathematical foundations of computer science by J. A Goguen, J.W, Thatcher, E.G Wagner and J.B Wright,
- three-valued propositional calculus of J. McCarthy.
What — I believe — is new in the project, is the following:
- Programming language design and development:
- A formal, and to a large extent an algorithmic method of systematic development of syntax from denotations and of a denotational semantics from both of them.
- The idea of a colloquial syntax which allows making syntax user-friendly without damaging a denotational model to much.
- The systematic use of error-elaboration in programs supported by a three-valued predicate calculus.
- A denotational model based on set-theory rather than on Scott-Strachey reflexive domains which makes the model much simpler.
- A model of data-types that covers not only structured and user-defined types but also SQL integrity constraints.
- The development of correct programs
- A method of systematic development of correct programs with their specifications, rather than developing programs first and trying to prove them correct later.
- The use of three-valued predicates to extend Hoare’s logic by a clean termination property and to describe error elaboration mechanisms.
- General mathematical tools
- Equational grammars applied in defining the syntax of programming languages.
- A three-valued calculus of predicates applied in designing programming languages and in defining sound program constructors for such languages.