Properties of Regular
Languages
Reading: Chapter 4
1
Topics
1) How to prove whether a given
language is regular or not?
2) Closure properties of regular
languages
3) Minimization of DFAs
2
Some languages are not
regular
When is a language is regular?
if we are able to construct one of the
following: DFA or NFA or -NFA or regular
expression
When is it not?
If we can show that no FA can be built for a
language
3
How to prove languages are
not regular?
What if we cannot come up with any FA?
A) Can it be language that is not regular?
B) Or is it that we tried wrong approaches?
How do we decisively prove that a language
is not regular?
“The hardest thing of all is to find a black cat in a dark room,
especially if there is no cat!” -Confucius
4
Example of a non-regular
language
Let L = {w | w is of the form 0n1n , for all n≥0}
Hypothesis: L is not regular
Intuitive rationale: How do you keep track of
a running count in an FA?
A more formal rationale:
By contradition, if L is regular then there should exist a DFA
for L.
Let k = number of states in that DFA.
Consider the special word w= 0k1k => w L
DFA is in some state pi, after consuming the first i symbols in
w
5
Uses Pigeon Hole Principle
Rationale…
Let {p0,p1,… pk} be the sequence of states that the
DFA should have visited after consuming the first k
symbols in w which is 0k
But there are only k states in the DFA!
==> at least one state should repeat somewhere
along the path (by ++ Principle)
==> Let the repeating state be pi=pJ for i < j
==> We can fool the DFA by inputing 0(k-(j-i))1k and
still get it to accept (note: k-(j-i) is at most k-1).
==> DFA accepts strings w/ unequal number of 0s
and 1s, implying that the DFA is wrong!
6
The Pumping Lemma for
Regular Languages
What it is?
The Pumping Lemma is a property
of all regular languages.
How is it used?
A technique that is used to show that
a given language is not regular
7
Pumping Lemma for Regular
Languages
Let L be a regular language
Then there exists some constant N such that for
every string w L s.t. |w|≥N, there exists a
way to break w into three parts, w=xyz,
such that:
1. y≠
2. |xy|≤N
3. For all k≥0, all strings of the form xykz L
This property should hold for all regular languages.
Definition: N is called the “Pumping Lemma Constant” 8
Pumping Lemma: Proof
L is regular => it should have a DFA.
Set N := number of states in the DFA
Any string wL, s.t. |w|≥N, should have the
form: w=a1a2…am, where m≥N
Let the states traversed after reading the first
N symbols be: {p0,p1,… pN}
==> There are N+1 p-states, while there are only
N DFA states
==> at least one state has to repeat
i.e, pi= pJwhere 0≤i<j≤N (by PHP)
9
Pumping Lemma: Proof…
=> We should be able to break w=xyz as follows:
x=a1a2..ai; y=ai+1ai+2..aJ; z=aJ+1aJ+2..am
x’s path will be p0..pi
y’s path will be pi pi+1..pJ (but pi=pJ implying a loop)
z’s path will be pJpJ+1..pm yk (for k loops)
Now consider another x z
p0 pi pm
string wk=xykz , where k≥0
=pj
Case k=0
DFA will reach the accept state pm
Case k>0
DFA will loop for yk, and finally reach the accept state pm for z
This proves part (3) of the lemma
In either case, wk L
10
Pumping Lemma: Proof…
For part (1): yk (for k loops)
x z
Since i<j, y ≠ p0 pi pm
=pj
For part (2):
By PHP, the repetition of states has to
occur within the first N symbols in w
==> |xy|≤N
11
The Purpose of the Pumping
Lemma for RL
To prove that some languages cannot
be regular.
12
How to use the pumping
lemma?
Think of playing a 2 person game
Role 1: We claim that the language cannot be
regular
Role 2: An adversary who claims the
language is regular
We show that the adversary’s statement will lead
to a contradiction that implyies pumping lemma
cannot hold for the language.
13
How to use the pumping
lemma? (The Steps)
1. (we) L is not regular.
2. (adv.) Claims that L is regular and gives you
a value for N as its P/L constant
3. (we) Using N, choose a string w L s.t.,
1. |w| ≥ N,
2. Using w as the template, construct other words
wk of the form xykz and show that at least one
such wk L
=> this implies we have successfully broken the
pumping lemma for the language, and hence that the
adversary is wrong.
(Note: In this process, we may have to try many values of k,
starting with k=0, and then 2, 3, .. so on, until wk L ) 14
Note: We don’t have any control over N, except that it is positive.
We also don’t have any control over how to split w=xyz,
but xyz should respect the P/L conditions (1) and (2).
Using the Pumping Lemma
What WE do? What the Adversary does?
1. Claims L is regular
2. Provides N
3. Using N, we construct
our template string w
4. Demonstrate to the
adversary, either
through pumping up or
down on w, that some
string wk L
(this should happen
regardless of w=xyz) 15
Note: This N can be anything (need not necessarily be the #states in the DFA.
It’s the adversary’s choice.)
Example of using the Pumping Lemma to
prove that a language is not regular
Let Leq = {w | w is a binary string with equal number
of 1s and 0s}
Your Claim: Leq is not regular
Proof:
adv.
By contradiction, let Leq be regular
P/L constant should exist adv.
Let N = that P/L constant
you
Consider input w = 0N1N
(your choice for the template string)
you
By pumping lemma, we should be able to break
w=xyz, such that:
1) y≠
2) |xy|≤N
3) For all k≥0, the string xykz is also in L 16
Template string w = 0N1N = 00 …. 011 … 1
N N
Proof…
Because |xy|≤N, xy should contain only 0s you
(This and because y≠ , implies y=0+)
Therefore x can contain at most N-1 0s
Also, all the N 1s must be inside z
By (3), any string of the form xykz Leq for all k≥0
Setting k=0 is Case k=0: xz has at most N-1 0s but has N 1s
referred to as
“pumping down” Therefore, xy0z Leq
This violates the P/L (a contradiction)
Another way of proving this will be to show that if
Setting k>1 is the #0s is arbitrarily pumped up (e.g., k=2),
referred to as
“pumping up” then the #0s will become exceed the #1s
17
Exercise 2
Prove L = {0n10n | n≥ 1} is not regular
Note: This n is not to be confused with the pumping
lemma constant N. That can be different.
In other words, the above question is same as
proving:
L = {0m10m | m≥ 1} is not regular
18
Example 3: Pumping Lemma
Claim: L = { 0i | i is a perfect square} is not regular
Proof:
By contradiction, let L be regular.
P/L should apply
Let N = P/L constant
Choose w=0N2
By pumping lemma, w=xyz satisfying all three rules
By rules (1) & (2), y has between 1 and N 0s
By rule (3), any string of the form xykz is also in L for all k≥0
Case k=0:
#zeros (xy0z) = #zeros (xyz) - #zeros (y)
N – N ≤ #zeros (xy0z) ≤ N2 - 1
2
(N-1)2 < N2 - N ≤ #zeros (xy0z) ≤ N2 - 1 < N2
xy0z L
But the above will complete the proof ONLY IF N>1.
… (proof contd.. Next slide)
19
Example 3: Pumping Lemma
(proof contd…)
If the adversary pick N=1, then (N-1)2 ≤ N2 – N, and therefore the #zeros(xy0z)
could end up being a perfect square!
This means that pumping down (i.e., setting k=0) is not giving us the proof!
So lets try pumping up next…
Case k=2:
#zeros (xy2z) = #zeros (xyz) + #zeros (y)
N + 1 ≤ #zeros (xy2z) ≤ N2 + N
2
N2 < N2 + 1 ≤ #zeros (xy2z) ≤ N2 + N < (N+1)2
xy2z L
(Notice that the above should hold for all possible N values of N>0. Therefore,
this completes the proof.)
20
Closure properties of Regular
Languages
21
Closure properties for Regular
Languages (RL) This
Thisisisdifferent
different
from
fromKleene
Kleene
closure
Closure property: closure
If a set of regular languages are combined using
an operator, then the resulting language is also
regular
Regular languages are closed under:
Union, intersection, complement, difference
Reversal
Kleene closure
Concatenation Now, lets prove all of this!
Homomorphism
Inverse homomorphism
22
RLs are closed under union
IF L and M are two RLs THEN:
they both have two corresponding regular
expressions, R and S respectively
(L U M) can be represented using the regular
expression R+S
Therefore, (L U M) is also regular
How can this be proved using FAs?
23
RLs are closed under
complementation
If L is an RL over ∑, then L=∑*-L
To show L is also regular, make the following
construction Convert every final state into non-final, and
every non-final state into a final state
DFA for L DFA for L
qF1 qF1
q0 qi qF2 q0 qi qF2
…
…
qFk qFk
Assumes q0 is a non-final state. If not, do the opposite.
24
RLs are closed under
intersection
A quick, indirect way to prove:
By DeMorgan’s law:
L ∩ M = (L U M)
Since we know RLs are closed under union
and complementation, they are also closed
under intersection
A more direct way would be construct a
finite automaton for L ∩ M
25
DFA construction for L ∩ M
AL = DFA for L = {QL, ∑ , qL,FL, δL }
AM = DFA for M = {QM, ∑ , qM,FM, δM }
Build AL ∩ M = {QLx QM,∑, (qL,qM), FLx FM,δ}
such that:
δ((p,q),a) = (δL(p,a), δM(q,a)), where p in QL, and q in
QM
This construction ensures that a string w will
be accepted if and only if w reaches an
accepting state in both input DFAs.
26
DFA construction for L ∩ M
DFA for L DFA for M
qF1 pF1
a a
q0 qi qj qF2 p0 pi pj pF2
…
DFA for LM
(qF1 ,pF1)
a
(qi ,pi) (qj ,pj)
…
(q0 ,p0)
27
RLs are closed under set
difference
Closed under intersection
We observe: Closed under
L-M=L∩M complementation
Therefore, L - M is also regular
28
RLs are closed under reversal
Reversal of a string w is denoted by wR
E.g., w=00111, wR=11100
Reversal of a language:
LR = The language generated by
reversing all strings in L
Theorem: If L is regular then LR is also
regular
29
-NFA Construction for LR
New -NFA for LR
DFA for L
qF1
q0 qi
a
qj qF2 q’0 New start
state
…
Make the
old start state
as the only new qFk
final state
What to do if q0 was Reverse all transitions
one of the final states Convert the old set of final states
in the input DFA? into non-final states 30
If L is regular, LR is regular (proof
using regular expressions)
Let E be a regular expression for L
Given E, how to build ER?
Basis: If E= , Ø, or a, then ER=E
Induction: Every part of E (refer to the part as “F”)
can be in only one of the three following forms:
1. F = F1+F2
FR = F1R+F2R
2. F = F1F2
FR = F2RF1R
3. F = (F1)*
(FR)* = (F1R)*
31
Homomorphisms
Substitute each symbol in ∑ (main alphabet)
by a corresponding string in T (another
alphabet)
h: ∑--->T*
Example:
Let ∑={0,1} and T={a,b}
Let a homomorphic function h on ∑ be:
h(0)=ab, h(1)=
If w=10110, then h(w) = abab = abab
In general,
h(w) = h(a1) h(a2)… h(an)
32
Given a DFA for L, how to convert it into an FA for h(L)?
FA Construction for h(L)
Replace every edge
“a” by
DFA for L
qF1 a path labeled h(a)
in the new DFA
a
q0 qi qj qF2
h(a)
…
qFk
- Build a new FA that simulates h(a) for every symbol a transition in
the above DFA
- The resulting FA may or may not be a DFA, but will be a FA for h(L)
34
Given a DFA for M, how to convert it into an FA for h -1(M)? The set of strings in ∑*
whose homomorphic translation
results in the strings of M
Inverse homomorphism
Let h: ∑--->T*
Let M be a language over alphabet T
h-1(M) = {w | w ∑* s.t., h(w) M }
Claim: If M is regular, then so is h-1(M)
Proof:
Let A be a DFA for M
Construct another DFA A’ which encodes h-1(M)
A’ is an exact replica of A, except that its transition
functions are s.t. for any input symbol a in ∑, A’ will
simulate h(a) in A.
δ(p,a) = δ(p,h(a))
35
Decision properties of regular
languages
Any “decision problem” looks like this:
Yes
Decision
Input problem
(generally solver
a question)
No
36
Membership question
Decision Problem: Given L, is w in L?
Possible answers: Yes or No
Approach:
1. Build a DFA for L
2. Input w to the DFA
3. If the DFA ends in an accepting state,
then yes; otherwise no.
37
Emptiness test
Decision Problem: Is L=Ø ?
Approach:
On a DFA for L:
1. From the start state, run a reachability test, which
returns:
1. success: if there is at least one final state that is
reachable from the start state
2. failure: otherwise
2. L=Ø if and only if the reachability test fails
How to implement the reachability test?
38
Finiteness
Decision Problem: Is L finite or infinite?
Approach:
On a DFA for L:
1. Remove all states unreachable from the start state
2. Remove all states that cannot lead to any accepting state.
3. After removal, check for cycles in the resulting FA
4. L is finite if there are no cycles; otherwise it is infinite
Another approach
Build a regular expression and look for Kleene closure
How to implement steps 2 and 3?
39
Finiteness test - examples
Ex 1) Is the language of this DFA finite or infinite?
X FINITE
0
X q6 1
Ex 2) Is the language of this DFA finite or infinite?
INFINITE
X
0
to this
due
1
40
Equivalence & Minimization of
DFAs
41
Applications of interest
Comparing two DFAs:
L(DFA1) == L(DFA2)?
How to minimize a DFA?
1. Remove unreachable states
2. Identify & condense equivalent states into one
42
When to call two states in a DFA
“equivalent”?
Past doesn’t matter - only future does!
Two states p and q are said to be
equivalent iff:
i) Any string w accepted by starting at p is also accepted by
starting at q;
p
w
AND
q
ii) Any string w rejected by starting at p is also rejected by
starting at q.
p
w
q
p≡q
43
Computing equivalent states
in a DFA Table Filling Algorithm
A =
0 1
B = =
0 1 0
A C E G C x x =
1 0 1
0 1 D x x x =
1 1 0 E x x x x =
B D F H
1 0 F x x x x x =
0
Pass #0 G x x x = x x =
1. Mark accepting states ≠ non-accepting states
H x x = x x x x =
Pass #1
2. Compare every pair of states A B C D E F G H
3. Distinguish by one symbol transition
4. Mark = or ≠ or blank(tbd)
Pass #2
5. Compare every pair of states
6. Distinguish by up to two symbol transitions (until different or same or tbd)
….
(keep repeating until table complete) 44
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C =
1 0 1
0 1 D =
1 1 0 E =
B D F H
1 0 F =
0
G =
H =
A B C D E F G H
45
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C =
1 0 1
0 1 D =
1 1 0 E X X X X =
B D F H
1 0 F X =
0
G X =
1. Mark X between accepting vs. non-accepting state
H X =
A B C D E F G H
46
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C X =
1 0 1
0 1 D X =
1 1 0 E X X X X =
B D F H
1 0 F X =
0
G X X =
1. Mark X between accepting vs. non-accepting state
H X X =
2. Look 1- hop away for distinguishing states or strings A B C D E F G H
47
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C X X =
1 0 1
0 1 D X X =
1 1 0 E X X X X =
B D F H
1 0 F X =
0
G X X X =
1. Mark X between accepting vs. non-accepting state
H X X X =
2. Look 1- hop away for distinguishing states or strings A B C D E F G H
48
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C X X =
1 0 1
0 1 D X X X =
1 1 0 E X X X X =
B D F H
1 0 F X X =
0
G X X X X =
1. Mark X between accepting vs. non-accepting state
H X X = X =
2. Look 1- hop away for distinguishing states or strings A B C D E F G H
49
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C X X =
1 0 1
0 1 D X X X =
1 1 0 E X X X X =
B D F H
1 0 F X X X =
0
G X X X = X =
1. Mark X between accepting vs. non-accepting state
H X X = X X =
2. Look 1- hop away for distinguishing states or strings A B C D E F G H
50
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C X X =
1 0 1
0 1 D X X X =
1 1 0 E X X X X =
B D F H
1 0 F X X X =
0
G X X X = X X =
1. Mark X between accepting vs. non-accepting state
H X X = X X X =
2. Look 1- hop away for distinguishing states or strings A B C D E F G H
51
Table Filling Algorithm - step
by step
A =
0 1
B =
0 1 0
A C E G C X X =
1 0 1
0 1 D X X X =
1 1 0 E X X X X =
B D F H
1 0 F X X X =
0
G X X X = X X =
1. Mark X between accepting vs. non-accepting state
H X X = X X X X =
2. Look 1- hop away for distinguishing states or strings A B C D E F G H
52
Table Filling Algorithm - step
by step
A =
0 1
B = =
0 1 0
A C E G C X X =
1 0 1
0 1 D X X X =
1 1 0 E X X X X =
B D F H
1 0 F X X X X X =
0
G X X X = X X =
. Mark X between accepting vs. non-accepting state
H X X = X X X X =
. Pass 1: A B C D E F G H
Look 1- hop away for distinguishing states or strings
. Pass 2:
Look 1-hop away again for distinguishing states or strings
continue….
53
Table Filling Algorithm - step
by step
A =
0 1
B = =
0 1 0
A C E G C X X =
1 0 1
0 1 D X X X =
1 1 0 E X X X X =
B D F H
1 0 F X X X X X =
0
G X X X = X X =
. Mark X between accepting vs. non-accepting state
H X X = X X X X =
. Pass 1: A B C D E F G H
Look 1- hop away for distinguishing states or strings
. Pass 2:
Look 1-hop away again for distinguishing states or strings Equivalences:
continue…. • A=B
• C=H
• D=G
54
Table Filling Algorithm - step
by step
0 1 0 1
0 1 0 0 1
A C E G A C E
1 0 1 1 0
0 1 0
1 1 0 1
B D F H D F
1 0 1 0
0
Retrain only one copy for
each equivalence set of states
Equivalences:
• A=B
• C=H
• D=G
55
Table Filling Algorithm –
special case
A =
0 1
B =
0 1 0
A C E G C =
1 0 1
0 1 D =
1 1 0 E ? =
B D F H
1 F =
0
0 G =
H =
A B C D E F G H
Q) What happens if the input DFA
has more than one final state?
Can all final states initially be treated
as equivalent to one another?
56
Putting it all together …
How to minimize a DFA?
Goal: Minimize the number of states in
a DFA
Depth-first traversal from the start state
Algorithm:
1. Eliminate states unreachable from the
start state Table filling algorithm
2. Identify and remove equivalent states
3. Output the resultant DFA
57
Are Two DFAs Equivalent?
Unified DFA DFA1
q0 …
Is q0 ≡ q0’?
: if yes, then DFA1≡DFA2
DFA2 : else, not equiv.
q0’ …
1. Make a new dummy DFA by just putting together both DFAs
2. Run table-filling algorithm on the unified DFA
3. IF the start states of both DFAs are found to be equivalent,
THEN: DFA1≡ DFA2
ELSE: different 58
Summary
How to prove languages are not regular?
Pumping lemma & its applications
Closure properties of regular languages
Simplification of DFAs
How to remove unreachable states?
How to identify and collapse equivalent states?
How to minimize a DFA?
How to tell whether two DFAs are equivalent?
59