0% found this document useful (0 votes)
23 views

Regular Language Properties

The document discusses properties of regular languages, including how to prove whether a language is regular or not using techniques like the pumping lemma. It also covers closure properties of regular languages, such as how regular languages are closed under operations like union, intersection, complementation, and reversal. Finally, the document provides examples of using the pumping lemma to prove that certain languages are not regular.

Uploaded by

SANDYA DUMPA
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views

Regular Language Properties

The document discusses properties of regular languages, including how to prove whether a language is regular or not using techniques like the pumping lemma. It also covers closure properties of regular languages, such as how regular languages are closed under operations like union, intersection, complementation, and reversal. Finally, the document provides examples of using the pumping lemma to prove that certain languages are not regular.

Uploaded by

SANDYA DUMPA
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 65

Properties of Regular

Languages

1
Topics
1) How to prove whether a given
language is regular or not?

2) Closure properties of regular


languages

3) Decision properties of regular


languages
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

5
How to prove languages are
not regular?
 The tool used for proving that a
language is not regular is the Pumping
Lemma.

6
The Pumping Lemma
Theorem 1: (the Pumping Lemma for regular languages):
Let 𝐿 be a regular language. Then there exists a constant
𝑛 (which depends on 𝐿) such that for every 𝑤 ∈ 𝐿,
where
𝑤 ≥ 𝑛, there exists strings 𝑥, 𝑦, and 𝑧 such
that
i. 𝑤𝑥𝑦= 𝑥𝑦𝑧,
≤ 𝑛,
ii. 𝑦 ≥ 1, and
iii.for all 𝑘 ≥ 0, 𝑥𝑦 𝑘 𝑧 ∈
iv. 𝐿.

7
Proof of the Pumping Lemma
Theorem 1: Let 𝐿 be a regular language. Then there exists a constant 𝑛 (which
depends on 𝐿) such that for every 𝑤 ∈ 𝐿, where 𝑤 ≥ 𝑛, there exists strings 𝑥, 𝑦,
and 𝑧 such that (i) 𝑤 = 𝑥𝑦𝑧, (ii) 𝑥𝑦≤ 𝑛, (iii) 𝑦 ≥ 1, and (iv) for all 𝑘 ≥ 0, 𝑥𝑦 𝑘 𝑧
∈ 𝐿.

 Since 𝐿 is regular, it is accepted by some DFA 𝑀.


 Let 𝑛 = the number of states in 𝑀.
 Pick any 𝑤 ∈ 𝐿, where 𝑤 > 𝑛.
 By the pigeonhole principle, 𝑀 must repeat a state
when processing the first 𝑛 symbols in 𝑤.

8
Proof of the Pumping Lemma
Theorem 1: Let 𝐿 be a regular language. Then there exists a constant 𝑛 (which
depends on 𝐿) such that for every 𝑤 ∈ 𝐿, where 𝑤 ≥ 𝑛, there exists strings 𝑥, 𝑦,
and 𝑧 such that (i) 𝑤 = 𝑥𝑦𝑧, (ii) 𝑥𝑦≤ 𝑛, (iii) 𝑦 ≥ 1, and (iv) for all 𝑘 ≥ 0, 𝑥𝑦 𝑘 𝑧
∈ 𝐿.

𝑀 must repeat a state, 𝑞, when processing the first 𝑛


symbols of input 𝑤.
Define strings 𝑥, 𝑦, and 𝑧 as in this figure:
𝑦
𝑥 𝑧
Start 𝑞0 𝑞

9
Proof of the Pumping Lemma
Theorem 1: Let 𝐿 be a regular language. Then there exists a constant 𝑛 (which
depends on 𝐿) such that for every 𝑤 ∈ 𝐿, where 𝑤 ≥ 𝑛, there exists strings 𝑥, 𝑦,
and 𝑧 such that (i) 𝑤 = 𝑥𝑦𝑧, (ii) 𝑥𝑦≤ 𝑛, (iii) 𝑦 ≥ 1, and (iv) for all 𝑘 ≥ 0, 𝑥𝑦 𝑘 𝑧
∈ 𝐿.
𝑦
𝑥 𝑧
Start 𝑞0
𝑞
The second occurrence of state 𝑞 must occur
within the first 𝑛 symbols of 𝑤, so 𝑥𝑦≤ 𝑛.
Also, 𝑦 ≥ 1.
It must be possible to repeat the “𝑦-loop” 0 or
more
times, and the resulting string will still be
accepted.
Therefore, 𝑥𝑦 𝑘 𝑧 ∈ 𝐿, for any 𝑘 ≥ 0.
10
Using the Pumping Lemma
 To show that a language 𝐿 is not regular, show that
the conditions of the Pumping Lemma do not
hold.
 Formally, the Pumping Lemma says:
∃𝑛
∷ (∀𝑤: 𝑤 ∈ 𝐿 ∧ 𝑤 ≥𝑛
∷ (∃𝑥, 𝑦, 𝑧: 𝑥𝑦𝑧 = 𝑤 ∧ 𝑥𝑦 ≤ 𝑛 ∧ 𝑦 ≥ 1

∷ ∀𝑘: 𝑘 ≥ 0 ∷ 𝑥𝑦 𝑘 𝑧 ∈ 𝐿 ))

11
Using the Pumping Lemma
 Toshow that a language 𝐿 is not regular, show that
the conditions of the Pumping Lemma do not
hold.
 The negation of the Pumping Lemma is:
∀𝑛
∷ (∃𝑤: 𝑤 ∈ 𝐿 ∧ 𝑤 ≥𝑛
∷ (∀𝑥, 𝑦, 𝑧: 𝑥𝑦𝑧 = 𝑤 ∧ 𝑥𝑦 ≤ 𝑛 ∧ 𝑦 ≥ 1

∷ ∃𝑘: 𝑘 ≥ 0 ∷ 𝑥𝑦 𝑘 𝑧 ∉ 𝐿 ) )

12
Using the Pumping Lemma
∀𝑛 No matter what 𝑛 is…

∷ (∃𝑤: 𝑤 ∈ 𝐿 ∧ 𝑤 ≥ 𝑛 We can find a string 𝑤 longer than 𝑛 in 𝐿…

Where no matter how 𝑤 is divided into


∷ (∀𝑥, 𝑦, 𝑧: 𝑥𝑦𝑧 = 𝑤 ∧ 𝑥𝑦 ≤ 𝑛 ∧ 𝑦 ≥ 1 substrings 𝑥, 𝑦, and 𝑧 (with some constraints)…

∷ ∃𝑘: 𝑘 ≥ 0 ∷ 𝑥𝑦 𝑘 𝑧 ))∉ 𝐿) ) We can find a value 𝑘 for which 𝑥𝑦 𝑘 𝑧 is not in 𝐿.

Show that this statement is true for 𝐿 to show that 𝐿


is not a regular language!

13
Using the Pumping Lemma: Example

 Consider the language 0𝑖 , where 𝑖 ≥ 1.


2

 We want to prove that this language is not regular.


 We need to show that ∀𝑛 ∷ (∃𝑤: 𝑤 ∈ 𝐿 ∧ ≥𝑛 ∷
𝑤
∀𝑥, 𝑦, 𝑧: 𝑥𝑦𝑧 = 𝑤 ∧ 𝑥𝑦 ≤ 𝑛 ∧ ≥ 1 ∷ ∃𝑘: 𝑘 ≥ 0 ∷ 𝑥𝑦 𝑘 𝑧 ∉ 𝐿 ) is
𝑦

true for 𝐿.
 The proof is like a game with an adversary:
 The adversary makes the “∀” choices.
 We make the “∃” choices.

14
Using the Pumping Lemma: Example
∀𝑛
2 ∷ (∃𝑤: 𝑤 ∈ 𝐿 ∧ 𝑤 ≥𝑛
𝐿 = 0𝑖 | 𝑖 ≥ 1
∷ (∀𝑥, 𝑦, 𝑧: 𝑥𝑦𝑧 = 𝑤 ∧ 𝑥𝑦 ≤ 𝑛 ∧ 𝑦 ≥
 Assume 𝐿 is regular (this will be a proof 1
by contradiction). ∷ ∃𝑘: 𝑘 ≥ 0 ∷ 𝑥𝑦 𝑘 𝑧 ∉ 𝐿 )

 Select any 𝑛.
 Let 𝑤 = 0𝑛 .
2

 Select any 𝑥𝑦𝑧 where 𝑤 = 𝑥𝑦𝑧, 𝑥𝑦 ≤ 𝑛, and 𝑦 ≥


1.
 This implies that 1 ≤ 𝑦 ≤ 𝑛.
 Let 𝑘 = 2. This means that 𝑥𝑦 𝑘 𝑧 has 𝑛 2 + 𝑦 0s.

15
Using the Pumping Lemma: Example

 (Reminder) 𝐿=
2
0𝑖 | 𝑖 ≥ 1
 Let 𝑘 = 2. This means that 𝑥𝑦 𝑘 𝑧 has 𝑛 2 + 𝑦 0s.
𝑤 has 𝑛 2 0s, and any entry in 𝐿 longer than 𝑤 must
have at least 𝑛 + 1 2 0s.
 𝑛 2 < 𝑛 2 + 1 ≤ 𝑛 2 + 𝑦 ≤ 𝑛 2 + 𝑛 < 𝑛 2 + 2𝑛 + 1.

The length The length of The length The length of = 𝑛 + 1 2 , the length
of 𝑤 (in 𝐿) 𝑥𝑦 2 𝑧 if 𝑦 = 1. of 𝑥𝑦 2 𝑧 𝑥𝑦 2 𝑧 if 𝑦 = 𝑛. of the next string in 𝐿.

 So, 𝑥𝑦 𝑘 𝑧 ∉ 𝐿, contradicting the Pumping


Lemma.

16
Using the Pumping Lemma: 2nd Example

 Consider the language 𝐿 =


𝑥 | 𝑥 contains an equal number of 0s and 1s
 Is 𝐿 regular?

17
Using the Pumping Lemma: 2nd Example

𝐿 = 𝑥 | 𝑥 contains an equal number of 0s and 1s


 Define 𝑤 = 0 𝑛 1 𝑛 for an arbitrary 𝑛. (𝑤 ∈ 𝐿)
 No matter how 𝑤 is divided into 𝑥, 𝑦, and 𝑧, 𝑦 must
consist solely of 0s because 𝑥𝑦 ≤ 𝑛 and 𝑦 ≠ 𝜀.
 Therefore, 𝑥𝑦 0 𝑧 has fewer 0s than 1s and is not in
𝐿.
 In this case, 𝑘 = 0.
 This proof would also work with any 𝑘 ≥ 2,
because 𝑥𝑦 𝑘 𝑧 would have more 0s than 1s.

18
Closure properties of Regular
Languages

19
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
20
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?
21
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.


22
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

23
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.

24
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 LM
(qF1 ,pF1)

a
(qi ,pi) (qj ,pj)


(q0 ,p0)

25
Example: Intersection
0 0
1 0
A B [A,C] [A,D]

0, 1 1
1 1
0
0
1 [B,C] [B,D]
0
1
0
C D

26
RLs are closed under set
difference
Closed under intersection
 We observe: Closed under
 L-M=L∩M complementation

 Therefore, L - M is also regular

27
Example:DFA for Difference 0

0
1 0
A B [A,C] [A,D]

0, 1 1
1 1
0
0
1 [B,C] [B,D]
0
1
0
C D

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
Closure Under Concatenation
and Kleene Closure

 Same idea:
 RS is a regular expression whose
language is LM.
 R* is a regular expression whose language
is L*.

32
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) = abab = abab
 In general,
 h(w) = h(a1) h(a2)… h(an)
33
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)
35
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))
36
Decision properties of regular
languages
Any “decision problem” looks like this:

Yes
Decision
Input problem
(generally solver
a question)
No

37
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.

38
Example: Testing Membership
01011
Next
symbol
0 0,1

1 1
A B C

Start 0

Current
state
39
Example: Testing Membership
01011
Next
symbol
0 0,1

1 1
A B C

Start 0

Current
state
40
Example: Testing Membership
01011
Next
symbol
0 0,1

1 1
A B C

Start 0

Current
state
41
Example: Testing Membership
01011
Next
symbol
0 0,1

1 1
A B C

Start 0

Current
state
42
Example: Testing Membership
01011
Next
symbol
0 0,1

1 1
A B C

Start 0

Current
state
43
Example: Testing Membership
01011
Next
symbol
0 0,1

1 1
A B C

Start 0

Current
state
44
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?


45
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?


46
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
47
Equivalence & Minimization of
DFAs

48
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

49
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
50
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) 51
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

52
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

53
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

54
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

55
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

56
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

57
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

58
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

59
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….

60
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
61
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
62
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?
63
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

64
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 65
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?

66

You might also like