CosmicOS: a Coder's Contact Message

CosmicOS is a way to create stand-alone messages suitable for
conversations across large gulfs of time and space. It is
a preamble you can borrow
to bootstrap up to a decent shared vocabulary,
without making too many assumptions.
CosmicOS is inspired by Hans Freudenthal's language,
Lincos, and
Carl Sagan's book, Contact.

Status

The message so far communicates:

Basic mathematics and logic. Just to start somewhere.

Basic elements of programming. I'm a programmer, I'm biased.

2D logic circuits and a program to evaluate them. Just for fun.

A very minimal virtual machine for running Java byte code, and a tiny game written in Java. Likewise, just for fun.

The idea is to communicate the usual math and logic basics,
then use that to show how to run programs, then send
interesting programs that demonstrate behaviors and interactions,
and start communicating ideas through ”theater”
rather than dry logic.
This is inspired by Freudenthal's
idea of staging conversations between
his imaginary characters Ha and Hb.

Message in plain text form

The message can be rendered in plain text. This is not the
form in which it would be transmitted!

Estimating message entropy by compressing this message, we get:
22 kB.
This message form has some major revisions pending to ease
comprehension.
Please be forgiving.
It'll all get fixed in an instant of galactic time.

General structure

The message is organized as follows:

The message consists of a sequence of statements that can be
evaluated, and each statement evaluates to true.

The message can refer to itself and change its own syntax as it goes.

A core set of operators are introduced by showing examples of their use.

Once a sufficient set of operators is available, most new concepts
are introduced both by examples and a definition in terms of what is
already known.

The message is more like a programming language than a human language, and is related to Brian McConnell's notion of ACETI. The goal is to
transmit simulations whose behavior can be examined and discussed, and
to introduce higher-level notions in terms of those simulations.

The message uses the following syntax (shown in plain-text form):

symbol meaning
( marks beginning of an expression
) marks end of an expression
| opens a parenthesis which will self-close at the next parenthesis.
(A B | C | D) is another way to write (A B (C (D))).
This greatly simplifies complex expressions.
$ $A is shorthand for (A).
; marks end of a statement

There are also numbers and arbitrary symbols. If there's no
other syntax between two of these, they must be separated
from each other by whitespace.
How all of this is encoded is subject to change. Originally,
CosmicOS converted all arbitrary symbols into numbers, and
encoded numbers in binary. The message will remain compatible
with this, but the encoding of symbols is being changed.