# 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? – svick Feb 21 '16 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. – wvxvw Feb 21 '16 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. – CinchBlue Feb 22 '16 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). – svick Feb 22 '16 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. – CinchBlue Feb 22 '16 at 4:40