# Three Layers of Information


In
[Gödel, Escher, Bach](https://www.goodreads.com/book/show/24113.G_del_Escher_Bach),
Douglas Hofstadter proposes a three-tiered hierarchy of information in messages:
the frame, the outer message, and the inner message.

![](https://benjamincongdon.me/blog/2021/02/21/Three-Layers-of-Information/3levelsofmeaning.png)

> [W]e can separate out fairly clearly three levels of information: (1) the
> frame message; (2) the outer message; (3) the inner message. The one we are
> most familiar with is (3), the inner message; it is the message which is
> supposed to be transmitted: the emotional experiences in music, the phenotype
> in genetics, the royalty and rites of ancient civilizations in tablets, etc.
>
> **To understand the inner message is to have extracted the meaning intended by
> the sender**.
>
> The frame message is the message "I am a message; decode me if you can!"; and
> it is implicitly conveyed by the gross structural aspects of any
> information-bearer.
>
> **To understand the frame message is to recognize the need for a
> decoding-mechanism.**
>
> If the frame message is recognized as such, then attention is switched to
> level (2), the outer message. This is information, implicitly carried by
> symbol-patterns and structures in the message, which tells how to decode the
> inner message.
>
> **To understand the outer message is to build, or know how to build, the
> correct decoding mechanism for the inner message**.
>
> – _Gödel, Escher, Bach_ (p174, emphasis mine)

As an example, this model maps cleanly onto physical media. For a book, the
frame is the physical paper, the outer message is the organization of symbols
arrayed on the page, and the inner message is the meaning of the text.

As another example, consider how this hierarchical model of meaning maps onto
code. For source code, the frame is the character literals stored in a source
file, the outer message is arrangement of symbols and keywords (which must
follow a formal language syntax), and the inner message is the intent of the
code.

![](https://benjamincongdon.me/blog/2021/02/21/Three-Layers-of-Information/meaning_examples.png)

This is a useful model to have in hand when critiquing a message. When
suggesting a change, think about what level of the hierarchy you're addressing.
Fortunately, most of the time we don't have to worry about the frame -- we've
generally standardized on common symbols for English, source encodings for code,
and image formats for photography. However, I think there tends to be some
confusion between proposing changes to the outer- and inner-messages.

Take code review as an example: Making a whitespace or alignment suggestion?
Outer-message. Fixing a semantic error? Inner message. Changing a variable name?
Most likely, outer message.

Or editing a draft of an article: Fixing spelling or capitalization mistakes?
Outer message. Rearranging paragraphs to change the structure of an argument?
Probably inner message. Recommending a more or less emotionally charged word?
Definitely inner message.

Deciding whether you're advocating a change to an inner or outer message is
important, because it causes you to question whether you're changing the way a
message is conveyed, or the _content of the message itself_.

Just because the "inner message" is, in some sense, the kernel of the actual
meaning we care about doesn't mean that the outer message isn't important. Any
algorithm has an infinite number of ways it can be expressed syntactically.
Consider that
[minified code](<https://en.wikipedia.org/wiki/Minification_(programming)>) is
generally an isomorphism of the original human-readable code -- its function is
identical even though the form is radically different. Minifying has no impact
on the inner message or the frame (unless minification also involves
compression), but drastically changes the outer message -- i.e. by obfuscating
variable names and removing dead code.

Thus, we see that the layers of information have meaningful interactions between
each other. Some inner messages are more easily expressed by one frame than
another: describing a landscape may be easier with a photograph than by writing
("a picture is worth a thousand words"). The outer message and frame are linked,
in that the outer message must be expressed in a way that the frame supports.
It's much easier to store sound vibrations on a vinyl record than, say, image
data. Finally, the outer and inner message interact as well: as described
earlier, human-written and minified code are isomorphic, but to a human reader,
the former is much easier to interpret than the latter.

The last example of the interaction between inner and outer messages may leave
some unsatisfied: surely a _human reader_ finds reading minified code difficult,
but a machine has no trouble. This leads to another interesting idea: that
codings are coupled to the system doing the "sense making".

> [I]n reality there is no such thing as an uncoded message. There are only
> messages written in more familiar codes, and messages written in less familiar
> codes.
>
> (p275)

To me, this has two interesting implications: first, that message encodings are
necessarily contextual; second, that there seems to be some definable quality of
"familiarity", which is a product of the interaction between the encoding and
the decoder.

First, on context: Encodings are contextual, in that to recognize a message's
frame the decoder must already have some reason for identifying that is an
encoded message, and not just a product of a noisy landscape. A message's frame
is a sort of context: to detect radio signals, you need to have working
knowledge of electromagnetism; to listen to a record, you need to be able to
detect vibrations in the air. The combination of the frame and outer message
form a deeper context: reading a sentence in English requires mapping the
textual icons to symbols with common meaning, in a syntax that is agreed upon.
The inner message is perhaps the most contextual of all, since it is the
"meaning" that is being transmitted. The inner message is only legible when the
first to layers are coherent _and_ when the decoder has the ability to map the
"meaning" onto its experience or capabilities.

Second, on familiarity: Given enough time, one can reason through a very
unfamiliar outer message, assuming that the encoding follows intelligible rules
(this is, in fact, a
[hobby](https://en.wikipedia.org/wiki/Reverse_engineering#Binary_software)). But
_why_ would isomorphic encodings of the same inner message -- that is to say,
identical inner messages with different outer messages -- be more or less
"familiar"? This seems to indicate that the outer message and the mechanism of
decoding are linked. It's much easier for a human to read text in their native
language than a [ROT13](https://en.wikipedia.org/wiki/ROT13) shifted version of
the same text. However, there are also intractably large gaps in "familiarity",
especially when the decoder possesses sufficiently different "hardware" for
decoding. I'll never be able to train an ant to decode a calculus textbook, and
I'd never be able to decode the language system of a dolphin pod -- there's
simply to large of a familiarity gap in our mechanisms of decoding. The ant can
_see_ the text in a book, and I can _hear_ dolphin speech -- that is, we have at
least the mechanisms for detecting the frame -- but nevertheless we're both so
disadvantaged at finding the outer message inside the frame as to render
decoding the inner message intractable.

Putting these two ideas together, we see that "there is no such thing as an
uncoded message" because the inner message is reconstructed inside the decoder
via the interaction between the message, the decoding mechanism, and the context
of the decoder. For example, the pheromones trails used in ant navigation are
just as illegible to me as this blog post would be to an ant. We can speak about
ant pheromones in analogy, using English sentences, chemical descriptions, and
with reference to our olfactory system, but even if this is a form of
_decoding_, it is assuredly not the same decoding that the ant performs.

Hofstadter's "Three Layers of Information" is a fascinating mental model that
usefully maps to several applications in normal life -- e.g. interpersonal
communication, crafting/revising messages, and even in reasoning how we could
make ourselves
[legible to alien civilizations](https://en.wikipedia.org/wiki/Voyager_Golden_Record).

_Cover Photo: [Unsplash](https://unsplash.com/photos/e_5NhSomvS4)_

