Closure Properties of Regular Grammars¶
1. Closure Properties of Regular Grammars¶
1.1. Closure Concept¶
Definition: A set is closed over a (binary) operation if, whenever the operation is applied to two members of the set, the result is a member of the set.
Example 1
L={x|xis a positive even integer}
Is L is closed under the following?
- addition? Yes. [How do you know? Need a proof.]
- multiplication? Yes. [How do you know? Need a proof.]
- subtraction? No. 6−10=−4. [Now you know!]
- division? No. 4/4=1. [Now you know!]
1.2. Closure of Regular Languages¶
Consider regular languages L1 and L2. In other words, ∃ regular expressions r1 and r2 such that L1=L(r1) and L2=L(r2).
These we already know: [Ask yourself: Why do we know this?]
- r1+r2 is a regular expression denoting L1∪L2 So, regular languages are closed under union.
- r1r2 is a regular expression denoting L1L2. So, regular languages are closed under concatenation.
- r∗1 is a regular expression denoting L∗1. So, regular languages are closed under star-closure.
Proof: Regular languages are closed under complementation.
Note
Why a DFA, will an NFA work? With difficulty: It must be a complete NFA with trap states added.
Proof: Regular languages are closed under intersection.
One simple way to prove this is using DeMorgan's Law:
Here is another approach by construction.
Note
The idea is to construct a DFA so that it accepts only if both M1 and M2 accept
1.3. Regular languages are closed under these operations¶
Reversal: LR
Difference: L1−L2
Right quotient:
Definition: L1∖L2={x|xy∈L1 for some y∈L2}
In other words, it is prefixs of appropriate strings in L1.
Example 3
Theorem: If L1 and L2 are regular, then L1∖L2 is regular.
Proof: (sketch)
∃ DFA M=(Q,Σ,δ,q0,F) such that L1=L(M).
Construct DFA M′=(Q,Σ,δ,q0,F′) (equivalent to M except for final states).
Note
Not empty means there's a path between start and a final state.
QED.
Homomorphism:
Definition: Let Σ,Γ be alphabets. A homomorphism is a function h:Σ→Γ∗
Homomorphism means to substitute a single letter with a string.
Example 4
1.4. Questions about regular languages¶
L is a regular language.
Given L,Σ,w∈Σ∗, is w∈L?
Answer: Construct a FA and test if it accepts w.
Is L empty?
Example: L={anbm|n>0,m>0}∩{bnam|n>1,m>1} is empty.
Construct a FA. If there is a path from start state to a final state, then L is not empty.
Note
Perform depth first search.
This was easy! But we will see that in other contexts that complement is not so simple to decide.
Is L infinite?
Construct a FA. Determine if any of the vertices on a path from the start state to a final state are the base of some cycle. If so, then L is infinite.
Does L1=L2?
Construct L3=(L1∩¯L2)∪(¯L1∩L2). If L3=∅, then L1=L2.
Again, in other contexts, this is impossible. For example, we will prove that its not possible to decide, in general, if two programs do the same thing.
1.5. Summary: How do we prove that a language is regular?¶
We have a number of approaches in our toolbox.
- Write a DFA that accepts the language.
- Write a NFA that accepts the language.
- Write a regular expression that accepts the language.
- Write a regular grammar tha accepts the language.
- Define the language in terms of one or more known regular languages that are manipulated by operators known to be closed under for regular languages.