A language designed for redundancy
Melissa Jean Vokes Smartt · 1983
The goal of the research was to address the problem of increasing software reliability through redundancy in programming. To this end, a bifacial language with procedural and non-procedural aspects and algebraically specified data types was designed. The non-procedural aspect is Prolog-like and allows one to specify very high level program solutions. The procedural aspect is Pascal-like and facilitates efficient solutions. The major contributions resulting from the design of the bifacial language lie in four areas. (1) A formal specification is given for a language that supports software redundancy, provides executable abstract data types and problem specifications, and closes the gap between moving from specification of a problem to an efficient implementation. (2) Algorithms for the implementation of equality that allow either an initial or final algebra interpretation of a data type are provided. The use of abstract data types and equality between two abstract values or an abstract and concrete value gives a convenient method for redundancy checking. (3) The desirability of using a library of modules to aid in formal semantic definition of programming languages is demonstrated by contributing to that library. (4) A translator, complete with type checking, which will transform the algebraically specified data types into executable Prolog code has been done as the first step in providing an implementation of the language.