Recursive Definitions & Regular Expressions (RE)

Slides:



Advertisements
Similar presentations
Chapter 3 Regular Expression and Regular Languages
Advertisements

Theory Of Automata By Dr. MM Alam
Theory Of Automata By Dr. MM Alam
Lecture 9,10 Theory of AUTOMATA
Regular Languages Sequential Machine Theory Prof. K. J. Hintz Department of Electrical and Computer Engineering Lecture 3 Comments, additions and modifications.
Regular Languages Sequential Machine Theory Prof. K. J. Hintz Department of Electrical and Computer Engineering Lecture 3 Comments, additions and modifications.
CS5371 Theory of Computation Lecture 6: Automata Theory IV (Regular Expression = NFA = DFA)
L ECTURE 2 Chapter 3 Recursive Definitions. R ECURSIVE D EFINITION It is method of defining sets.
Chapter 2 Languages.
Lecture 03: Theory of Automata:08 Finite Automata.
Regular Expressions. Notation to specify a language –Declarative –Sort of like a programming language. Fundamental in some languages like perl and applications.
Theory Of Automata By Dr. MM Alam
Theory of Automata.
Module 2 How to design Computer Language Huma Ayub Software Construction Lecture 7 1.
Formal Methods in SE Theory of Automata Qasiar Javaid Assistant Professor Lecture # 06.
Lecture Two: Formal Languages Formal Languages, Lecture 2, slide 1 Amjad Ali.
CMSC 330: Organization of Programming Languages Theory of Regular Expressions.
Two examples English-Words English-Sentences alphabet S ={a,b,c,d,…}
Introduction to CS Theory Lecture 3 – Regular Languages Piotr Faliszewski
1 Language Definitions Lecture # 2. Defining Languages The languages can be defined in different ways, such as Descriptive definition, Recursive definition,
Recap Lecture-2 Kleene Star Closure, Plus operation, recursive definition of languages, INTEGER, EVEN, factorial, PALINDROME, {anbn}, languages of strings.
1 Chapter 1 Introduction to the Theory of Computation.
Lecture # 3 Regular Expressions 1. Introduction In computing, a regular expression provides a concise and flexible means to "match" (specify and recognize)
Lecture 05: Theory of Automata:08 Kleene’s Theorem and NFA.
Module 2 How to design Computer Language Huma Ayub Software Construction Lecture 8.
Lecture-2 Recap Lecture-1
L ECTURE 3 Chapter 4 Regular Expressions. I MPORTANT T ERMS Regular Expressions Regular Languages Finite Representations.
Context Free Grammars.
MA/CSSE 474 Theory of Computation Regular Expressions Intro.
Regular Expressions and Languages A regular expression is a notation to represent languages, i.e. a set of strings, where the set is either finite or contains.
CHAPTER 1 Regular Languages
Lecture 02: Theory of Automata:08 Theory of Automata.
1 CD5560 FABER Formal Languages, Automata and Models of Computation Lecture 2 Mälardalen University 2010.
CSC312 Automata Theory Lecture # 3 Languages-II. Formal Language A formal language is a set of words—that is, strings of symbols drawn from a common alphabet.
CS 203: Introduction to Formal Languages and Automata
Recursive Definations Regular Expressions Ch # 4 by Cohen
Lecture 04: Theory of Automata:08 Transition Graphs.
Lecture # 4.
Mathematical Foundations of Computer Science Chapter 3: Regular Languages and Regular Grammars.
Lecture 2 Theory of AUTOMATA
1 Chapter 3 Regular Languages.  2 3.1: Regular Expressions (1)   Regular Expression (RE):   E is a regular expression over  if E is one of:
Week 13 - Wednesday.  What did we talk about last time?  Exam 3  Before review:  Graphing functions  Rules for manipulating asymptotic bounds  Computing.
Lecture 02: Theory of Automata:2014 Asif Nawaz Theory of Automata.
Set, Alphabets, Strings, and Languages. The regular languages. Clouser properties of regular sets. Finite State Automata. Types of Finite State Automata.
Lecture 03: Theory of Automata:2014 Asif Nawaz Theory of Automata.
1 Recap lecture 28 Examples of Myhill Nerode theorem, Quotient of a language, examples, Pseudo theorem: Quotient of a language is regular, prefixes of.
CHAPTER TWO LANGUAGES By Dr Zalmiyah Zakaria.
By Dr.Hamed Alrjoub. 1. Introduction to Computer Theory, by Daniel I. Cohen, John Wiley and Sons, Inc., 1991, Second Edition 2. Introduction to Languages.
Lecture 01: Theory of Automata:2013 Asif Nawaz Theory of Automata.
Lecture 14: Theory of Automata:2014 Finite Automata with Output.
MA/CSSE 474 Theory of Computation Regular Expressions Intro.
Recap Lecture 3 RE, Recursive definition of RE, defining languages by RE, { x}*, { x}+, {a+b}*, Language of strings having exactly one aa, Language of.
Lecture 17: Theory of Automata:2014 Context Free Grammars.
Theory of Computation Lecture #
Lecture # 2.
Transition Graphs.
Theory of Automata.
Regular Expressions (Examples)
LANGUAGES Prepared by: Paridah Samsuri Dept. of Software Engineering
CSC312 Automata Theory Lecture # 4 Languages-III.
REGULAR LANGUAGES AND REGULAR GRAMMARS
Recap lecture 29 Example of prefixes of a language, Theorem: pref(Q in R) is regular, proof, example, Decidablity, deciding whether two languages are equivalent.
Kleene’s Theorem Muhammad Arif 12/6/2018.
Chapter 1 Introduction to the Theory of Computation
CSC312 Automata Theory Lecture # 5 Chapter # 4 Cont…
Welcome to ! Theory Of Automata Irum Feroz
Recap Lecture 3 RE, Recursive definition of RE, defining languages by RE, { x}*, { x}+, {a+b}*, Language of strings having exactly one aa, Language of.
LECTURE # 07.
Introduction and Chapter One: Fundamentals
Presentation transcript:

Recursive Definitions & Regular Expressions (RE)

Recursive Language Definition A recursive definition is characteristically a three-step process: 1. First, we specify some basic objects in the set. The number of basic objects specified must be finite. 2. Second, we give a finite number of rules for constructing more objects in the set from the ones we already know. 3. Third, we declare that no objects except those constructed in this way are allowed in the set.

Example: Example: Consider the set P-EVEN, which is the set of positive even numbers. We can define the set P-EVEN in several different ways: • We can define P-EVEN to be the set of all positive integers that are evenly divisible by 2. • P-EVEN is the set of all 2n, where n = 1, 2, . . .. P-EVEN is defined by these three rules: Rule 1 2 is in P-EVEN. Rule 2 If x is in P-EVEN, then so is x + 2. Rule 3 The only elements in the set P-EVEN are those that can be produced from the two rules above.

Example: Example: Let PALINDROME be the set of all strings over the alphabet = {a, b} that are the same spelled forward as backwards; i.e., PALINDROME = {w : w = reverse(w)} = {, a, b, aa, bb, aaa, aba, bab, bbb, aaaa, abba, . . .}.

Recursive Definition of PALINDROME A recursive definition for PALINDROME is as follows: Rule 1 , a, and b are in PALINDROME. Rule 2 If w 2 PALINDROME, then so are awa and bwb. Rule 3 No other string is in PALINDROME unless it can be produced by rules 1 and 2.

Arithmetic Expressions(AE) We recursively define AE using the following rules: What are the rules?

Recursive Definition of AE Rule 1: Any number (positive, negative, or zero) is in AE. Rule 2: If x is in AE, then so are (i) (x) (ii) -x (provided that x does not already start with a minus sign) Rule 3: If x and y are in AE, then so are (i) x + y (if the first symbol in y is not + or -) (ii) x - y (if the first symbol in y is not + or -) (iii) x * y (iv) x / y (v) x ** y (our notation for exponentiation) Theory Of Automata

For instance, we wish to determine if the following expression is The above definition is the most natural, because it is the method we use to recognize valid arithmetic expressions in real life. For instance, we wish to determine if the following expression is valid: (2 + 4) * (7 * (9 - 3)/4)/4 * (2 + 8) - 1 We do not really scan over the string, looking for forbidden substrings or count the parentheses. We actually imagine the expression in our mind broken down into components: Is (2 + 4) OK? Yes Is (9 - 3) OK? Yes Theory Of Automata

Arithmetic Expression AE Obviously, the following expressions are not valid: (3 + 5) + 6) 2(/8 + 9) (3 + (4-)8) The first contains unbalanced parentheses; the second contains the forbidden substring /; the third contains the forbidden substring -). Are there more rules? The substrings // and */ are also forbidden. Are there still more? The most natural way of defining a valid AE is by using a recursive definition, rather than a long list of forbidden substrings. Theory Of Automata

Regular Expressions

Defining Languages Using Regular Expressions Previously, we defined the languages: • L1 = {Xn for n = 1, 2, 3, . . .} • L2 = {x, xxx, xxxxx, . . .} But these are not very precise ways of defining languages. So we now want to be very precise about how we define languages, and we will do this using regular expressions

Regular Expressions Regular expressions are written in bold face letters and are a way of specifying the language. Formal way to define the lexical specifications of a language Remove ambiguity altogether Called expressions on account of similarity with arithmetic expressions Use *, + and () * shows repetition + presents choice or disjunction () used for grouping

Language-Defining Symbols We now introduce the use of the Kleene star, applied not to a set, but directly to the letter x and written as a superscript: x*. This simple expression indicates some sequence of x’s (may be none at all): x* = Λ or x or x2 or x3… = xn for some n = 0, 1, 2, 3, … Letter x is intentionally written in boldface type to distinguish it from an alphabet character. We can think of the star as an unknown power. That is, x* stands for a string of x’s, but we do not specify how many, and it may be the null string .

The notation x* can be used to define languages by writing, say L4 = language (x*) Since x* is any string of x’s, L4 is then the language of all possible strings of x’s of any length (including Λ). We should not confuse x* (which is a language-defining symbol) with L4 (which is the name we have given to a certain language).

Given the alphabet = {a, b}, suppose we wish to define the language L that contains all words of the form one a followed by some number of b’s (maybe no b’s at all); that is L = {a, ab, abb, abbb, abbbb, …} Using the language-defining symbol, we may write L = language (ab*) This equation obviously means that L is the language in which the words are the concatenation of an initial a with some or no b’s. From now on, for convenience, we will simply say some b’s to mean some or no b’s. When we want to mean some positive number of b’s, we will explicitly say so.

We can apply the Kleene star to the whole string ab if we want: (ab)* = Λ or ab or abab or ababab… Observe that (ab)* ≠ a*b* because the language defined by the expression on the left contains the word abab, whereas the language defined by the expression on the right does not.

If we want to define the language L1 = {x; xx; xxx; …} using the language-defining symbol, we can write L1 = language(xx*) which means that each word of L1 must start with an x followed by some (or no) x’s. Note that we can also define L1 using the notation + (as an exponent) introduced in Chapter 2: L1 = language(x+) which means that each word of L1 is a string of some positive number of x’s.

Plus Sign Let us introduce another use of the plus sign. By the expression x + y where x and y are strings of characters from an alphabet, we mean either x or y. Care should be taken so as not to confuse this notation with the notation + (as an exponent).

Example Consider the language T over the alphabet Σ = {a; b; c}: T = {a; c; ab; cb; abb; cbb; abbb; cbbb; abbbb; cbbbb; …} In other words, all the words in T begin with either an a or a c and then are followed by some number of b’s. Using the above plus sign notation, we may write this as T = language((a+ c)b*)

Example Consider a finite language L that contains all the strings of a’s and b’s of length three exactly: L = {aaa, aab, aba, abb, baa, bab, bba, bbb} Thus, we may write L = language((a+ b)(a + b)(a + b)) or for short, L = language((a+ b)3)

Example In general, if we want to refer to the set of all possible strings of a’s and b’s of any length whatsoever, we could write language((a+ b)*) This is the set of all possible strings of letters from the alphabet Σ = {a, b}, including the null string. This is powerful notation. For instance, we can describe all the words that begin with first an a, followed by anything (i.e., as many choices as we want of either a or b) as a(a + b)*

Regular Expressions Given  = {a,b} a* = {Λ, a,aa,aaa,aaa,aaaa,aaaaa, …} ab* = {a, ab,abb,abbb,abbbb, …} a+b = {a,b} (ab)* = {Λ, ab, abab, ababab, …} (a+b)* = {Λ, any string of as and bs}

Regular Expressions The symbols that appear in the regular expressions are the letters of the alphabet , the symbol for Λ, parentheses, the star operator, and the plus sign

Formal Definition of Regular Expressions The set of regular expression is defined by following rules 1. Every letter of  and Λ is a regular expression. 2. If r1 and r2 are regular expressions, then so are (r1) r1r2 r1+r2 r1* 3.Nothing else is a regular expression

Regular Expressions Whether following are RE if so what languages do they generate a (b + a)* bb(a+b) (a+b)(a+b)(a+b) (a+b)*ba (a+b)*a(a+b)* (a+b)*aa(a+b)*

Regular Expressions Write RE for the following languages All words ending with b All words that start with a All words that start with a double letter All words that contain at least one double letter All words that start and end with a double letter All words of length >=3 All words that contain exactly one a or exactly one b All words that don’t end at ba

Language (Set) operations If L1 and L2 are two languages (set of words) L1L2 is a product set that contain all combinations of a string from L1 concatenated with a string from L2 L1+L2 is the union set (equivalently L1 U L2) containing all words of L1 and L2 Examples

Product Set If S and T are sets of strings of letters, we define the product set of strings of letters to be ST = {all combinations of a string from S concatenated with a string from T in that order}

Example If S = {a, aa, aaa} and T = {bb, bbb} then ST = {abb, abbb, aabb, aabbb, aaabb, aaabbb} Using regular expression, we can write this example as (a + aa + aaa)(bb + bbb) = abb + abbb + aabb + aabbb + aaabb + aaabbb

Example If M = {Λ, x, xx} and N = {Λ, y, yy, yyy, yyyy, …} then MN ={Λ, y, yy, yyy, yyyy,…x, xy, xyy, xyyy, xyyyy, …xx, xxy, xxyy, xxyyy, xxyyyy, …} Using regular expression (Λ + x + xx)(y*) = y* + xy* + xxy*

Regular Languages The languages defined by a regular expression are called regular languages Or alternatively Any language that can be represented by a regular expression is a regular language

Languages Associated with Regular Expressions

Definition The following rules define the language associated with any regular expression: Rule 1: The language associated with the regular expression that is just a single letter is that one-letter word alone, and the language associated with Λ is just {Λ}, a one-word language. Rule 2: If r1 is a regular expression associated with the language L1 and r2 is a regular expression associated with the language L2, then: (i) The regular expression (r1)(r2) is associated with the product L1L2, that is the language L1 times the language L2: language(r1r2) = L1L2

Definition contd. Rule 2 (cont.): (ii) The regular expression r1 + r2 is associated with the language formed by the union of L1 and L2: language(r1 + r2) = L1 + L2 (iii) The language associated with the regular expression (r1)* is L1*, the Kleene closure of the set L1 as a set of words: language(r1*) = L1*

Languages associated with REs r1 = a, r1 = b, r1 = Λ If L1 is associated with r1 and L2 is associated r2 Language(r1r2) = L1L2 Language(r1+r2) = L1+L2 = L1 U L2 Language(r1*) = L1* (Kleen’s Closure of L1)

Regular Languages How to tell whether a language is regular Define an RE for it, if it is possible the language is Regular other wise non-regular Definition The language generated by any regular expression is called a regular language. It is to be noted that if r1, r2 are regular expressions, corresponding to the languages L1 and L2 then the languages generated by r1+ r2, r1r2( or r2r1) and r1*( or r2*) are also regular languages.

Regular Languages Example Consider the language L, defined over Σ = {a,b}, of strings of length 2, starting with a, then L = {aa, ab}, may be expressed by the regular expression aa+ab. Hence L, by definition, is a regular language.

Regular Languages All finite languages are regular Example Consider the language L, defined over Σ = {a,b}, of strings of length 2, starting with a, then L = {aa, ab}, may be expressed by the regular expression aa+ab. Hence L, by definition, is a regular language.

Theorem If L is a finite language (a language with only finitely many words), then L can be defined by a regular expression. In other words, all finite languages are regular. Proof Let L be a finite language. To make one regular expression that defines L, we turn all the words in L into boldface type and insert plus signs between them. For example, the regular expression that defines the language L = {baa, abbba, bababa} is baa + abbba + bababa This algorithm only works for finite languages because an infinite language would become a regular expression that is infinitely long, which is forbidden.

More REs EVEN-EVEN ( = {a, b}) Language of all words having even number of as and even number of bs Partitions/sets Even as even bs (valid) Even as odd bs (need to adjust bs) Odd as odd bs (need to adjust as and bs) Odd as even bs (need to adjust as)

Regular Expressions EVEN-EVEN ( = {a, b}) RE sets (aa+bb)* ((ab+ba)(ab+ba))* (aa + bb + (ab + ba )(aa + bb)* (ab + ba))* This expression represents all the words that are made up of : type1 = aa type2 = bb type3 = (ab + ba)(aa + bb)*(ab + ba)

Equivalent Regular Expressions Definition Two regular expressions are said to be equivalent if they generate the same language. Example Consider the following regular expressions r1 = (a + b)* (aa + bb) r2 = (a + b)*aa + ( a + b)*bb then both regular expressions define the language of strings ending in aa or bb

Equivalent Regular Expressions Note If r1 = (aa + bb) and r2 = ( a + b) then r1+r2 = (aa + bb) + (a + b) r1r2 = (aa + bb) (a + b)= (aaa + aab + bba + bbb) (r1)* = (aa + bb)*

Example Consider the language defined by the expression (a + b)*a(a + b)* At the beginning of any word in this language we have (a + b)*, which is any string of a’s and b’s, then comes an a, then another any string. For example, the word abbaab can be considered to come from this expression by 3 different choices: (Λ)a(bbaab) or (abb)a(ab) or (abba)a(b)

Example contd. This language is the set of all words over the alphabet Σ = {a, b} that have at least one a. The only words left out are those that have only b’s and the word Λ. These left out words are exactly the language defined by the expression b*. If we combine this language, we should provide a language of all strings over the alphabet Σ = {a, b}. That is, (a + b)* = (a + b)*a(a + b)* + b*

Example The language of all words that have at least two a’s can be defined by the expression: (a + b)*a(a + b)*a(a + b)* Another expression that defines all the words with at least two a’s is b*ab*a(a + b)* Hence, we can write (a + b)*a(a + b)*a(a + b)* = b*ab*a(a + b)* where by the equal sign we mean that these two expressions are equivalent in the sense that they describe the same language.

Example The language of all words that have at least one a and at least one b is somewhat trickier. If we write (a + b)*a(a + b)*b(a + b)* then we are requiring that an a must precede a b in the word. Such words as ba and bbaaaa are not included in this language. Since we know that either the a comes before the b or the b comes before the a, we can define the language by the expression (a + b)*a(a + b)*b(a + b)* + (a + b)*b(a + b)*a(a + b)* Note that the only words that are omitted by the first term (a + b)*a(a + b)*b(a + b)* are the words of the form some b’s followed by some a’s. They are defined by the expression bb*aa* If we want a language of all the words with exactly two a’s, we could use the expression b*ab*ab*

(a + b)a(a + b)b(a + b) + bb*aa* Thus, we have proved that Example We can add these specific exceptions. So, the language of all words over the alphabet Σ = {a, b} that contain at least one a and at least one b is defined by the expression: (a + b)a(a + b)b(a + b) + bb*aa* Thus, we have proved that (a + b)*a(a + b)*b(a + b)* + (a + b)*b(a + b)*a(a + b)* = (a + b)*a(a + b)*b(a + b)* + bb*aa*

Example In the above example, the language of all words that contain both an a and ab is defined by the expression (a + b)*a(a + b)*b(a + b)* + bb*aa* The only words that do not contain are the words of all a’s, all b’s, or Λ. When these are included, we get everything. Hence, the expression (a + b)*a(a + b)*b(a + b)* + bb*aa* + a* + b* defines all possible strings of a’s and b’s, including (accounted for in both a and b).

Thus (a + b)* = (a + b)*a(a + b)*b(a + b)* + bb*aa* + a* + b*

Example (a + b)* = (a + b)* + (a + b)* (a + b)* = (a + b)* + a* The following equivalences show that we should not treat expressions as algebraic polynomials: (a + b)* = (a + b)* + (a + b)* (a + b)* = (a + b)* + a* (a + b)* = (a + b)*(a + b)* (a + b)* = a(a + b)* + b(a + b)* + Λ (a + b)* = (a + b)*ab(a + b)* + b*a* The last equivalence may need some explanation: The first term in the right hand side, (a + b)*ab(a + b)*, describes all the words that contain the substring ab. The second term, b*a* describes all the words that do not contain the substring ab (i.e., all a’s, all b’s, Λ, or some b’s followed by some a’s).

Home work Practice… Make Regular Expression that do not end by double letter Make a regular expression that do not contains both substring bba and abb. Make a Regular Expression Where each word must contains odd number of a’s and odd number of b’s Make a regular expression where each word contains 3,6,9,12,15,18.. No of a’s.

Home work Practice… Language of all those words that contains bbb. Language of all those strings whose length is multiple of 5. Language of all those strings which contains at least two b’s Langauge of all those strings that contains a double letter and have even Length.