Regular expression cheat sheet

Denotational semantics

[ ⁣[∅] ⁣]:=∅[ ⁣[ε] ⁣]:={ε}[ ⁣[a] ⁣]:={a}[ ⁣[a⋅b] ⁣]:=[ ⁣[a] ⁣]⋅[ ⁣[b] ⁣][ ⁣[a+b] ⁣]:=[ ⁣[a] ⁣]∪[ ⁣[b] ⁣][ ⁣[a∗] ⁣]:=[ ⁣[a] ⁣]∗\begin{aligned} [\![\varnothing]\!] &:= \varnothing \\ [\![\varepsilon]\!] &:= \{\varepsilon\} \\ [\![a]\!] &:= \{a\} \\ [\![a \cdot b]\!] &:= [\![a]\!] \cdot [\![b]\!] \\ [\![a + b]\!] &:= [\![a]\!] \cup [\![b]\!] \\ [\![a^*]\!] &:= [\![a]\!]^* \end{aligned}

where the definitions of concatenation of languages and the Kleene stars are as follows: L1⋅L2:={w1⋅w2:w1∈L1,w2∈L2}L0:={ε}Ln:=L⋅Ln−1L∗:=⋃n∈N0Ln\begin{aligned} L_1 \cdot L_2 &:= \{w_1 \cdot w_2 : w_1 \in L_1, w_2 \in L_2\} \\ L^0 &:= \{\varepsilon\} \\ L^n &:= L \cdot L^{n-1} \\ L^* &:= \bigcup_{n \in \mathbb{N}_0}{L^n} \end{aligned}

The nullable function

n(a)=⊥n(∅)=⊤n(r1⋅r2)=n(r1)∧n(r2)n(r1+r2)=n(r1)∨n(r2)n(r∗)=⊤\begin{aligned} n(a) &= \bot \\ n(\varnothing) &= \top \\ n(r_1 \cdot r_2) &= n(r_1) \wedge n(r_2) \\ n(r_1 + r_2) &= n(r_1) \vee n(r_2) \\ n(r^*) &= \top \end{aligned}

Brzozowski derivatives

x−1⋅L:={a:x⋅a∈L}x−1⋅a={εa=x∅a≠xx−1⋅ε=∅x−1⋅∅=∅x−1⋅(a⋅b)={(x−1⋅a)⋅b+x−1⋅bn(a)(x−1⋅a)⋅botherwisex−1⋅(a+b)=(x−1⋅a)+(x−1⋅b)x−1⋅a∗=(x−1⋅a)⋅a∗\begin{aligned} x^{-1} \cdot L &:= \{a : x \cdot a \in L\} \\ x^{-1}\cdot a &= \begin{cases} \varepsilon & a = x \\ \varnothing & a \neq x \end{cases} \\ x^{-1}\cdot \varepsilon &= \varnothing \\ x^{-1}\cdot \varnothing &= \varnothing \\ x^{-1}\cdot (a \cdot b) &= \begin{cases} (x^{-1} \cdot a) \cdot b + x^{-1} \cdot b & n(a) \\ (x^{-1} \cdot a) \cdot b & \text{otherwise} \end{cases} \\ x^{-1}\cdot (a + b) &= (x^{-1} \cdot a) + (x^{-1} \cdot b) \\ x^{-1} \cdot a^* &= (x^{-1} \cdot a) \cdot a^* \end{aligned}

Basic laws

a+b=b+aa+a=a∅+a=a∅⋅a=a⋅∅=∅ε⋅a=a⋅ε=aa(b+c)=ab+ac(a+b)c=ac+bca∗a∗=a∗\begin{aligned} a + b &= b + a \\ a + a &= a \\ \varnothing + a &= a \\ \varnothing \cdot a = a \cdot \varnothing &= \varnothing \\ \varepsilon \cdot a = a \cdot \varepsilon &= a \\ a(b + c) &= ab + ac \\ (a + b)c &= ac + bc \\ a^* a^* &= a^* \end{aligned}

Other identities

ε∗=ε∅∗=∅aa∗=a∗a(a∗)∗=a∗ε+aa∗=a∗(ab)∗a=a(ba)∗\begin{aligned} \varepsilon^* &= \varepsilon \\ \varnothing^* &= \varnothing \\ a a^* &= a^* a \\ (a^*)^* &= a^* \\ \varepsilon + aa^* &= a^* \\ (ab)^* a &= a(ba)^* \end{aligned}

Simplifying Kleene star

(a+b)∗=(a∗b∗)∗=(a∗+b∗)∗=a∗(ba∗)∗(a + b)^* = (a^* b^*)^* = (a^* + b^*)^* = a^*(ba^*)^*

General elimination rules

a+b={aL(b)⊆L(a)bL(a)⊆L(b)a∗b∗={a∗L(b)⊆L(a)b∗L(a)⊆L(b)\begin{aligned} a + b &= \begin{cases} a & L(b) \subseteq L(a) \\ b & L(a) \subseteq L(b) \end{cases} \\ a^* b^* &= \begin{cases} a^* & L(b) \subseteq L(a) \\ b^* & L(a) \subseteq L(b) \end{cases} \end{aligned}

Typical examples of the application of this rule: ab+(a+b)∗=(a+b)∗ε+(a+b)∗=(a+b)∗a∗b∗aba+(a+b+c)∗=(a+b+c)∗(a+b)∗a∗=(a+b)∗\begin{aligned} ab + (a + b)^* &= (a + b)^* \\ \varepsilon + (a + b)^* &= (a + b)^* \\ a^* b^* aba + (a + b + c)^* &= (a + b + c)^* \\ (a+b)^* a^* &= (a+b)^* \end{aligned}

Arden’s Theorem

r=q+rp⇒r=qp∗r = q + rp \Rightarrow r = qp^*

Copyright © 2019 — 2025 Alexander Mayorov. All rights reserved.