1 / 15

Preliminary definitions

Preliminary definitions. An alphabet is a finite set of symbols. An alphabet is not a symbol A (character) string over an alphabet S is a finite sequence of symbols from S. A language over the alphabet S is a set of strings over S. So programming languages are sets of programs

haroun
Download Presentation

Preliminary definitions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Preliminary definitions • An alphabet is a finite set of symbols. • An alphabet is not a symbol • A (character) string over an alphabet S is a finite sequence of symbols from S. • A language over the alphabet S is a set of strings over S. • So programming languages are sets of programs • Also, alphabets and strings must be finite, but languages needn't be.

  2. Thesis • Many interesting and important questions about computing reduce to questions about membership in languages, e.g. • is x2!y a legal identifier in language PQR? • is null a legal statement in language QRS? • is 10101010101 a prime number? • Is Buffalo buffalo a legal English sentence? • will a given C program halt on all inputs?

  3. Strings (more precisely) • A (character) string over an alphabet S either • is empty, or • has the form x.a, where x is a string over S and a is an element of S • The intuition is that x.a results from adding the symbol a to the end of the string x • The empty string is written as l

  4. Notational conventions • Capital letters are used for languages • Capital Greek letters are used for alphabets • Lower-case letters near the beginning of the English alphabet are used for symbols from alphabets • Lower-case letters near the end of the English alphabet are used for strings

  5. String concatenation • If x and y are strings, then the concatenation xy (or x∙y) of x and y is • x if y is empty • (xz).a if y = z.a • We’ll write the string whose only symbol is a as a. With this notation, xa = x.a • x is a prefix of y iff there exists z with y = xz. • In this case, z is a suffix of y.

  6. String length • If x is a string, then |x| (the length of x) is • 0 if x is empty • 1 + |y| if x = y.a • So the length of the character string abc is • 1 + length(ab) • = 1 + (1 + length(a)) • = 1 + (1 + (1 + length(l)) • = 1 + (1 + (1 + 0)) • = 3

  7. Theorems about strings • If x is an empty string, then xy = y • If x and y are strings, then |xy| = |x| + |y| • Warning: We'll soon define a notion of language concatenation for which the analog of the 2nd theorem does not hold

  8. First symbols • The first symbol of a nonempty string xa is • a if x = l • the first symbol of x otherwise • Theorem 3: The first symbol of xy is • the first symbol of x if x is nonempty • the first symbol of y if x is empty but y is not • undefined if both x and y are empty

  9. Corollary to Theorem 3 • If x is a string over an alphabet S and b is a symbol of S, then the first symbol of bx is b. • Also |bx| = 1 + |x|

  10. Language concatenation • The language LM is equal to • {xy | x ε L and y ε M}  • An alternate notation for LM is L∙M

  11. Repetition • The string xn is obtained from x by concatenating n copies of x. Formally, it equals • l if n = 0 • xn-1x if n > 0 •  The language Ln contains all concatenations of n members of L. Formally, it equals • {l} if n = 0 • Ln-1∙L if n > 0

  12. Closure • If L is a language, then • L* is the union of Ln over all n>=0 • L+ is the union of Ln over all n>=1 • If S is an alphabet, then • S* is the set of all strings over S • S+ is the set of all nonempty strings over S • The second definition follows from the first if S is considered as a set of strings of length 1

  13. Closure, part 2 • Sometimes the * operator is called the Kleene closure operator. • Note that l is a member of L* for all L. • (L*)* = L* • So L* is closed under the closure operator

  14. Properties of concatenation • Theorem: (xy)w = x(yw) • Theorem: xmxn = xm+n • Corollary: xn = xxn-1 • so the definition of xn could have been stated this way • also LmLn = Lm+n, so Ln = LLn-1. • Warning: |LM| needn't equal |L||M| • L might be {a, ab} and M might be {bc, c} 

  15. String reversal • The reverse wR of the string w is • l if w = l • azR if w = za • So for example • (abc)R = c(ab)R • = c(b(aR)) • = c(b(a(lR))) = cba

More Related