Published in Volume XXXII, Issue 2, 2022, pages 183-209, doi: 10.7561/SACS.2022.2.183

Authors: J. A. Bergstra


Four notions of fault are proposed for program specifications each inspired by notions of fault for programs: symptomatic failure resolution fault, Laski fault, MFJ fault and regression test justification of change fault (RTJoC fault). Examples are provided in terms of the PGA style theory of instruction sequences. Each of the notions of fault is based on the contrast between technical specification and requirements specification. The latter contrast is discussed in detail.

Full Text (PDF)


[1] Algirdas Avizienis, Jean-Claude Laprie, and Brian Randell. Fundamental concepts of computer system dependability. In IARP/IEEE-RAS Workshop on Robot Dependability: Technological Challenge of Dependable Robots in Human Environments, 2001.

[2] Algirdas Avizienis, Jean-Claude Laprie, Brian Randell, and Carl E. Landwehr. Basic concepts and taxonomy of dependable and secure computing. IEEE Transactions on Dependable and Secure Computing, 1(1):11-33, 2004. doi:10.1109/TDSC.2004.2.

[3] Robert Balzer and Neil M. Goldman. Principles of good software specification and their implications for specification languages. In American Federation of Information Processing Societies: 1981 National Computer Conference, volume 50 of AFIPS Conference Proceedings, pages 393-400. AFIPS Press, 1981. doi:10.1145/1500412.1500468.

[4] Jan A. Bergstra. Quantitative expressiveness of instruction sequence classes for computation on single bit registers. Computer Science Journal of Moldova, 27(2):131-161, 2019. URL:

[5] Jan A. Bergstra. Instruction sequence faults with formal change justification. Scientific Annals of Computer Science, 30(2):105-166, 2020. doi:10.7561/SACS.2020.2.105.

[6] Jan A. Bergstra. Qualifications of instruction sequence failures, faults and defects: Dormant, effective, detected, temporary, and permanent. Scientific Annals of Computer Science, 31(1):1-50, 2021. doi:10.7561/SACS.2021.1.1.

[7] Jan A. Bergstra. Defects and faults in algorithms, programs and instruction sequences. Transmathematica, 2022. doi:10.36285/tm.49.

[8] Jan A. Bergstra and M. E. Loots. Program algebra for sequential code. Journal of Logic and Algebraic Programming, 51(2):125-156, 2002. doi:10.1016/S1567-8326(02)00018-8.

[9] Jan A. Bergstra and Cornelis A. Middelburg. Instruction sequence processing operators. Acta Informatica, 49(3):139-172, 2012. doi:10.1007/s00236-012-0154-2.

[10] Jan A. Bergstra and Cornelis A. Middelburg. On instruction sets for Boolean registers in program algebra. Scientific Annals of Computer Science, 26(1):1-26, 2016. doi:10.7561/SACS.2016.1.1.

[11] Jan A. Bergstra and Cornelis A. Middelburg. A short introduction to program algebra with instructions for boolean registers. Computer Science Journal of Moldova, 26(3):199-232, 2018. URL:

[12] Alonzo Church. Application of recursive arithmetic to the problem of circuit synthesis. In Summaries of the Summer Institute of Symbolic Logic, pages 3-50. Cornell University, 1957.

[13] Wided Ghardallou, Ali Mili, and Nafi Diallo. Relative correctness: A bridge between proving and testing. In Mohamed Ghazel and Mohamed Jmaiel, editors, 10th Workshop on Verification and Evaluation of Computer and Communication System, VECoS 2016, volume 1689 of CEUR Workshop Proceedings, pages 141-156., 2016.

[14] John V. Guttag, James J. Horning, and Jeannette M. Wing. Some notes on putting formal specifications to productive use. Science of Computer Programming, 2(1):53-68, 1982. doi:10.1016/0167-6423(82)90004-1.

[15] James J. Horning. Issues and observations. In Jørgen Staunstrup, editor, Workshop on Program Specification, volume 134 of Lecture Notes in Computer Science, pages 5-24. Springer, 1981. doi:10.1007/3-540-11490-4_2.

[16] Jean-Claude Laprie. Dependable computing and fault tolerance: concepts and terminology. In Twenty-Fifth International Symposium on Fault-Tolerant Computing, pages 2–11, 1995. doi:10.1109/FTCSH.1995.532603.

[17] Janusz W. Laski. Programming faults and errors: Towards a theory of software incorrectness. Annals of Software Engineering, 4:79-114, 1997. doi:10.1023/A:1018966827888.

[18] Ali Mili, Marcelo F. Frias, and Ali Jaoua. On faults and faulty programs. In Peter Höfner, Peter Jipsen, Wolfram Kahl, and Martin Eric Müller, editors, 14th International Conference on Relational and Algebraic Methods in Computer Science, volume 8428 of Lecture Notes in Computer Science, pages 191-207. Springer, 2014. doi:10.1007/978-3-319-06251-8_12.

[19] Jeannette M. Wing. Program specification. In Anthony Ralston, Edwin D. Reilly, and David Hemmendinger, editors, Encyclopedia of Computer Science, pages 1454-1458. Wiley, 4th edition, 2003.


  title={Four Notions of Fault for Program Specifications},
  author={J. A. Bergstra},
  journal={Scientific Annals of Computer Science},
  organization={Alexandru Ioan Cuza University, Ia\c si, Rom\^ania},
  publisher={Alexandru Ioan Cuza University Press, Ia\c si},