280 likes | 421 Views
Lecture 28. EQUAL language Designing a CFG Proving the CFG is correct. EQUAL language. Designing a CFG. EQUAL. EQUAL is the set of strings 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.
E N D
Lecture 28 • EQUAL language • Designing a CFG • Proving the CFG is correct
EQUAL language Designing a CFG
EQUAL • EQUAL is the set of strings 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? • Answer: l • Production Rule: • S --> l
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? • y must have one extra b • x = bz • What must be true about relative number of a’s and b’s in z? • z must have one extra a
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? • In particular, are there substrings in y which belong to EQUAL?
Decomposing y • y has one extra b • Possible examples • b, babba, aabbbab, aaabbbb • Common pattern • In each string, there is some prefix with exactly one more b than a • That is, y = ubv where • ub is the prefix with an extra b • 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 • S --> aSbS • The first S can derive the string u • The second S can derive the string v
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 • S --> bSaS • The first S can derive the string u • The second S can derive the string v
Final Grammar • EG = (V, S, S, P) • V = {S} • S = {a,b} • S = S • P: S --> l | aSbS | bSaS
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 • ...
L(EG) subset of EQUAL • 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 • The only string x such that S ==>1EG x is the string l • Follows from inspection of EG • The string l belongs to EQUAL
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
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 • There are three possible first derivation steps • Case 1: S ==> l ==>nEG x • Case 2: S ==> aSbS ==>nEG x • Case 3: S ==> bSaS ==>nEG x • These 3 cases follow from looking at grammar EG • Case 1 is not possible • n was assumed to be at least 1 which means x is derived in at least 2 steps
Case 2: S ==> aSbS ==>nEG x • This means x has the form aubv where • S ==><n u • S ==><n v • This follows because in n steps, we go from aSbS to x • Thus, the first S can take at most n-1 steps to generate u • Likewise for the second S generating v • Apply the inductive hypothesis • u and v belong to EQUAL • Note we needed 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 ==> bSaS ==>nEG x • This means x has the form buav where • S ==><n u • S ==><n v • This follows because in n steps, we go from bSaS to x • Thus, the first S can take at most n-1 steps to generate u • Likewise for the second S generating v • Apply the inductive hypothesis • u and v belong to EQUAL • Note we needed 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? • x has an equal number of a’s and b’s • Follows from definition of x in EQUAL • 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 • The only string x such that |x|=0 and x is in EQUAL is the string l • Follows from definition of EQUAL • The string l belongs to L(EG) • Follows from production S --> l
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: • If |x| = n+1 and x is in EQUAL, then x is in L(EG) • note n >= 0
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) • There are two possibilities for the first character in x • Case 1: first character in x is a • Case 2: first character in x is b • These 2 cases follow from looking at alphabet S • Case 1: x = ay where y has one extra b • Case 2: x = bz where z has one extra a
Case 1: x = ay • 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 • u and v belong to L(EG) • This means S ==>*EG u and S ==>*EG v. • Conclude x is in L(EG) by constructing a derivation • S ==> aSbS ==>*EG aubS ==>*EG aubv • The first derivation step follows from production S --> aSbS • The second series of derivation steps follows from S ==>*EG u • The third series of derivation steps follows from S ==>*EG v
Case 2: x = buav • x = buav • u is in EQUAL and has length <= n • v is in EQUAL and has length <= n • Follows from similar proof as in case 1 • Apply the induction hypothesis • u and v belong to L(EG) • This means S ==>*EG u and S ==>*EG v. • Conclude x is in L(EG) by constructing a derivation • S ==> bSaS ==>*EG buaS ==>*EG buav • The first derivation step follows from production S --> bSaS • The second series of derivation steps follows from S ==>*EG u • The third series of derivation steps follows from S ==>*EG v
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)