An advanced programming language definition and domain correctness of programs

  • Authors:
  • Karel Culik

  • Affiliations:
  • Wayne State University, Detroit, MI

  • Venue:
  • ACM SIGPLAN Notices
  • Year:
  • 1982

Quantified Score

Hi-index 0.00

Visualization

Abstract

Program execution is not adequately reflected in usual syntactic programming language definition by formal grammar, although either actual or mental execution is referred to during reading (tracing) and correctness proving. An advanced programming languages definition associates in input/output variables, the domain, and the computable function with each program. It is based on a computer automaton when inputs from In, states from St are viewed as instructions, memory states, respectively. The heart of it, is its transition (next-state) function trans: In x St → St.Arithmetic symbols occuring in a program are interpreted (by programmer) in usual infinite arithmetics during problem solving while they are interpreted (by a computer) in finite computer arithmetics when the program is executed. The program is characterized by its execution-semantics expressed in its control (next-instruction) function contr: In x St → In. The discrepancy between finite and infinite interpretation-semantics are studied as suggested in [Hoar 69], in particular, the two computable functions are compared.Total and partial correctness [Mann 74] does not show which interpretation should be considered; therefore, the third component of a proof of correctness, a domain correctness proof, is added.