# morphological combination rules for words that consist of alternating blocks
# of "a"s and "b"s, each block at least as long as the previous one.
initial <>, rules build;
combi_rule build( $state, $link ):
require $link in <A, B>;
require $state.1L in <nil, $link>;
result $state + <$link>, rules build, delete;
result $state + <$link>, accept;
end;
combi_rule delete( $state, $link ):
require $link in <A, B>;
require not $state.1L in <nil, $link>;
if $state.2L in <nil, $link> then
result $state - 1L + <$link>, rules build, delete;
result $state - 1L + <$link>, accept;
else
result $state - 1L + <$link>, rules delete;
end;
end;
# end of file =================================================================