\[ \newcommand{\tr}{\Rightarrow} \newcommand{\trs}{\tr^{\!\ast}} \newcommand{\rlnm}[1]{\mathsf{(#1)}} \newcommand{\rred}[1]{\xrightarrow{#1}} \newcommand{\rreds}[1]{\mathrel{\xrightarrow{#1}\!\!^*}} \newcommand{\cl}{\mathsf{Cl}} \newcommand{\pow}{\mathcal{P}} \newcommand{\matches}{\mathrel{\mathsf{matches}}} \newcommand{\kw}[1]{\mathsf{#1}} \]

Conventions

  • Concatenation associates to the right: When we write $R \cdot{} S \cdot{} T$, we really mean $R \cdot{} (S \cdot{} T)$
  • Choice associates to the left: When we write $R + S + T$, we really mean $(R + S) + T$
  • Concatenation binds tighter than choice: When we write $R + S \cdot{} T$ we really mean $R + (S \cdot{} T)$ and when we write $R \cdot{} S + T$ we really mean $(R \cdot{} S) + T$
  • Kleene star binds tightest of all: When we write \(R + S^*\) or \(R \cdot{} S^*\) we really mean \(R + (S^*)\) and \(R \cdot{} (S^*)\) respectively.

  • Concatenation may be suppressed: When we write $R S$, we really mean \(R \cdot{} S\).