137 lines
No EOL
4.7 KiB
TeX
137 lines
No EOL
4.7 KiB
TeX
\documentclass[99-notes-packed.tex]{subfiles}
|
|
|
|
\begin{document}
|
|
\paragraph*{CCS}
|
|
Define the set of operations and semantics:
|
|
\begin{itemize}
|
|
\item {
|
|
$0$ (inaction):
|
|
|
|
$0$ represents a graph with 1 (initial) state, 0 transitions.
|
|
}
|
|
\item {
|
|
$a, \bar{a}$ (complementary actions):
|
|
|
|
Complementary actions are assumed to communicate / synchronize with one another.
|
|
}
|
|
\item {
|
|
$a.P$ (action prefix) for each action $a$, process $P$, which:
|
|
\begin{enumerate}
|
|
\item Define new initial state $\mathsf{i}$.
|
|
\item Creates transition $\mathsf{i} \xrightarrow{a} I_P$.
|
|
\end{enumerate}
|
|
}
|
|
\item {
|
|
$P + Q$ (summation / choice / alternative composition), where:
|
|
\begin{itemize}
|
|
\item Define new initial state $\mathsf{root}$.
|
|
\item $\mathrm{States}(P + Q) \coloneqq \mathrm{States}(P) \cup \mathrm{States}(Q) \cup \{\mathsf{root}\}$
|
|
\item Replace all $I_P \xrightarrow{a} s$ with $\mathsf{root} \xrightarrow{a} s$.
|
|
\item Replace all $I_Q \xrightarrow{a} s$ with $\mathsf{root} \xrightarrow{a} s$.
|
|
\end{itemize}
|
|
}
|
|
\item {
|
|
$P | Q$ (parallel composition).
|
|
|
|
This takes the cartesian product of the states of $P, Q$, such that:
|
|
\begin{itemize}
|
|
\item $s \xrightarrow{a} s^{'} \in P \implies \forall t \in Q: (s, t) \xrightarrow{a} (s^{'}, t)$
|
|
\item $t \xrightarrow{a} t^{'} \in Q \implies \forall s \in P: (s, t) \xrightarrow{a} (s, t^{'})$
|
|
\item $(s \xrightarrow{a} s^{'} \in P) \wedge (t \xrightarrow{\bar{a}} t^{'} \in Q) \implies (s, t) \xrightarrow{\tau} (s^{'}, t^{'})$
|
|
\end{itemize}
|
|
|
|
Note that \textbf{CCS adheres strictly to a handshaking communication format} -- this differs from ACP which gives greater leeway to implementation, via the use of $\gamma$ operator.
|
|
}
|
|
\item {
|
|
$P{\backslash}a$ (restriction) for each action $a$.
|
|
|
|
This produces copy of $P$ such that all actions $a, \bar{a}$ are omitted. This is useful to remove unsuccessful communication.
|
|
}
|
|
\item {
|
|
$P[f]$ (relabelling) for each function $f: A \rightarrow A$.
|
|
|
|
This replaces each label $a, \bar{a}$ by $f(a), \overline{f(a)}$.
|
|
}
|
|
\end{itemize}
|
|
|
|
\paragraph*{Recursion}
|
|
\begin{definition}[process names and expressions]
|
|
Suppose we bind names $X, Y, Z, \dots$ to some expression in the CCS language:
|
|
\begin{equation*}
|
|
X = P_X
|
|
\end{equation*}
|
|
Here, $P_X$ represents ANY expression in the language, possibly including $X$.
|
|
|
|
It is trivial to see this can cause recursive definitions:
|
|
\begin{equation*}
|
|
X = a.X
|
|
\end{equation*}
|
|
\end{definition}
|
|
|
|
\begin{definition}[recursive specification]
|
|
Define \textbf{recursive specification} as partial function $s: X \rightarrow E$:
|
|
\begin{itemize}
|
|
\item $X$: \textbf{recursion variables}.
|
|
\item $E$: \textbf{recursion equations} of form $x = P_x$.
|
|
\end{itemize}
|
|
|
|
In general, recursive spec.s are written as follows:
|
|
\begin{equation*}
|
|
\langle x | s \rangle
|
|
\end{equation*}
|
|
which reads as ``process $x$ satisfying equation $s$''.
|
|
\end{definition}
|
|
|
|
\begin{definition}[guarded recursion]
|
|
A recursion is \textbf{guarded} if each occurrence of a process name in $P_X$ occurs within the scope of a subexpression $a.P^{'}_X$.
|
|
|
|
Think of it as being unwind-able such that progress is guaranteed.
|
|
\end{definition}
|
|
|
|
\paragraph*{Structural Operational Semantics (CCS)}
|
|
\begin{center}
|
|
\begin{tabular}{cc}
|
|
$
|
|
\begin{prooftree}
|
|
\infer0{a.E \xrightarrow{a} E}
|
|
\end{prooftree}
|
|
$ &
|
|
$
|
|
\begin{prooftree}
|
|
\hypo{E_j \xrightarrow{a} E_j^{'}}
|
|
\infer1{\sum_{i \in I}E_i \xrightarrow{a} E_j^{'}}
|
|
\end{prooftree}\ (j \in I)
|
|
$ \\
|
|
\\
|
|
$
|
|
\begin{prooftree}
|
|
\hypo{E \xrightarrow{a} E^{'}}
|
|
\infer1{E | F \xrightarrow{a} E^{'} | F}
|
|
\end{prooftree}
|
|
$ &
|
|
$
|
|
\begin{prooftree}
|
|
\hypo{E \xrightarrow{a} E^{'}}
|
|
\hypo{F \xrightarrow{\overline{a}} F^{'}}
|
|
\infer2{E | F \xrightarrow{\tau} E^{'} | F^{'}}
|
|
\end{prooftree}
|
|
$ \\
|
|
\\
|
|
$
|
|
\begin{prooftree}
|
|
\hypo{E \xrightarrow{a} E^{'}}
|
|
\hypo{a \notin L \cup \overline{L}}
|
|
\infer2{E{\backslash}L \xrightarrow{a} E^{'}{\backslash}L}
|
|
\end{prooftree}
|
|
$ &
|
|
$
|
|
\begin{prooftree}
|
|
\hypo{E \xrightarrow{a} E^{'}}
|
|
\infer1{E[f] \xrightarrow{f(a)} E^{'}[f]}
|
|
\end{prooftree}
|
|
$ \\
|
|
\\
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
\end{document} |