Parallel Conditional Replacement


Q: I am trying to use parallel conditional replacement explained on pp. 71-72 in the Beesley & Karttunen book but I succeed only with a small number of parallel rules. If I try to do a dozen rules in parallel, xfst just freezes and the machine runs out of memory. How can I get around this?

A: Avoid parallel conditional replacement where it is not necessary. Compiling big conditional parallel replace expressions is a heavy operation because of the large number of auxiliary symbols needed in the process. Use parallel replacements only if composition is inappropriate. For example, a parallel conditional rule such as

a -> b || .#. _ ,,
x -> y || _ .#.    ;

can just as well be expressed with composition as

a -> b || .#. _ .o.
x -> y || _ .#.    ;

The two rules are equivalent but the latter compiles faster.