--------------------- 01. Regular languages --------------------- - ways of describing a RL (FA: DFA, NFA, ɛ-NFA; RE; descriptive, set notation) - suitability of particular description (only DFA can be "programmed") - extended RE used in many text editors ----------------- 02. What is a FA? ----------------- - mathematical definition - graphical representation - FA (not) accepting a string - DFA (Java implementation) - NFA - ɛ-NFA - closure of a state - example - FA with output (transducers) + Moore machine + Mealy machine + Moore <--> Mealy - examples ----------------- 03. What is a RE? ----------------- - definition - operator precedence - RE extensions - UNIX notation (regex) - find/replace example ----------------------------------------- 04. From one RL representation to another ----------------------------------------- - RE --> ɛ-NFA - example - ɛ-NFA --> NFA (state closures) - example - NFA --> DFA (subset construction) - example - DFA --> RE (state elimination) - example ----------------------------- 05. Decision properties of RL ----------------------------- - emptiness (|L|=0?)? <== reachability of final states - membership (wϵL?) - (in)finiteness (|L|=∞)? ==> Pumping lemma for RLs - equivalence (L=M?) - containment (L∩M=L?) - using a product DFA to test: + equivalence - example + containment - example - DFA minimisation - example ---------------------- 06. Closure properties ---------------------- - union, concatenation, Kleene closure, intersection - difference, complementation, reversal - homomorphism, inverse homomorphism - using a product DFA to construct: + the intersection language (L∩M) - example + the difference language (L-M) - example ------------------------- 07. Pumping lemma for RLs ------------------------- - prove that a language is not regular - example