Flap Rule

Assignment:
Problem 3
 

Finish specifiying the flap rule described below. Turn in a revised version of the file "flap_problem.pl".

In Section 4.1 of Karttunen 91, the flap rule and the contrast between writer and rider is discussed.

    write + er = rAter ==> rUDer   short vowel
    ride + er = rAder ==> rADer   long vowel
I'm using lower case vowels to represent short unstressed vowels, like the one in "er", and upper case vowels for dipthongs and long vowels. So the first vowel-symbol in "write" is "A", which represents the dipthong sometimes written /ay/, and the dipthong after shortening is "U", sometimes written as schwa and "y". I'm also using " D" for the flap.

Think about this example. Think about how the facts would be captured with ordered rules. And how they would be represented as twolevel rules.

Then look in the Karttunen paper (Section 4.1, Karttunen 91) to see if you've got the answer right.

Then write two rules in the notation of "kamman.pl". As your starting point use:

    /usr/local/fsa6/Examples/twolevel/flap_problem.pl
or browse it here.

Here are some hints:

  1. This file defines 3 transducers, "vs", "fl" , and "flap". "flap" is the top level transducer that combines the other two. "vs" implements the vowel shortening rule. "fl" the flapping rule. The right and left contexts are wrong. Your job is to fill them in correctly.
  2. The set of pairs has been predefined for you. So have several useful categories of sound such as voiceless sounds and vowels.
  3. Remember, the left and right contexts of a rule are regular expression. So any expression that denotes a set of strings can be used as a right or left context in a rule.
  4. "macros" defined in the file are additions to ouyr regular expression language. For example "pair" can be used to denote any single pair from the set of feasible pairs because the macro "pair" is defined that way in the file. "pair*" denotes any sequence of 0 or more pairs.
  5. Test your answers. Load in the file to the fsa tool. Bring up the "flap" macro. Try the relevant examples.
    1. rAder => rADer
    2. rAter => rUDer