The syllabification constraints of Prince and Smolensky  can easily be expressed as regular expressions in the Xerox calculus. Figure 8 lists the five constraints with their translations.
|Syllables must have onsets.||define HaveOns "N[" => "O[" (C) "]" _ ;|
|Syllables must not have codas.||define NoCoda ~$"D[" ;|
|Input segments must be parsed.||define Parse ~$"X[" ;|
|A nucleus position must be filled.||define FillNuc ~$[ "N[" "]" ] ;|
|An onset position must be filled.||define FillOns ~$[ "O[" "]" ] ;|
The definition of the HaveOns constraint uses the
=>. It requires that any occurrence of the
nucleus bracket, [N, must be immediately preceded by a filled
O[C] or unfilled 0[ ] onset. The definitions of the other four
constraints are composed of the negation
~ and the contains
$. For example, the NoCoda constraint,
~$"D[", can be read as ``does not contain D[''. The
FillNuc and FillOns constraints forbid empty nucleus N[ ]
and onset O[ ] brackets.
These constraints compile into very small networks, the largest one, HaveOns, contains four states. Each constraint network encodes an infinite regular language. For example, the HaveOns language includes all strings of any length that contain no instances of N[ at all and all strings of any length in which every instance of N[ is immediately preceded by an onset.
The identity relations on these constraint languages can be thought of as filters. For example, the identity relation on HaveOns maps all HaveOns strings into themselves and blocks on all other strings. In the following section, we will in fact consistently treat the constraint networks as representing identity relations.