300 likes | 431 Vues
This module explores the design of a Context-Free Grammar (CFG) for the language EQUAL, which consists of all strings over the alphabet {a, b} with an equal number of 'a's and 'b's. We will demonstrate the recursive production rules required to generate valid strings and discuss the proof of correctness for our CFG. The process includes defining base and recursive cases, examples, and inductive proofs to ensure every string in EQUAL can be produced by the defined grammar and that the grammar generates only strings from EQUAL.
E N D
Module 30 • EQUAL language • Designing a CFG • Proving the CFG is correct
EQUAL language Designing a CFG
EQUAL • EQUAL is the set of strings over {a,b} with an equal number of a’s and b’s • Strings in EQUAL include • aabbab • bbbaaa • abba • Strings in {a,b}* not in EQUAL include • aaa • bbb • aab • ababa
Designing a CFG for EQUAL * • Think recursively • Base Case • What is the shortest possible string in EQUAL? • Production Rule:
Recursive Case * • Recursive Case • Now consider a longer string x in EQUAL • Since x has length > 0, x must have a first character • This must be a or b • Two possibilities for what x looks like • x = ay • What must be true about relative number of a’s and b’s in y? • x = bz • What must be true about relative number of a’s and b’s in z?
Case 1: x=ay * • x = ay where y has one extra b • What must y look like? • Some examples • b • babba • aabbbab • aaabbbb • Is there a general pattern that applies to all of the above examples? • More specifically, show how we can decompose all of the above strings y into 3 pieces, two of which belong to EQUAL. • Some of these pieces might be the empty string l
Decomposing y • y has one extra b • Possible examples • b, babba, aabbbab, aaabbbb • Decomposition • y = ubv where • u and v both have an equal number of a’s and b’s • Decompose the 4 strings above into u, b, v • lbl,aabbbab, lbabba, aaabbbbl
Implication * • Case 1: x=ay • y has one extra b • Case 1 refined: x=aubv • u, v belong to EQUAL • Production rule for this case?
Case 2: x=bz * • Case 2: x=bz • z has one extra a • Case 2 refined: x=buav • u, v belong to EQUAL • Production rule for this case?
Final Grammar * • EG = (V, S, S, P) • V = {S} • S = {a,b} • S = S • P:
EQUAL language Proving CFG is correct
Is our grammar correct? • How do we prove our grammar is correct? • Informal • Test some strings • Review logic behind program (CFG) design • Formal • First, show every string derived by EG belongs to EQUAL • That is, show L(EG) is a subset of EQUAL • Second, show every string in EQUAL can be derived by EG • That is, show EQUAL is a subset of L(EG) • Both proofs will be inductive proofs • Inductive proofs and recursive algorithms go well together
L(EG) subset of EQUAL • Let x be an arbitrary string in L(EG) • What does this mean? • S ==>*EG x • Follows from definition of x in L(EG) • We will prove the following • If S ==>1EG x, then x is in EQUAL • If S ==>2EG x, then x is in EQUAL • If S ==>3EG x, then x is in EQUAL • If S ==>4EG x, then x is in EQUAL • ...
Base Case * • Statement to be proven: • For all n >= 1, if S ==>nEG x, then x is in EQUAL • Prove this by induction on n • Base Case: • n = 1 • What is the set of strings {x | S ==>1EG x}? • What do we need to prove about this set of strings?
Inductive Case • Inductive Hypothesis: • For 1 <= j <= n, if S ==>jEG x, then x is in EQUAL • Note, this is a “strong” induction hypothesis • Traditional inductive hypothesis would take form: • For some n >= 1, if S ==>nEG x, then x is in EQUAL • The difference is we assume the basic hypothesis for all integers between 1 and n, not just n • Statement to be Proven in Inductive Case: • If S ==>n+1EG x, then x is in EQUAL
Infinite Set of Facts Fact 1 Fact 2 Fact 3 Fact 4 Fact 5 Fact 6 … Base Case Prove fact 1 Regular inductive case For n >= 1, Fact n --> Fact n+1 Strong inductive case For n >= 1, Fact 1 to Fact n --> Fact n+1 “Regular” induction vs Strong induction
Visualization of Induction Regular Induction Strong Induction Fact 1 Fact 1 Fact 2 Fact 2 Fact 3 Fact 3 Fact 4 Fact 4 Fact 5 Fact 5 Fact 6 Fact 6 Fact 7 Fact 7 Fact 8 Fact 8 Fact 9 Fact 9 … …
Proving Inductive Case * • If S ==>n+1EG x, then x is in EQUAL • Let x be an arbitrary string such that S ==>n+1EG x • Examining EG, what are the three possible first derivation steps • Case 1: S ==> ==>nEG x • Case 2: S ==> ==>nEG x • Case 3: S ==> ==>nEG x • One of the cases is impossible. Which one and why?
Case 2: S ==> ==>nEG x * • This means x has the form aubv where • What can we conclude about u (don’t apply IH)? • What can we conclude about v (don’t apply IH)? • Apply the inductive hypothesis • u and v belong to EQUAL • Why do we need the strong inductive hypothesis? • Conclude x belongs to EQUAL • x = aubv where u and v belong to EQUAL • Clearly the number of a’s in x equals the number of b’s in x
Case 3: S ==> ==>nEG x • This means x has the form buav where • What can we conclude about u (no IH)? • What can we conclude about v (no IH) • Apply the inductive hypothesis • u and v belong to EQUAL • Why do we need the strong inductive hypothesis? • Conclude x belongs to EQUAL • x = buav where u and v belong to EQUAL • Clearly the number of a’s in x equals the number of b’s in x
L(EG) subset of EQUAL • Wrapping up inductive case • In all possible derivations of x, we have shown that x belongs to EQUAL • Thus, we have proven the inductive case • Conclusion • By the principle of mathematical induction, we have shown that L(EG) is a subset of EQUAL
EQUAL subset of L(EG) * • Let x be an arbitrary string in EQUAL • What does this mean? • We will prove the following • If |x| = 0 and x is in EQUAL, then x is in L(G) • If |x| = 1 and x is in EQUAL, then x is in L(G) • If |x| = 2 and x is in EQUAL, then x is in L(G) • If |x| = 3 and x is in EQUAL, then x is in L(G) • ...
EQUAL subset of L(EG) * • Statement to be proven: • For all n >= 0, if |x| = n and x is in EQUAL, then x is in L(EG) • Prove this by induction on n • Base Case: • n = 0 • What is the only string x such that |x|=0 and x is in EQUAL? • Prove this string belongs to L(EG)
Inductive Case • Inductive Hypothesis: • For 0 <= j <= n, if |x| =j and x is in EQUAL, then x is in L(EG) • Again, this is a “strong” induction hypothesis • Statement to be Proven in Inductive Case: • For n >= 0, • if |x| = n+1 and x is in EQUAL, then x is in L(EG)
Proving Inductive Case * • If |x|=n+1 and x is in EQUAL, then x is in L(EG) • Let x be an arbitrary string such that |x|=n+1 and x is in L(EG) • Examining S, what are the two possibilities for the first character in x? • Case 1: first character in x is • Case 2: first character in x is • In each case, what can we say about the remainder of x? • Case 1: the remainder of x • Case 2: the remainder of x
Case 1: x = ay * • What can we say about y in this case? • This means x has the form aubv where • u is in EQUAL and has length <= n • v is in EQUAL and has length <= n • Proving this statement true • Consider all the prefixes of string y • length 0: l • length 1: y1 • length 2: y1y2 • … • length n: y1y2 … yn = y
Case 1: x = ay • Consider all the prefixes of string y • length 0: l • length 1: y1 • length 2: y1y2 • … • length n: y1y2 … yn = y • The first prefix l has the same number of a’s as b’s • The last prefix y has one extra b • The relative number of a’s and b’s changes in the length i prefix differs by only one from the length i-1 prefix • Thus, there must be a first prefix t of y where t has one extra b • Furthermore, the last character of t must be b • Otherwise, t would not be the FIRST prefix of y with one extra b • Break t into u and b and let the remainder of y be v • The statement follows
Case 1: x = aubv * • x = aubv • u is in EQUAL and has length <= n • v is in EQUAL and has length <= n • Apply the induction hypothesis • What can we conclude from applying the IH? • Why did we need a strong inductive hypothesis? • Conclude x is in L(EG) by constructing a derivation • S ==> aSbS ==>*EG aubS ==>*EG aubv • Justify each of the derivation steps in this derivation
Case 2: x = buav • x = buav • u is in EQUAL and has length <= n • v is in EQUAL and has length <= n • Apply the induction hypothesis • What can we conclude about u and v? • Conclude x is in L(EG) by constructing a derivation • S ==> bSaS ==>*EG buaS ==>*EG buav • Justify each of the steps in this derivation
EQUAL subset of L(EG) • Wrapping up inductive case • For all possible first characters of x, we have shown that x belongs to L(EG) • Thus, we have proven the inductive case • Conclusion • By the principle of mathematical induction, we have shown that EQUAL is a subset of L(EG)