However, we can proceed in a much more general way by using the differential equations of mathematics. In this framework, we first define functions and constants specifying the elements in relation in a physical system describing a natural phenomenon and we place these functions in differential equations representing the spatial–temporal relations between the observable elements of the phenomenon. We then seek the solutions of these differential equations giving the values of the functions and thus giving the solution of the problem of the relations and movements by comparing with the results of the physical observation to validate the equations. However, this problem does not always offer a good solution in fundamental physics which uses differential equations and partial differential equations representing the relations between the functions which are the characters of the studied problem, because the solution of these equations, if they are indeed calculable, is not always in agreement with the experimental measurements.
This approach is characterized as ascending, because we start from the observation of the phenomenon and we try to represent it by variables and functions that describe its evolution. It is therefore assumed that there is a space available and that the physical phenomena that occur in this space with structured elements must be precisely described to measure their evolution.
1.2. Computer science
At the base of everything that is done and calculated by computers, there is a very general and far-reaching scientific problem. To understand it well, we must approach the science of the calculable. Let us consider the problem of the mathematical calculation of integer functions. We are interested here in what can be done with the integers, that is, those going from zero to infinity, and used, for example, to count objects. This set is noted N, the set of natural numbers. We know, in mathematics, that we can calculate many things using integers, and we can define a lot of functions of the set of integers in itself. Indeed, we can code everything that is symbolic, everything that is cognitive with natural integers. Let us recall that any integer can be represented, if necessary, in base two, that is, with the two digits 0 and 1. We can generalize this and be interested in functions whose argument is formed by a sequence of n integers, the value of the function being another sequence of integers. In this case, we are interested in vectors of integers. We have thus defined all the functions with n integer arguments, and whose values are certain sequences of integers. We are in the domain of integer mathematics where any formula is in the form of a sequence of signs. We can encode this sequence of signs by integers and thus represent any mathematical formula by a sequence of vectors of integers. Any mathematical demonstration is, in the same way, a sequence of signs that can also be coded by integers. We can therefore see that the study of integer functions is a fundamental problem of the representation of mathematical language. The question is the following: since the formulas and the mathematical demonstrations of the domain of integers are finite sequences of signs, can we represent the demonstrations by programs? The answer will be yes, and for a very large set of functions and demonstrations.
Computer science as a science of the calculable appears here. All these integer functions, all that mathematicians can define on these integers in the form of various equations, are equivalent to computer programs of abstract machines. It has been shown that for any function of a sequence of integers in another sequence of integers to make mathematical sense, to be coherent, there must exist some abstract machine, an “abstract computer”, with instructions that allow it to be calculated. The existential of all mathematical functions on integers has a meaning if the computable allows it to have one and vice versa. This very powerful theoretical result is the famous thesis of Alonzo Church, dating from 1936. It amounts to saying that for a function on integers to have a mathematical meaning, to be coherent, we need only define the program of a theoretical machine which can calculate it. If there is no such program, the function does not exist and is not logically admissible. Today, the fields of application of computer science are considerable, making it possible to represent practically all structurable knowledge in all fields and to direct quantities of electronic devices in real time.
In the usual approach, computer science deals with the processing of information related to multiple calculations, including those established from a great number of functions, with systems using as a basic element what is called state machines. A state machine is an abstract machine passing through strictly determined states, choosing them one after the other from a set defined as available, and in which precise elementary instructions are executed. We use the automaton by starting from an initial state to reach a final state which is the expected result of the following calculations. This notion of state automaton is fully used when dealing with problems that are decomposed into many sub-problems, all very well defined, the whole forming a perfectly structured set, where what is to be computed at each step is well specified and develops the continuation of what is to be computed. Such problems belong to the class of what are called well decomposable problems. Computer science deals, at the electronic level, with binary information encoding elementary instructions, forming the programs themselves composed of sequences of calculations carried out by elementary instructions. The length of the programs and the number of instructions of a program can be considerable, and several programs can easily be executed at the same time and communicate to each other at the right time information allowing to realize well synchronized calculations. But, in a classical way, any program remains a sequence of calculations which, step by step, each calculation step after each calculation step, passes through a finite number of predefined states until its final state.
This locally mechanistic vision of the computing process has evolved a lot. Today, we know how to make many, many programs communicate, based on state machines, which run in parallel and, above all, which modify their own machines during their operation by communicating to synchronize themselves, even though the basis of each program is still the state machine. We have therefore shifted the framework of the regular automation of programs to the notion of autonomy. We know how to build programs made of many sub-programs which have their own behavior, which can communicate, synchronize, modify themselves and which can especially generate new programs breaking the order given by the initially conceived state machines. These systems are called adaptive multiprocess systems, and they are the ones that run on current computer clusters. Indeed, this is the case for any networked operating system that manages the simultaneously active resources and applications of a desktop computer, which is so common today. The notion of multiprocessing is important, and it has been a basic notion for the conception of artificial consciousness (Cardon 2018), because it places the consideration of programs at the level of autonomous software entities, active, carrying out precise local actions and above all highly communicative with each other in order to form dynamic structures that are constantly changing.
We will use the following two different notions of the term process:
– The notion of a functional process which is seen as a vast movement of components exchanging information and energy, and producing the state of a certain system, as is the case of brains producing representations. We can thus speak of the process of emergence of a form of thought about something focused from a trigger generating intention.
– The much more precise notion of computer process, which is a small program wrapped in utilities and processed in a computer system that handles quantities of them simultaneously. We will then speak of swarms of processes to designate very numerous computer processes running in competition, this notion of swarm of processes being then close to the other notion of functional process.
Generally speaking, there are two categories of programs in computer science:
– The category of programs where it is a question of calculating a given function which is precise, well defined in advance, of strictly developing the calculations of all the necessary steps, which amounts to the execution of a structured set of state machines.
– The category of autonomous programs composed of multiple swarms of processes that will run in parallel, that will capture