Axiomatic definitions of programming languages: a theoretical assessment (preliminary report)
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursion in logics of programs
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Specifying programming language semantics: a tutorial and critique of a paper by Hoare and Lauer
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Dynamic algebras and the nature of induction
STOC '80 Proceedings of the twelfth annual ACM symposium on Theory of computing
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
Hi-index | 0.00 |
This thesis is concerned with the development of mathematical tools for reasoning about computer programs. The approach is to design and investigate the properties of various dynamic logics with an emphasis on useful expressive power and adequate proof theory. First, rigorous definitions of the propositional and first-order dynamic logics are given, with an emphasis on the flexibility obtained by leaving unspecified the class of programs which these logics can discuss. A large portion of the result obtained to date in the investigation of dynamic logic is included and put in proper perspective. Then, a proof theory is developed based upon the idea of axiomatizing the first order dynamic logics relative to arithmetical universes. Such axiomatizations are supplied and proved arithmetically complete for the regular (flowcharts) and context-free (recursive programs) cases. The notions of diverging and failing are then introduced, with the aid of which the concept of the total correctness of a nondeterministic program is defined and the concept of a weakest precondition clarified. A detailed investigation of the properties of diverging and failing is then carried out, including the construction of arithmetically complete axiomatizations of both the regular and context-free logics obtained by supply dynamic logic with the ability to discuss diverging directly. If a termination condition, a list of zero or more objects, and a new environment; the termination condition is used to govern control flow. This uniform treatment of expressions and statements allows a simple definition of the run-time exception handling mechanism provided in CLU. The meaning of a procedure generator or iterator generator is a function that takes a list of actual parameters, a list of arguments, and an environment, and produces a result as for statement and expression evaluation. The meaning of parameters is given in terms of textual substitution. A non-parameterized routine is viewed as being a generator with an empty parameter list. The meaning of a cluster is a function that takes a list of actual cluster parameters and an operation name, and produces the meaning of that operation.