300 likes | 419 Views
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
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)