<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE universe SYSTEM "http://www.birot.hu/OTKit/files/OTKit.dtd">
<universe name="MyUniverse">
<table name="alphabet" nr_cols="1" nr_rows="7">
<row>
<cell col="0" row="0" value="a"/>
</row>
<row>
<cell col="0" row="1" value="i"/>
</row>
<row>
<cell col="0" row="2" value="u"/>
</row>
<row>
<cell col="0" row="3" value="p"/>
</row>
<row>
<cell col="0" row="4" value="t"/>
</row>
<row>
<cell col="0" row="5" value="b"/>
</row>
<row>
<cell col="0" row="6" value="d"/>
</row>
</table>
<table name="voiced_C" nr_cols="2" nr_rows="7">
<row>
<cell col="0" row="0" value="a"/>
<cell col="1" row="0" value="0"/>
</row>
<row>
<cell col="0" row="1" value="i"/>
<cell col="1" row="1" value="0"/>
</row>
<row>
<cell col="0" row="2" value="u"/>
<cell col="1" row="2" value="0"/>
</row>
<row>
<cell col="0" row="3" value="p"/>
<cell col="1" row="3" value="0"/>
</row>
<row>
<cell col="0" row="4" value="t"/>
<cell col="1" row="4" value="0"/>
</row>
<row>
<cell col="0" row="5" value="b"/>
<cell col="1" row="5" value="1"/>
</row>
<row>
<cell col="0" row="6" value="d"/>
<cell col="1" row="6" value="1"/>
</row>
</table>
<table name="prohibited_clusters" nr_cols="3" nr_rows="12">
<row>
<cell col="0" row="0" value="pd"/>
<cell col="1" row="0" value="1"/>
<cell col="2" row="0" value="1"/>
</row>
<row>
<cell col="0" row="1" value="pb"/>
<cell col="1" row="1" value="1"/>
<cell col="2" row="1" value="0"/>
</row>
<row>
<cell col="0" row="2" value="td"/>
<cell col="1" row="2" value="1"/>
<cell col="2" row="2" value="0"/>
</row>
<row>
<cell col="0" row="3" value="tb"/>
<cell col="1" row="3" value="1"/>
<cell col="2" row="3" value="1"/>
</row>
<row>
<cell col="0" row="4" value="bt"/>
<cell col="1" row="4" value="1"/>
<cell col="2" row="4" value="1"/>
</row>
<row>
<cell col="0" row="5" value="bp"/>
<cell col="1" row="5" value="1"/>
<cell col="2" row="5" value="0"/>
</row>
<row>
<cell col="0" row="6" value="dt"/>
<cell col="1" row="6" value="1"/>
<cell col="2" row="6" value="0"/>
</row>
<row>
<cell col="0" row="7" value="dp"/>
<cell col="1" row="7" value="1"/>
<cell col="2" row="7" value="1"/>
</row>
<row>
<cell col="0" row="8" value="pt"/>
<cell col="1" row="8" value="0"/>
<cell col="2" row="8" value="1"/>
</row>
<row>
<cell col="0" row="9" value="tp"/>
<cell col="1" row="9" value="0"/>
<cell col="2" row="9" value="1"/>
</row>
<row>
<cell col="0" row="10" value="bd"/>
<cell col="1" row="10" value="0"/>
<cell col="2" row="10" value="1"/>
</row>
<row>
<cell col="0" row="11" value="db"/>
<cell col="1" row="11" value="0"/>
<cell col="2" row="11" value="1"/>
</row>
</table>
<table name="features" nr_cols="3" nr_rows="7">
<row>
<cell col="0" row="0" value="a"/>
<cell col="1" row="0" value="0"/>
<cell col="2" row="0" value="0"/>
</row>
<row>
<cell col="0" row="1" value="i"/>
<cell col="1" row="1" value="0"/>
<cell col="2" row="1" value="1"/>
</row>
<row>
<cell col="0" row="2" value="u"/>
<cell col="1" row="2" value="0"/>
<cell col="2" row="2" value="1"/>
</row>
<row>
<cell col="0" row="3" value="p"/>
<cell col="1" row="3" value="0"/>
<cell col="2" row="3" value="0"/>
</row>
<row>
<cell col="0" row="4" value="t"/>
<cell col="1" row="4" value="0"/>
<cell col="2" row="4" value="0"/>
</row>
<row>
<cell col="0" row="5" value="b"/>
<cell col="1" row="5" value="1"/>
<cell col="2" row="5" value="0"/>
</row>
<row>
<cell col="0" row="6" value="d"/>
<cell col="1" row="6" value="1"/>
<cell col="2" row="6" value="0"/>
</row>
</table>
<table name="restricted_gen" nr_cols="1" nr_rows="4">
<row>
<cell col="0" row="0" value="uptu"/>
</row>
<row>
<cell col="0" row="1" value="updu"/>
</row>
<row>
<cell col="0" row="2" value="ubtu"/>
</row>
<row>
<cell col="0" row="3" value="ubdu"/>
</row>
</table>
<my_form name="ubtu" scheme="simple string">
<param number="1">ubtu</param>
</my_form>
<my_form name="uptu" scheme="simple string">
<param number="1">uptu</param>
</my_form>
<my_form name="updu" scheme="simple string">
<param number="1">updu</param>
</my_form>
<my_form name="abti" scheme="simple string">
<param number="1">abti</param>
</my_form>
<my_form name="ubdu" scheme="simple string">
<param number="1">ubdu</param>
</my_form>
<my_candidate name="/uptu/ [uptu]" scheme="uf_and_sf_from_names">
<param number="1">uptu</param>
<param number="2">uptu</param>
</my_candidate>
<my_candidate name="/uptu/ [upda]" scheme="uf_and_sf_from_strings">
<param number="1">uptu</param>
<param number="2">upda</param>
</my_candidate>
<my_gen name="Table_alphabet_star" scheme="Table_P1_star">
<param number="1">alphabet</param>
</my_gen>
<my_gen name="alphabet^4" scheme="Table_P1_power_P2">
<param number="1">alphabet</param>
<param number="2">4</param>
</my_gen>
<my_gen name="From_table_restricted_gen" scheme="Strings_in_table_P1">
<param number="1">restricted_gen</param>
</my_gen>
<my_constraint name="*i" scheme="*P1">
<param number="1">i</param>
<short_descr>Assign one violation mark to each i. </short_descr>
<long_descr>Candidates are strings, and let i be a string. This constraint counts the number of substrings in the surface form that are equal to i (possibly overlapping substrings), and this value will be the number of violation marks assigned to the candidate. </long_descr>
</my_constraint>
<my_constraint name="*u" scheme="*P1">
<param number="1">u</param>
<short_descr>Assign one violation mark to each u. </short_descr>
<long_descr>Candidates are strings, and let u be a string. This constraint counts the number of substrings in the surface form that are equal to u (possibly overlapping substrings), and this value will be the number of violation marks assigned to the candidate. </long_descr>
</my_constraint>
<my_constraint name="*high" scheme="Constr_P1_+_Constr_P2">
<param number="1">*i</param>
<param number="2">*u</param>
<short_descr>Sum of constraints '*i' and '*u'</short_descr>
<long_descr>This constraint assigns to candidate c the sum of the number of violations assigned to c by constraint '*i' and '*u'. NB: be prepared to fatal runtime errors, whenever constraint '*i' and '*u' are not loaded to MyUniverse at the time of employing this constraint.</long_descr>
</my_constraint>
<my_constraint name="Max(i)" scheme="Max(P1)">
<param number="1">i</param>
<short_descr>do not delete i</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains less substring 'i' than the underlying form. The constraint counts the number u of times 'i' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then u-s, if u &gt; s, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="*voiced" scheme="*Table_P1_col_P2">
<param number="1">voiced_C</param>
<param number="2">2</param>
<short_descr>Assign substrings in table prohibited_clusters violations in column 4. </short_descr>
<long_descr>Table 'prohibited_clusters' column 1 contains strings. Each substring in the surface form string is assigned as many violations as the value in the same row, column 4.</long_descr>
</my_constraint>
<my_constraint name="Assimilate[place]" scheme="*Table_P1_col_P2">
<param number="1">prohibited_clusters</param>
<param number="2">3</param>
<short_descr>Assign substrings in table prohibited_clusters violations in column 2. </short_descr>
<long_descr>Table 'prohibited_clusters' column 1 contains strings. Each substring in the surface form string is assigned as many violations as the value in the same row, column 2.</long_descr>
</my_constraint>
<my_constraint name="Assimilate[voice]" scheme="*Table_P1_col_P2">
<param number="1">prohibited_clusters</param>
<param number="2">2</param>
<short_descr>Assign substrings in table prohibited_clusters violations in column 2. </short_descr>
<long_descr>Table 'prohibited_clusters' column 1 contains strings. Each substring in the surface form string is assigned as many violations as the value in the same row, column 2.</long_descr>
</my_constraint>
<my_constraint name="Dep" scheme="Dep">
<short_descr>surface not longer than underlying form</short_descr>
<long_descr>This constraint is violated whenever the string in the underlying form is shorter than the string in the surface form. The violation is equal to the difference of their length.</long_descr>
</my_constraint>
<my_constraint name="Dep(a)" scheme="Dep(P1)">
<param number="1">a</param>
<short_descr>do not epenthesize a</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains more substring 'a' than the underlying form. The constraint counts the number u of times 'a' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then s-u, if s &gt; u, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="Max(p)" scheme="Max(P1)">
<param number="1">p</param>
<short_descr>do not delete p</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains less substring 'p' than the underlying form. The constraint counts the number u of times 'p' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then u-s, if u &gt; s, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="Max(d)" scheme="Max(P1)">
<param number="1">d</param>
<short_descr>do not delete d</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains less substring 'd' than the underlying form. The constraint counts the number u of times 'd' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then u-s, if u &gt; s, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="Max(b)" scheme="Max(P1)">
<param number="1">b</param>
<short_descr>do not delete b</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains less substring 'b' than the underlying form. The constraint counts the number u of times 'b' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then u-s, if u &gt; s, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="Max(a)" scheme="Max(P1)">
<param number="1">a</param>
<short_descr>do not delete a</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains less substring 'a' than the underlying form. The constraint counts the number u of times 'a' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then u-s, if u &gt; s, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="Max(u)" scheme="Max(P1)">
<param number="1">u</param>
<short_descr>do not delete u</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains less substring 'u' than the underlying form. The constraint counts the number u of times 'u' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then u-s, if u &gt; s, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="Max(t)" scheme="Max(P1)">
<param number="1">t</param>
<short_descr>do not delete t</short_descr>
<long_descr>This constraint, working on the string representation of a candidate, is violated if the surface form contains less substring 't' than the underlying form. The constraint counts the number u of times 't' occurs as a substring in the underlying form (including overlapping substrings), and the corresponding number s in the surface form. The number of violation marks assigned by the candidate is then u-s, if u &gt; s, and 0 otherwise. NB: No correspondence relation is implemented, so for example DEP and MAX with the same argument cannot be violated at the same time.</long_descr>
</my_constraint>
<my_constraint name="Max(C)" scheme="Sum_P1">
<param number="1">Max(p); Max(t); Max(b); Max(d)</param>
<short_descr>Sum of constraints 'Max(p); Max(t); Max(b); Max(d)'</short_descr>
<long_descr>This constraint assigns to candidate c the sum of the violations assigned to c by constraints 'Max(p); Max(t); Max(b); Max(d)'. This parameter must be a list of constraint names in MyUniverse, with a semicolon (;) between the names. White spaces are allowed between the constraint names and the semicolon. So for example " constr_1 ; constraint_name 2 ; constr 3 ; constr4 " will create the sum of constraints "constr_1", "constraint_name 2", "constr 3" and "constr4". NB: be prepared to fatal runtime errors, whenever the constraints in 'Max(p); Max(t); Max(b); Max(d)' are not loaded to MyUniverse at the time of employing this constraint.</long_descr>
</my_constraint>
<my_constraint name="Max(V)" scheme="Sum_P1">
<param number="1">Max(a); Max(i); Max(u)</param>
<short_descr>Sum of constraints 'Max(a); Max(i); Max(u)'</short_descr>
<long_descr>This constraint assigns to candidate c the sum of the violations assigned to c by constraints 'Max(a); Max(i); Max(u)'. This parameter must be a list of constraint names in MyUniverse, with a semicolon (;) between the names. White spaces are allowed between the constraint names and the semicolon. So for example " constr_1 ; constraint_name 2 ; constr 3 ; constr4 " will create the sum of constraints "constr_1", "constraint_name 2", "constr 3" and "constr4". NB: be prepared to fatal runtime errors, whenever the constraints in 'Max(a); Max(i); Max(u)' are not loaded to MyUniverse at the time of employing this constraint.</long_descr>
</my_constraint>
<hierarchy name="hier1" type="OT">
<constr name="Assimilate[voice]">
<rank rvariable="rank" value="7.0"/>
</constr>
<constr name="Max(b)">
<rank rvariable="rank" value="6.0"/>
</constr>
<constr name="Assimilate[place]">
<rank rvariable="rank" value="5.0"/>
</constr>
<constr name="*high">
<rank rvariable="rank" value="4.0"/>
</constr>
<constr name="Dep">
<rank rvariable="rank" value="3.0"/>
</constr>
<constr name="Max(C)">
<rank rvariable="rank" value="2.0"/>
</constr>
<constr name="Max(V)">
<rank rvariable="rank" value="1.0"/>
</constr>
</hierarchy>
</universe>

