# How might I express a sequence of operations in formal terms?

I want to be able to represent a set of operations in sequential order such that they will represent what is traditionally called a "function" (which is not always the mathematical definition of a "function"). However, I'm trying to define more primitive terms:

• object - Anything that can be manipulated throughout the course of a program; that is, they can be read and set.
• place - A container that can hold value. (e.g. variables)
• value - A value. (e.g. 2+2 is a value but not a variable).
• procedure - A sequence of operations.

I want to be able to define procedure in more definite terms. Note that I will be starting without the definitions of operations, as I want to be able to define basic operations as procedures.

I know that I may want to introduce the sense of "time" and "space" for programs, time being necessary due to the definition of "sequence" that I put forth. Is there a better way to define it? Is there already work out there that explores this?

How would you formally define a procedure or operation at its most basic level?

• Have you looked at existing models of computation, like μ-recursive functions or RAM? Feb 21, 2016 at 11:13
• You could try en.wikipedia.org/wiki/… . This defines a program in terms of transitions between states. So, your sequence points would be the transitions. Feb 21, 2016 at 16:35
• @svick Yes; I've taken a bit of a look at mu-recursive and RAM; both doesn't seem to implicitly consider the notions of time as a fundamental aspect of the system or consider space as a fundamental aspect of the system. I think that RAM is probably the closest to what I want to use; however, I want to create an abstraction that might be more general than RAM. Feb 22, 2016 at 4:16
• @VermillionAzure RAM does consider time: you can count how many instructions were executed. Space is there too: you can count how many registers were used, but it may not be a good measure, since every register can store arbitrary integer (i.e. is infinitely large). Feb 22, 2016 at 4:29
• @svick I would say that the model's register size should be a parameter of the model, not inherent to it. Additionally, a RAM may not be able to handle the mutations of its registers by more than one algorithm running at the same time. Such systems are important for modeling multithreading, etc. Feb 22, 2016 at 4:40