COS3701
Assignment 2
(COMPLETE
ANSWERS) 2025
FOR MORE ASSISTANCE CONTACT:
100% TRUSTED WORKINGS, EXPLANATIONS
& SOLUTIONS
,COS3701 Assignment 2 (COMPLETE
ANSWERS) 2025
Question 1 10 Find CFGs for all words that do not have
the substring aba over the alphabet Σ = {a b}.
To construct a Context-Free Grammar (CFG) for all words over the alphabet Σ
= {a, b} that do not contain the substring "aba", we need to carefully design
rules that generate all such strings while preventing the forbidden pattern from
forming.
✅ Step-by-step approach:
We’ll define a CFG that:
Generates all strings over {a, b}
Avoids generating any string with "aba" as a substring
🎯 Key Idea
Keep track of the last few letters of the string being built, to avoid creating "aba".
📘 CFG Variables:
Let’s define the non-terminals as follows:
S: Start symbol — generates all strings that avoid "aba"
A: Last symbol was "a"
AA: Last two symbols were "aa"
B: Last symbol was "b"
🧩 Productions (CFG Rules)
We define the grammar as:
S → aA | bS | ε
A → aAA | bS (a followed by a = "aa" OR a followed by b is safe unless "ab" is
, followed by "a")
AA → aAA | bS (still safe until we get "aba")
Now let’s analyze the safety:
We must avoid the substring "aba".
So we disallow:
From A, producing bA (i.e., forming "ab"), followed by a, which would
create "aba".
Therefore, after "ab" we must not allow a.
So we’ll need to track when we just saw "ab" and prevent a next.
📘 Final CFG (safe version with tracking):
Let’s define new non-terminals:
S: Start symbol.
A: Previous symbol was a.
AB: Previous two symbols were ab.
Now define productions:
S → aA | bS | ε
A → aA | bAB
AB → bS ; disallow `AB → a...` to avoid "aba"
✅ Explanation
S → aA starts with a, moves to A
A → bAB builds "ab" and moves to AB
AB → bS continues only if next is b, so no AB → a..., avoiding "aba"
All other transitions are safe and preserve valid strings.
🎓 Example strings generated:
ε (empty string) ✅
a✅
Assignment 2
(COMPLETE
ANSWERS) 2025
FOR MORE ASSISTANCE CONTACT:
100% TRUSTED WORKINGS, EXPLANATIONS
& SOLUTIONS
,COS3701 Assignment 2 (COMPLETE
ANSWERS) 2025
Question 1 10 Find CFGs for all words that do not have
the substring aba over the alphabet Σ = {a b}.
To construct a Context-Free Grammar (CFG) for all words over the alphabet Σ
= {a, b} that do not contain the substring "aba", we need to carefully design
rules that generate all such strings while preventing the forbidden pattern from
forming.
✅ Step-by-step approach:
We’ll define a CFG that:
Generates all strings over {a, b}
Avoids generating any string with "aba" as a substring
🎯 Key Idea
Keep track of the last few letters of the string being built, to avoid creating "aba".
📘 CFG Variables:
Let’s define the non-terminals as follows:
S: Start symbol — generates all strings that avoid "aba"
A: Last symbol was "a"
AA: Last two symbols were "aa"
B: Last symbol was "b"
🧩 Productions (CFG Rules)
We define the grammar as:
S → aA | bS | ε
A → aAA | bS (a followed by a = "aa" OR a followed by b is safe unless "ab" is
, followed by "a")
AA → aAA | bS (still safe until we get "aba")
Now let’s analyze the safety:
We must avoid the substring "aba".
So we disallow:
From A, producing bA (i.e., forming "ab"), followed by a, which would
create "aba".
Therefore, after "ab" we must not allow a.
So we’ll need to track when we just saw "ab" and prevent a next.
📘 Final CFG (safe version with tracking):
Let’s define new non-terminals:
S: Start symbol.
A: Previous symbol was a.
AB: Previous two symbols were ab.
Now define productions:
S → aA | bS | ε
A → aA | bAB
AB → bS ; disallow `AB → a...` to avoid "aba"
✅ Explanation
S → aA starts with a, moves to A
A → bAB builds "ab" and moves to AB
AB → bS continues only if next is b, so no AB → a..., avoiding "aba"
All other transitions are safe and preserve valid strings.
🎓 Example strings generated:
ε (empty string) ✅
a✅