Lossy channel system

A lossy channel system (PCS) is a computational model where communicate over a faulty network. They are notable in that certain LCS-related verification problems achieve extreme computational complexities that must be described with the fast-growing hierarchy.

Definition
A level-\(d\) LCS has a set of \(m\) channels, a finite number of states, and a transition table. Each channel is a string consisting of numbers from 0 to d inclusive. Each number should be thought of as the value of a message.

The transition table contains a number of productions, which consist of the following:


 * The initial state.
 * The channel c to read or write from.
 * An opcode, which can be either ? (read) or ! (write).
 * The message a to be written or read.
 * The successive state.

The transition table can be thought of as a directed multigraph where the nodes are states and the productions are edges, placed according to their initial and successive states.

Agents
LCS simulation is done with one or more nondeterministic agents. Multiple agents can run on a single PCS, in which any agent is chosen at each step.

An LCS agent has an internal state. It may either make a reliable step, where the agent receives or transmits messages, or an lossy step, which simulates the network dropping messages.

For a reliable step, the agent selects a production with a matching initial state. What it does next depends on the opcode:


 * If the opcode is ?, the agent looks at the selected channel c and ensures that the first message is a. It then removes a from that channel. If the first message is not a, then the agent is not allowed to use this production.
 * If the opcode is !, the agent appends a to channel c.

After executing the opcode, the agent moves on to the successive state of the production. Note that the read operation removes from the beginning of the string, and the write operation adds to the end of the string. In this way, channel strings can be thought of as stacks.

For the lossy step, the agent selects a non-empty channel and removes a message from anywhere in that channel.

Properties
Two verification problems arise from the study of LCSs:


 * Reachability: Given a single-agent LCS and an initial configuration of state and channels, can a state within a given set be reached?
 * Inevitability: Given a single-agent LCS and an initial configuration of state and channels, do all maximally long simulations (i.e. running infinitely or until halting) visit a state in a given set?

It turns out that these problems are so difficult to solve in general that their complexity classes are googologically large. For \(\alpha \leq \varepsilon_0\), we define the class of functions \(\mathscr{F}_\alpha\) as

\[\mathscr{F}_\alpha = \bigcup_{c < \omega} \text{FDTIME}(f_\alpha^c(n))\]

and the complexity class \(\mathbf{F}_\alpha\) as

\[\mathbf{F}_\alpha = \bigcup_{p \in \mathscr{F}_{<\alpha}} \text{DTIME}(f_\alpha(p(n)))\]

where \(\mathscr{F}_{<\alpha}\) is a shorthand for \(\bigcup_{\beta < \alpha} \mathscr{F}_\alpha\). Here, \(f\) represents the fast-growing hierarchy. Chambart and Schoebelen showed that the problems of Reachability and Verifiability are \(\mathbf{F}_{\omega^\omega}\)-complete.