The Existence of Software
Abstract
Many ontologies posit levels of existence. A whole exists at a level above its parts; a set exists at a level above its members. Hardware objects are at the lowest level in a computational ontology. Software objects exist at higher levels. The game of life illustrates a stratified computational ontology. The cells in the life grid are the hardware objects. An event is a function from cells to values 0 or 1. A process is a series of events. A process contains a software object iff its content is generated by some rule that is independent of the rule for cells. We give a precise existence axiom for software objects. As expected, blinkers, gliders, puffer trains, and so on are software objects. Software objects satisfy traditional conceptions of materiality. Our conception of software objects has intriguing links to modern conceptions of material particles in terms of symmetry groups and topological invariants. Software objects are not abstract.