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} [ [ ∅ ] ] [ [ ε ] ] [ [ a ] ] [ [ a ⋅ b ] ] [ [ a + b ] ] [ [ a ∗ ] ] : = ∅ : = { ε } : = { a } : = [ [ a ] ] ⋅ [ [ b ] ] : = [ [ a ] ] ∪ [ [ b ] ] : = [ [ a ] ] ∗ where the definitions of concatenation of languages and the Kleene stars are as follows: L 1 ⋅ L 2 : = { w 1 ⋅ w 2 : w 1 ∈ L 1 , w 2 ∈ L 2 } L 0 : = { ε } L n : = L ⋅ L n − 1 L ∗ : = ⋃ n ∈ N 0 L n \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} L 1 ⋅ L 2 L 0 L n L ∗ : = { w 1 ⋅ w 2 : w 1 ∈ L 1 , w 2 ∈ L 2 } : = { ε } : = L ⋅ L n − 1 : = n ∈ N 0 ⋃ L n
The nullable function n ( a ) = ⊥ n ( ∅ ) = ⊤ n ( r 1 ⋅ r 2 ) = n ( r 1 ) ∧ n ( r 2 ) n ( r 1 + r 2 ) = n ( r 1 ) ∨ n ( r 2 ) 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} n ( a ) n ( ∅ ) n ( r 1 ⋅ r 2 ) n ( r 1 + r 2 ) n ( r ∗ ) = ⊥ = ⊤ = n ( r 1 ) ∧ n ( r 2 ) = n ( r 1 ) ∨ n ( r 2 ) = ⊤ Brzozowski derivatives x − 1 ⋅ L : = { a : x ⋅ a ∈ L } x − 1 ⋅ a = { ε a = x ∅ a ≠ x x − 1 ⋅ ε = ∅ x − 1 ⋅ ∅ = ∅ x − 1 ⋅ ( a ⋅ b ) = { ( x − 1 ⋅ a ) ⋅ b + x − 1 ⋅ b n ( a ) ( x − 1 ⋅ a ) ⋅ b otherwise x − 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} x − 1 ⋅ L x − 1 ⋅ a x − 1 ⋅ ε x − 1 ⋅ ∅ x − 1 ⋅ ( a ⋅ b ) x − 1 ⋅ ( a + b ) x − 1 ⋅ a ∗ : = { a : x ⋅ a ∈ L } = { ε ∅ a = x a = x = ∅ = ∅ = { ( x − 1 ⋅ a ) ⋅ b + x − 1 ⋅ b ( x − 1 ⋅ a ) ⋅ b n ( a ) otherwise = ( x − 1 ⋅ a ) + ( x − 1 ⋅ b ) = ( x − 1 ⋅ a ) ⋅ a ∗ Basic laws a + b = b + a a + a = a ∅ + a = a ∅ ⋅ a = a ⋅ ∅ = ∅ ε ⋅ a = a ⋅ ε = a a ( b + c ) = a b + a c ( a + b ) c = a c + b c a ∗ 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} a + b a + a ∅ + a ∅ ⋅ a = a ⋅ ∅ ε ⋅ a = a ⋅ ε a ( b + c ) ( a + b ) c a ∗ a ∗ = b + a = a = a = ∅ = a = a b + a c = a c + b c = a ∗ Other identities ε ∗ = ε ∅ ∗ = ∅ a a ∗ = a ∗ a ( a ∗ ) ∗ = a ∗ ε + a a ∗ = a ∗ ( a b ) ∗ a = a ( b a ) ∗ \begin{aligned} \varepsilon^* &= \varepsilon \\ \varnothing^* &= \varnothing \\ a a^* &= a^* a \\ (a^*)^* &= a^* \\ \varepsilon + aa^* &= a^* \\ (ab)^* a &= a(ba)^* \end{aligned} ε ∗ ∅ ∗ a a ∗ ( a ∗ ) ∗ ε + a a ∗ ( a b ) ∗ a = ε = ∅ = a ∗ a = a ∗ = a ∗ = a ( b a ) ∗ Simplifying Kleene star ( a + b ) ∗ = ( a ∗ b ∗ ) ∗ = ( a ∗ + b ∗ ) ∗ = a ∗ ( b a ∗ ) ∗ (a + b)^* = (a^* b^*)^* = (a^* + b^*)^* = a^*(ba^*)^* ( a + b ) ∗ = ( a ∗ b ∗ ) ∗ = ( a ∗ + b ∗ ) ∗ = a ∗ ( b a ∗ ) ∗ General elimination rules a + b = { a L ( b ) ⊆ L ( a ) b L ( 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} a + b a ∗ b ∗ = { a b L ( b ) ⊆ L ( a ) L ( a ) ⊆ L ( b ) = { a ∗ b ∗ L ( b ) ⊆ L ( a ) L ( a ) ⊆ L ( b ) Typical examples of the application of this rule: a b + ( a + b ) ∗ = ( a + b ) ∗ ε + ( a + b ) ∗ = ( a + b ) ∗ a ∗ b ∗ a b a + ( 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} a b + ( a + b ) ∗ ε + ( a + b ) ∗ a ∗ b ∗ a b a + ( a + b + c ) ∗ ( a + b ) ∗ a ∗ = ( a + b ) ∗ = ( a + b ) ∗ = ( a + b + c ) ∗ = ( a + b ) ∗
Arden’s Theorem r = q + r p ⇒ r = q p ∗ r = q + rp \Rightarrow r = qp^* r = q + r p ⇒ r = q p ∗ Copyright © 2019 — 2023 Alexander Mayorov. All rights reserved. Cookies Policy