Today I am going to motivate and define a philosophical principle which I shall call "coding invariance". I do not claim to have invented this principle as I can't remember exactly where I got the idea from. I shall also explain its intuitive appeal, give simple examples of its application and explain why certain weakenings of it are not strong enough.
Consider a universe and then consider collecting together all the facts about this universe throughout its history into one large description of that universe. We mean to include here all physical facts concerning the universe such as which electrons appear where at what times (or what the quantum wave function's state is at what times). Other information about the universe may be present in patterns of these facts (laws of physics, larger scale facts about the universe). We shall be considering how these facts about the universe might be represented.
Clearly there is not going to be any one unique way to right down the facts. For instance we might use a "+" symbol to represent a proton but someone else might use a "p" or even a "-". As long as the method chosen doesn't give the same name to protons and electrons (or any two particles) then any naming system could be chosen (practically some may be more useful but philosophically no one could be preferred).
So conceivably we could have two differing descriptions of the same universe. Two different sets of facts may turn out to describe the same universe only using different symbolic conventions.
The coding invariance principle states that two sets of facts should be considered to refer to the same universe if there is a way of recoding one as the other and vice versa. The intuition here is that the method of recording facts about a universe (including the names used and the data storage structures) should not matter. Or put another way "A rose by any other name would smell as sweet".
Now let us look at some simple examples of choices of coding. Here we represent a collection of facts as sequence of 0's and 1's (this can be done for simple collections of facts in simple languages):
These two sequences share the same pattern but the digits used to describe it differ. In this case one can translate just by replacing 0's with 1's.
0 0 1 1 0 1 1 1 0 1 0 1 ...
I have spaced out the first of these two sequences so that you can see that the latter is just the former with each digit repeated once. One is just a recoding of the other.
001100 11 00 11 11 00 ...
The rule here is harder to discern. The nth digit is repeated n times in the 2nd coding but only twice in the first coding.
In the 2nd coding 00 is represented as 10 by the second coding but as 00 in the first coding. This last example may seem less reasonable than the others, however, I shall argue that it is necessary to accept it as equally valid as the other examples.
The rules that are used in the first two examples seem reasonable because the description of the rules are relatively simple compared to the complexity of the data coded. We might like to say that some rules are silly because they are too complicated or they seem like overkill for the data they code. This is a reasonable stance practically (for computer science) but it is not easy to defend philosophically because it really just depends on your perspective.
The complexity of the rule set depends on the language you use to describe them or the concept of algorithm you use conceptualize them. The problem is there is no way to choose a canonical language to decide which rule sets are too complex. Therefore all languages must be equally good philosophically speaking and this implies we cannot consistently maintain that there should be a restriction on complexity.
Of course from out perspective codings can seem better or worse but that is really down to us having had an explicit coding choice already made for us (as our life experiences are a particular way of experiencing reality).
So we are left with the coding principle that two collections of facts describe the same universe if they can each be computably recoded as the other.
NB: All examples given in this post were of sequences but this was just for simplicities sake. The principle could be applied to unordered sets of facts too.