The complex process of deriving programs from specifications is often divided into the following three steps: i) the derivation of formal specifications from the informal ones, ii) the validation of the formal specifications, and iii) the derivation of executable programs from the formal specifications. Each step of this derivation process can be supported by the use of elegant and well-understood notions of mathematical logic. In particular, from informal specifications given as sentences in a restricted form of the natural language, one can derive formal specifications as formulas of a first order logical theory [20]. One may then validate the derived formal specifications by checking whether or not they are consistent and satisfy some suitable properties. Finally, as we will illustrate in this paper, from formal specifications one may obtain executable, efficient programs by using techniques for transforming logic programs. This is, indeed, one of the reasons that makes logic programming very attractive for program construction. During this final step from specifications to programs, in order to improve efficiency one may want to use program transformation for avoiding multiple visits of data structures, or replacing complex forms of recursion by tail recursion, or reducing nondeterminism of procedures.

Developing Correct and Efficient Logic Programs by Transformation

Proietti;
1996

Abstract

The complex process of deriving programs from specifications is often divided into the following three steps: i) the derivation of formal specifications from the informal ones, ii) the validation of the formal specifications, and iii) the derivation of executable programs from the formal specifications. Each step of this derivation process can be supported by the use of elegant and well-understood notions of mathematical logic. In particular, from informal specifications given as sentences in a restricted form of the natural language, one can derive formal specifications as formulas of a first order logical theory [20]. One may then validate the derived formal specifications by checking whether or not they are consistent and satisfy some suitable properties. Finally, as we will illustrate in this paper, from formal specifications one may obtain executable, efficient programs by using techniques for transforming logic programs. This is, indeed, one of the reasons that makes logic programming very attractive for program construction. During this final step from specifications to programs, in order to improve efficiency one may want to use program transformation for avoiding multiple visits of data structures, or replacing complex forms of recursion by tail recursion, or reducing nondeterminism of procedures.
1996
Istituto di Analisi dei Sistemi ed Informatica ''Antonio Ruberti'' - IASI
File in questo prodotto:
Non ci sono file associati a questo prodotto.

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14243/3728
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact