Languages and Finite Automata

Reverse of a Regular Language
1
Theorem:
R
The reverse L of a regular language
is a regular language
L
Proof idea:
Construct NFA that accepts
R
L
:
invert the transitions of the NFA
that accepts L
2
Proof
Since L is regular,
there is NFA that accepts
L
Example:
b
L  ab * ba
a
b
a
3
Invert Transitions
b
a
b
a
4
Make old initial state a final state
b
a
b
a
5
Add a new initial state
b

a
b

a
6
Resulting machine accepts
R
L
R
L
is regular
L  ab * ba
b
L  b * a  ab
R

a
b

a
7
Grammars
8
Grammars
Grammars express languages
Example:
the English language
sentence  noun _ phrase
noun _ phrase  article
predicate  verb
predicate
noun
9
article  a
article  the
noun  boy
noun  dog
verb  runs
verb  walks
10
A derivation of “the boy walks”:
sentence  noun _ phrase
predicate
 noun _ phrase
verb
 article
verb
 the noun
noun
verb
 the boy verb
 the boy walks
11
A derivation of “a dog runs”:
sentence  noun _ phrase
predicate
 noun _ phrase
verb
 article
noun
verb
 a noun
verb
 a dog verb
 a dog runs
12
Language of the grammar:
L = { “a boy runs”,
“a boy walks”,
“the boy runs”,
“the boy walks”,
“a dog runs”,
“a dog walks”,
“the dog runs”,
“the dog walks” }
13
Notation
noun  boy
noun  dog
Variable
or
Non-terminal
Production
rule
Terminal
14
Another Example
Grammar:
S  aSb
S 
Derivation of sentence
ab :
S  aSb  ab
S  aSb
S 
15
Grammar:
S  aSb
S 
Derivation of sentence
aabb :
S  aSb  aaSbb  aabb
S  aSb
S 
16
Other derivations:
S  aSb  aaSbb  aaaSbbb  aaabbb
S  aSb  aaSbb  aaaSbbb
 aaaaSbbbb  aaaabbbb
17
Language of the grammar
S  aSb
S 
L  {a b : n  0}
n n
18
More Notation
Grammar
G  V ,T , S , P 
V:
Set of variables
T:
Set of terminal symbols
S : Start variable
P:
Set of Production rules
19
Example
Grammar
G:
S  aSb
S 
G  V ,T , S , P 
V  {S}
T  {a, b}
P  {S  aSb, S  }
20
More Notation
Sentential Form:
A sentence that contains
variables and terminals
Example:
S  aSb  aaSbb  aaaSbbb  aaabbb
Sentential Forms
sentence
21
We write:
*
S  aaabbb
Instead of:
S  aSb  aaSbb  aaaSbbb  aaabbb
22
In general we write:
If:
*
w1  wn
w1  w2  w3    wn
23
By default:
*
w  w
24
Example
Grammar
S  aSb
S 
Derivations
*
S 
*
S  ab
*
S  aabb
*
S  aaabbb
25
Example
Grammar
S  aSb
S 

Derivations
S  aaSbb

aaSbb  aaaaaSbbbbb
26
Another Grammar Example
Grammar G : S  Ab
A  aAb
A
Derivations:
S  Ab  b
S  Ab  aAbb  abb
S  aAbb  aaAbbb  aabbb
27
More Derivations
S  Ab  aAbb  aaAbbb  aaaAbbbb
 aaaaAbbbbb  aaaabbbbb

S  aaaabbbbb

S  aaaaaabbbbbbb

S a b b
n n
28
Language of a Grammar
For a grammar G
with start variable
S :

L(G )  {w : S  w}
String of terminals
29
Example
For grammar
S  Ab
G:
A  aAb
A
L(G )  {a b b : n  0}
n n
Since:

S a b b
n n
30
A Convenient Notation
A  aAb
A
article  a
article  the
A  aAb | 
article  a | the
31
Linear Grammars
32
Linear Grammars
Grammars with
at most one variable at the right side
of a production
Examples:
S  aSb
S  Ab
S 
A  aAb
A
33
A Non-Linear Grammar
Grammar
G:
S  SS
S 
S  aSb
S  bSa
L(G )  {w : na ( w)  nb ( w)}
34
Another Linear Grammar
Grammar
G :
SA
A  aB | 
B  Ab
L(G)  {a b : n  0}
n n
35
Right-Linear Grammars
All productions have form:
A  xB
or
A x
Example:
S  abS
S a
36
Left-Linear Grammars
All productions have form:
A  Bx
or
A x
Example:
S  Aab
A  Aab | B
Ba
37
Regular Grammars
38
Regular Grammars
A regular grammar is any
right-linear or left-linear grammar
Examples:
G1
G2
S  abS
S  Aab
S a
A  Aab | B
Ba
39
Observation
Regular grammars generate regular languages
Examples:
G1
G2
S  Aab
S  abS
A  Aab | B
S a
Ba
L(G1)  (ab) * a
L(G2 )  aab(ab) *
40
Regular Grammars
Generate
Regular Languages
41
Theorem
Languages
Generated by
Regular Grammars

Regular
Languages
42
Theorem - Part 1
Languages
Generated by
Regular Grammars

Regular
Languages
Any regular grammar generates
a regular language
43
Theorem - Part 2
Languages
Generated by
Regular Grammars

Regular
Languages
Any regular language is generated
by a regular grammar
44
Proof – Part 1
Languages
Generated by
Regular Grammars

Regular
Languages
The language L(G ) generated by
any regular grammar G is regular
45
The case of Right-Linear Grammars
Let
G be a right-linear grammar
We will prove:
Proof idea:
L(G ) is regular
We will construct NFA
with L( M )  L(G )
M
46
Grammar
G is right-linear
Example:
S  aA | B
A  aa B
Bb B|a
47
Construct NFA M such that
every state is a grammar variable:
A
S
S  aA | B
VF
special
final state
B
A  aa B
Bb B|a
48
Add edges for each production:
a
A
S
VF
B
S  aA
49
a
S
A
VF

B
S  aA | B
50
A
a
a
S
a

VF
B
S  aA | B
A  aa B
51
A
a
a
S
S  aA | B
A  aa B
B  bB
VF
a

B
b
52
A
a
a
S
S  aA | B
A  aa B
B  bB | a
a

VF
a
B
b
53
A
a
a
S
a

VF
a
B
b
S  aA  aaaB  aaabB  aaaba
54
NFA
Grammar
M
a
G
S  aA | B
a
B  bB | a
A
a
S

A  aa B
VF
a
B
b
L( M )  L(G ) 
aaab * a  b * a
55
In General
A right-linear grammar
has variables:
G
V0 ,V1,V2 ,
and productions:
Vi  a1a2 amV j
or
Vi  a1a2  am
56
We construct the NFA
each variable
M such that:
Vi corresponds to a node:
V1
V3
V0
VF
V2
V4
special
final state57
For each production:
Vi  a1a2 amV j
we add transitions and intermediate nodes
Vi
a1
a2
………
am V
j
58
For each production:
Vi  a1a2  am
we add transitions and intermediate nodes
Vi
a1
a2
………
am
VF
59
Resulting NFA
M looks like this:
a9
a1
V0
a2
V1
a3
V3
a5
a4
a3
V2
It holds that:
a4
a5
a8
V4
L(G )  L( M )
a9
VF
60
The case of Left-Linear Grammars
Let
G be a left-linear grammar
We will prove:
L(G ) is regular
Proof idea:
We will construct a right-linear
R

grammar G with L(G )  L(G)
61
Since G is left-linear grammar
the productions look like:
A  Ba1a2  ak
A  a1a2 ak
62
Construct right-linear grammar
In
G:
G
A  Ba1a2  ak
A  vB
In
G :
A  ak a2a1B
Av B
R
63
Construct right-linear grammar
In
G:
G
A  a1a2 ak
Av
In
G :
A  ak  a2 a1
Av
R
64
It is easy to see that:
Since
L(G)  L(G)
R
G is right-linear, we have:
L(G)
L(G)
Regular
Language
Regular
Language
R
L(G )
Regular
Language
65
Proof - Part 2
Languages
Generated by
Regular Grammars

Regular
Languages
Any regular language L is generated
by some regular grammar G
66
Any regular language L is generated
by some regular grammar G
Proof idea:
Let
M be the NFA with L  L(M ).
Construct from M a regular grammar
such that L( M )  L(G )
G
67
Since L is regular
there is an NFA M such that
L  L(M )
b
Example:
M
q0
a
q1
a

L  ab * ab(b * ab) *
L  L(M )
q2
b
q3
68
Convert
M to a right-linear grammar
b
M
q0
q0  aq1
a
q1
a

q2
b
q3
69
b
M
q0
q0  aq1
q1  bq1
q1  aq2
a
q1
a

q2
b
q3
70
b
M
q0  aq1
q1  bq1
q1  aq2
q0
a
q1
a

q2
b
q3
q2  bq3
71
L(G )  L( M )  L
b
G
q0  aq1
q1  bq1
q1  aq2
q2  bq3
M
q0
a
q1
a

q2
b
q3
q3  q1
q3  
72
In General
a
For any transition:
q
Add production:
q  ap
variable
terminal
p
variable
73
For any final state:
Add production:
qf
qf 
74
Since
G is right-linear grammar
G is also a regular grammar
with
L(G )  L( M )  L
75