-
A thing, such as a computer program, is described as working if an ultimate goal for that thing can be stated and that thing meets that goal.
-
A thing, such as a computer program, is described as approximately working, if an ultimate goal for that thing can be stated and that thing meets a significant set of goals that comprise the ultimate goal.
-
A thing, such as a computer program, is described as not working, if an ultimate goal for that thing can be stated and that thing does not meet the ultimate goal, or meets a trivially insignificant set of goals that compromise the ultimate goal.
-
The method by which a goal is broken into sub-goals is formally prescribed, by an epistemological effort and by drawing on fundamental concepts of computing. The method is summarised below.
-
A definition is useful if it can be used to construct inferences that coincide with observations.
-
There does not exist another useful definition of a working thing, such as a computer program, except for the one described here.
-
All (decidable) working programs are reduce to a set of decision problems.
-
A program is a function problem and therefore, may give complex answers (not necessarily a decision).
-
An undecidable program may or may not be working. Since this question is undecidable, it is discarded, because it does not give rise to a useful inferences (and therefore, a goal).
-
A goal is composed of two or more sub-goals, if those sub-goals exist independently of each other as goals themselves (potentially disparate from the result of their composition) and subsequently, give rise to a (decidable or undecidable) working program by a process of reverse engineering.
What are the thresholds involved in separating the three thing categories?
I would be keen to learn more about the method deferred.
I also imagine that 'A definition is useful if it can be used to construct inferences that coincide with observations.' would be subjective and vary considerably from implementor to implementor.