Skip to main content
Log in

Miscomputation

  • Research Article
  • Published:
Philosophy & Technology Aims and scope Submit manuscript

Abstract

The phenomenon of digital computation is explained (often differently) in computer science, computer engineering and more broadly in cognitive science. Although the semantics and implications of malfunctions have received attention in the philosophy of biology and philosophy of technology, errors in computational systems remain of interest only to computer science. Miscomputation has not gotten the philosophical attention it deserves. Our paper fills this gap by offering a taxonomy of miscomputations. This taxonomy is underpinned by a conceptual analysis of the design and implementation of conventional computational systems at various levels of abstraction. It shows that ‘malfunction’ as it is typically used in the philosophy of artefacts only represents one type of miscomputation.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Notes

  1. This characterisation is not unproblematic. For one thing, the precise notion of algorithm remains unclear and is still debated in theoretical computer science and philosophy of computer science. The first author discusses this problem elsewhere and proposes an alternative account of computation as instructional information processing (Fresco & Wolf unpublished).

  2. It should be noted that, strictly, the ‘lowest’ LoA we analyse here is not the last one. The analysis can proceed at even lower level, such as at the quantum-physical level.

  3. ‘ICE’ theory stands for Intentional, Causal-role, Evolutionist function theory. For more details on this theory, see Houkes and Vermaas (2010).

  4. See http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#MAX_VALUE for details.

  5. A similar caveat applies here as in footnote 2.

  6. For an overview of the logics of many of these languages, see, for example, Bjørner and Henson (2008).

  7. Formally, the requirement for the correctness of the permitted input is expressed by a pairwise disjoint union partition of the input domain in (1) standard domain, (2) admitted exceptional domain, (3) failure domain and (4) unexpected domain. The correctness of the expected output domain is ensured by expressing (3) and (4) as empty domains as a precondition of the system.

  8. Here, we implicitly refer to the proof-theoretical result known as Curry–Howard isomorphism establishing a direct relation between computer programs and derivations. A valid contextual proof (or lambda term) is isomorphic to a program correctly executable in a network. This result, also known as proofs-as-program identity, is based on the interpretation of formulae and specifications as types, of which respectively proofs and programs are instantiating elements. This formal identity allows treating a running program as formal objects, whose properties—including correctness and termination—can be established by way of deductive methods. The isomorphism originates in observations by Curry (1934), Curry et al. (1958) and Howard (1980). For a systematic treatment of the issue, see Sørensen and Urzyczyn (2006).

  9. Error handling has a proper counterpart in the logical design of programs that might fail to provide their specified service (particularly in distributed architectures). This is typically done by providing rigorous definitions of crucial concepts in design: the specification, the semantics of the program involved, its correctness, the possible exceptions and the cases of fault, failure and error. At each LoA of the program’s semantics, an appropriate handling procedure is defined. For a comprehensive analysis of exception handling design, see Lee and Anderson (1990) and Buhr et al. (2002).

  10. For more on simulation-based and formal verification techniques of hardware design the reader is referred to Lam (2005).

  11. Validity conditions here refer to both validity and satisfiability criteria on the specification. The logical validity of a specification is typically given by formulating the behavioural description of a program in (propositional) conjunctive normal form. One can check whether for each disjunctive atom in the same conjunct the negation is also available, and if so, then logical validity is proven. Otherwise, logical validity cannot be proven. Satisfiability is the weaker logical counterpart that only requires one positive evaluation for an atom. The class of propositional formulas in conjunctive normal form has a straightforward check for syntactic validity, but a hard one for satisfiability.

  12. Correctness conditions here refer to the relation of logical, total and partial correctness between the program and its specification. Logical correctness refers strictly to the relation that the syntax of the expression (program) bears to the construction rules allowed by the alphabet and language in question. An incorrectly formulated program will not yield an output that conforms to its specification. More generally, an algorithm is said to be totally correct, if it outputs the value required by its specification and halts. It is said to be partially correct, if no claim is made about its termination.

  13. These are systems that are used to control and monitor physical processes and are rigidly constrained in terms of their response time and/or the validity of their data.

References

  • Bjørner, D., & Henson, M. C. (2008). Logics of specification languages. Berlin: Springer.

    Book  Google Scholar 

  • Black, P. E., Hall, K. M., Jones, M. D., Larson, T. N., & Windley, P. J. (1996). A brief introduction to formal methods (pp. 377–380). IEEE. doi:10.1109/CICC.1996.510579.

  • Buhr, P. A., Harji, A., & Russell Mok, W. Y. (2002). Exception handling. Advances in Computers, 56, 245–303. Elsevier.

    Article  Google Scholar 

  • Campione, M., Walrath, K., & Huml, A. (2001). The Java tutorial: short course on the basics. Boston: Addison-Wesley.

    Google Scholar 

  • Curry, H. B. (1934). Functionality in Combinatory Logic. Proceedings of the National Academy of Sciences of the United States of America, 20(11), 584–590.

    Article  Google Scholar 

  • Curry, Haskell B., Feys, R., & Craig, W. (1958). Combinatory logic. Vol. 1. Amsterdam: North-Holland.

  • Dale, N. B., & Weems, C. (2005). Programming and problem solving with C++. Boston: Jones and Bartlett Publishers.

    Google Scholar 

  • Davie, A. J. T. (1992). An introduction to functional programming systems using Haskell. Cambridge: Cambridge University Press.

    Google Scholar 

  • Dooley, J. (2011). Software development and professional practice. New York: Apress. doi:10.1007/978-1-4302-3802-7.

  • Feldman, M. B., & Koffman, E. B. (1999). Ada 95: problem solving and program design. Reading: Addison-Wesley.

    Google Scholar 

  • Franssen, M. (2006). The normativity of artefacts. Studies in History and Philosophy of Science Part A, 37(1), 42–57. doi:10.1016/j.shpsa.2005.12.006.

    Article  Google Scholar 

  • Fresco, N. (2012). Concrete digital computation: competing accounts and its role in cognitive science. University of New South Wales, Sydney, Australia. Retrieved from http://handle.unsw.edu.au/1959.4/52578.

  • Hari, S. K. S., Konda, V. V. R., Kamakoti, V., Vedula, V. M., & Maneperambil, K. S. (2008). Automatic constraint based test generation for behavioral HDL Models. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 16(4), 408–421. doi:10.1109/TVLSI.2008.917424.

    Article  Google Scholar 

  • Hempel, C. G. (1965). Aspects of scientific explanation: and other essays in the philosophy of science. New York: Free Press.

    Google Scholar 

  • Hopcroft, J. E., Motwani, R., & Ullman, J. D. (2001). Introduction to automata theory, languages, and computation. Boston: Addison-Wesley.

    Google Scholar 

  • Houkes, W., & Vermaas, P. E. (2010). Technical functions: on the use and design of artefacts. Dordrecht: Springer.

    Book  Google Scholar 

  • Howard, W. A. (1980). The formulae-as-types notion of construction. In J. P. Seldin & J. R. Hindley (Eds.), (pp (pp. 479–490). London: Academic.

    Google Scholar 

  • IEEE Computer Society. (2005). IEEE Standard for Property Specification Language (PSL). IEEE Std 1850-2005, 0_1–143. doi:10.1109/IEEESTD.2005.97780.

  • IEEE Computer Society. (2009). IEEE Standard for Information Technology—Systems Design—Software Design Descriptions—Redline.

  • IEEE Computer Society. (1998). IEEE recommended practice for software requirements specifications. New York: Institute of Electrical and Electronics Engineers.

    Google Scholar 

  • Intel. (2004). FDIV replacement program: statistical analysis of floating point flaw. Available from http://www.intel.com/support/processors/pentium/sb/CS-013005.htm. Accessed 28 January 2012.

  • Jespersen, B., & Carrara, M. (2011). Two conceptions of technical malfunction. Theoria, 77(2), 117–138. doi:10.1111/j.1755-2567.2010.01092.x.

    Article  Google Scholar 

  • Kitcher, P. (1989). Explanatory unification and the causal structure of the world. In P. Kitcher & W. C. Salmon (Eds.), Scientific explanation (pp. 410–505). Minneapolis: University of Minnesota Press.

    Google Scholar 

  • Lam, W. K. C. (2005). Hardware design verification: simulation and formal method-based approaches. Upper Saddle River: Prentice-Hall.

    Google Scholar 

  • Lee, P. A., & Anderson, T. (1990). Fault tolerance, principles and practice. Wien: Springer.

    Book  Google Scholar 

  • Mahner, M., & Bunge, M. (1997). Foundations of biophilosophy. Berlin: Springer.

    Book  Google Scholar 

  • May, M., Alles, M., & Wehn, N. (2008). A case study in reliability-aware design: a resilient LDPC code decoder (pp. 456–461). IEEE. doi:10.1109/DATE.2008.4484723.

  • Meyer, B. (1985). On Formalism in Specifications. IEEE Software, 2(1), 6–26. doi:10.1109/MS.1985.229776.

    Article  Google Scholar 

  • Millikan, R. G. (1989). In defense of proper functions. Philosophy of Science, 56(2), 288–302.

    Article  Google Scholar 

  • MSDN. (2012). Hardware Errors and Error Sources. Microsoft. Available from http://msdn.microsoft.com/en-us/library/windows/hardware/ff559382%28v=vs.85%29.aspx.

  • Neander, K. (1995). Misrepresenting & malfunctioning. Philosophical Studies, 79(2), 109–141. doi:10.1007/BF00989706.

    Article  Google Scholar 

  • Palnitkar, S. (2003). Verilog HDL: a guide to digital design and synthesis. Upper Saddle River: SunSoft Press.

    Google Scholar 

  • Perlman, M. (2010). Traits have evolved to function the way they do because of a past advantage. In F. J. Ayala & R. Arp (Eds.), Contemporary debates in philosophy of biology (pp. 53–72). Malden: Wiley-Blackwell.

    Google Scholar 

  • Piccinini, G. (2007). Computing mechanisms. Philosophy of Science, 74(4), 501–526. doi:10.1086/522851.

    Article  Google Scholar 

  • Primiero, G. (2013). A Taxonomy of Errors for Information Systems. Minds and Machines. doi:10.1007/s11023-013-9307-5.

  • Purdum, J. J. (2012). Beginning object oriented programming with C#. Hoboken: Wiley.

    Google Scholar 

  • Shelly, G. B., Cashman, T. J., Starks, J., & Mick, M. L. (2006). Java programming: comprehensive concepts and techniques. Boston: Thomson/Course Technology.

    Google Scholar 

  • Smith, B. C. (1996). Limits of correctness in computers. In R. Kling (Ed.), Computerization and controversy: value conflicts and social choices. San Diego: Academic.

    Google Scholar 

  • Sørensen, M. H., & Urzyczyn, P. (2006). Lectures on the Curry–Howard isomorphism. Amsterdam]: Elsevier.

    Google Scholar 

  • Strevens, M. (2008). Depth: an account of scientific explanation. Cambridge: Harvard University Press.

    Google Scholar 

  • Turing, A. M. (1950). Computing machinery and intelligence. Mind, 59(236), 433–460.

    Article  Google Scholar 

  • Turner, R. (2011). Specification. Minds and Machines, 21(2), 135–152. doi:10.1007/s11023-011-9239-x.

    Article  Google Scholar 

  • Turner, R. (2013). Programming languages as technical artifacts. Philosophy & Technology. doi:10.1007/s13347-012-0098-z.

    Google Scholar 

  • Turner, R., & Eden, A. (2011). The Philosophy of Computer Science. In E. N. Zalta (Ed.), The Stanford Encyclopedia of Philosophy (Winter 2011.). Available from http://plato.stanford.edu/archives/win2011/entries/computer-science/.

  • Williams, T. J., Schaffer, E. J., & Rohr, A. (2003). Redundant and voting systems. In Instrument engineers’ handbook. Boca Raton: CRC Press.

    Google Scholar 

  • Woodward, J. (2005). Making things happen: a theory of causal explanation. New York: Oxford University Press.

    Google Scholar 

Download references

Acknowledgments

We thank Marty Wolf for a useful discussion on miscomputation in physical systems. We also thank the two referees for their constructive comments and suggestions that have improved the paper. This research was conducted while Giuseppe Primiero was a Post-Doctoral Fellow of the Research Foundation Flanders (FWO) at the Centre for Logic and Philosophy of Science, Ghent University, Belgium. He gratefully acknowledges the financial support.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Nir Fresco.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Fresco, N., Primiero, G. Miscomputation. Philos. Technol. 26, 253–272 (2013). https://doi.org/10.1007/s13347-013-0112-0

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s13347-013-0112-0

Keywords

Navigation