2025 – DUE August 2025; 100% correct solutions and
explanations.
QUESTION 1
🔹 Step 1: Understand the Languages
L1 = (aa)*
This language consists of any number (including zero) of repetitions of
"aa". Examples: ε, aa, aaaa, aaaaaa, etc.
L2 = (a + b)*ab(a + b)*
This language consists of all strings over {a, b} that contain the
substring "ab" at least once.
🔹 Step 2: Find Grammars for L1 and L2
✅ Grammar for L1 = (aa)*
We want a grammar that generates even-length strings made of only a's, in
pairs.
Let’s define the grammar 𝐺1 = (𝑉1, 𝛴, 𝑅1, 𝑆1)𝐺_1 = (𝑉_1,\
𝑆𝑖𝑔𝑚𝑎, 𝑅_1, 𝑆_1)𝐺1 = (𝑉1, 𝛴, 𝑅1, 𝑆1) 𝑤ℎ𝑒𝑟𝑒:
𝑉1 = {𝑆1}𝑉_1 = \{𝑆_1\}𝑉1 = {𝑆1}
𝛴 = {𝑎}\𝑆𝑖𝑔𝑚𝑎 = \{𝑎\}𝛴 = {𝑎}
𝑅1𝑅_1𝑅1 𝑐𝑜𝑛𝑡𝑎𝑖𝑛𝑠:
o 𝑆1 → 𝑎𝑎𝑆1 ∣ 𝜀𝑆_1 \𝑟𝑖𝑔ℎ𝑡𝑎𝑟𝑟𝑜𝑤 𝑎𝑎𝑆_1 \𝑚𝑖𝑑 \𝑣𝑎𝑟𝑒𝑝𝑠𝑖𝑙𝑜𝑛𝑆1 →
𝑎𝑎𝑆1 ∣ 𝜀
𝑇ℎ𝑖𝑠 𝑔𝑟𝑎𝑚𝑚𝑎𝑟 𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑒𝑠 𝑠𝑡𝑟𝑖𝑛𝑔𝑠 𝑙𝑖𝑘𝑒: 𝜀, 𝑎𝑎, 𝑎𝑎𝑎𝑎, 𝑒𝑡𝑐.
✅ 𝑮𝒓𝒂𝒎𝒎𝒂𝒓 𝒇𝒐𝒓 𝑳𝟐 = (𝒂 + 𝒃) ∗ 𝒂𝒃(𝒂 + 𝒃) ∗
𝑊𝑒 𝑤𝑎𝑛𝑡 𝑡𝑜 𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑒 𝑎𝑛𝑦 𝑠𝑡𝑟𝑖𝑛𝑔 𝑡ℎ𝑎𝑡 𝑐𝑜𝑛𝑡𝑎𝑖𝑛𝑠 𝑎𝑡 𝑙𝑒𝑎𝑠𝑡 𝑜𝑛𝑒 "𝒂𝒃" 𝑠𝑜𝑚𝑒𝑤ℎ𝑒𝑟𝑒 𝑖𝑛