Subject: fu'ivla correctness algorithm (was Re: [lojban] djataurte)

From: Richard Curnow <[email-masked]>
Date: Tue, 1 May 2001 22:33:35 +0100

On Thu, Apr 26, 2001 at 03:42:40PM -0400, Bob LeChevalier (lojbab) wrote:
> 
> specific conditions. I don't see a reason it would break up, but this is 
> still an art - we have no formal algorithm to test fu'ivla (something 
> someone programmically inclined might be able to develop, but the algorithm 
> will be tricky to develop and even harder to prove correct). So you either 
> have to make them with CVCr[lojbanized form] or take your chances.
> 

I have an algorithm within the front end of jbofi'e, and which is also
available stand-alone as the program vlatai, which hopefully comes
pretty close. I think the breaking-up analysis is sound. The area
that I'm not confident of is the rules about consonant clusters in
fu'ivla, particularly when there are syllabic consonants present.

For example, the discussed words for 'tart' are validated thus:

djataurte : [EV=10] fu'ivla (stage-4) : djataurte
cidjrtarte : [EV= 8] fu'ivla (stage-3) : cidjrtarte
tisrtarte : [EV= 9] fu'ivla (stage-3 short rafsi) : tisrtarte
titrtarte : [EV= 9] fu'ivla (stage-3 short rafsi) : titrtarte
rutrtarte : [EV= 9] fu'ivla (stage-3 short rafsi) : rutrtarte

and prefixed cmavo are correctly detected :
ledjataurte : [EV=10] fu'ivla (stage-4) : le djataurte
lecidjrtarte : [EV= 8] fu'ivla (stage-3) : le cidjrtarte
letisrtarte : [EV= 9] fu'ivla (stage-3 short rafsi) : le tisrtarte
letitrtarte : [EV= 9] fu'ivla (stage-3 short rafsi) : le titrtarte
lerutrtarte : [EV= 9] fu'ivla (stage-3 short rafsi) : le rutrtarte

The 'algorithm' involves some lookup-tables which categorise adjacent
groups of letters (e.g. valid initial consonant pair, vowel after
consonant etc). These categorisations provide the input to a
state-machine. The state the machine is in at the end of the word
indicates the word type (with a tweak or two.) The generation of the
state machine is quite involved. It's done by a custom utility I wrote,
based on a file which defines separate state machines for all the word
types. Anyone who's interested can look up the techniques in the
jbofi'e source code (in the files morf*.* and n2d/*.*).

-- 
Richard P. Curnow, Weston-super-Mare, UK
http://www.rrbcurnow.freeuk.com/
email:[email-masked] email:[email-masked]