Converter from fast to lustre

for the moment it only works with system describing completely the initial
states (ie x = 0 and not x >= 0).

To use it, compile it: ocamlbuild fastConv.native

Then 

./fastConv.native < ../barber.fst > barber.lus

It will read the ../barber.fst on stdin and produce the lustre file on stdout. 

The produced barber.lus is parsable by lus2ec.

To analyze it, use Kind-AI:

$ kind-ai -full-packs barber.lus 
Warning: No property found in specified node: barber4 :___z1z___. Default property assumed
Generated packs: []: (Oct: {ints: barber, chair, open, p1, p2, p3, p4, p5; reals: },
                   PplLoose: {ints: barber, chair, open, p1, p2, p3, p4, p5; reals: })


Invariant: []:
 Intervals:  [|p5 𝝐 [0; 3]; p4 𝝐 [0; 1]; p3 𝝐 [0; 1];
                 p2 𝝐 [0; 1]; p1 𝝐 [0; 1]; open 𝝐 [0; 1];
                 chair 𝝐 [0; 1]; barber 𝝐 [0; 1]|]
 ApronBoxes: [|barber>=0; -barber+1>=0; chair>=0; -chair+1>=0; open>=0;
               -open+1>=0; p1>=0; -p1+1>=0; p2>=0; -p2+1>=0; p3>=0; -p3+1>=0;
               p4>=0; -p4+1>=0; p5>=0; -p5+3>=0|]
 Octs: [|barber>=0; -barber+1>=0; -barber+chair+1>=0; barber+chair>=0;
         chair>=0; -barber-chair+1>=0; barber-chair+1>=0; -chair+1>=0;
         -barber+open+1>=0; barber+open>=0; -chair+open+1>=0; chair+open>=0;
         open>=0; -barber-open+1>=0; barber-open+1>=0; -chair-open+1>=0;
         chair-open+1>=0; -open+1>=0; -barber+p1+1>=0; barber+p1>=0;
         -chair+p1>=0; chair+p1>=0; -open+p1+1>=0; open+p1>=0; p1>=0;
         -barber-p1+1>=0; barber-p1+1>=0; -chair-p1+2>=0; chair-p1+1>=0;
         -open-p1+2>=0; open-p1+1>=0; -p1+1>=0; -barber+p2+1>=0;
         barber+p2>=0; -chair+p2>=0; chair+p2>=0; -open+p2+1>=0; open+p2>=0;
         -p1+p2>=0; p1+p2>=0; p2>=0; -barber-p2+1>=0; barber-p2+1>=0;
         -chair-p2+2>=0; chair-p2+1>=0; -open-p2+2>=0; open-p2+1>=0;
         -p1-p2+2>=0; p1-p2>=0; -p2+1>=0; -barber+p3+1>=0; barber+p3>=0;
         -chair+p3>=0; chair+p3>=0; -open+p3+1>=0; open+p3>=0; -p1+p3>=0;
         p1+p3>=0; -p2+p3>=0; p2+p3>=0; p3>=0; -barber-p3+1>=0;
         barber-p3+1>=0; -chair-p3+2>=0; chair-p3+1>=0; -open-p3+2>=0;
         open-p3+1>=0; -p1-p3+2>=0; p1-p3>=0; -p2-p3+2>=0; p2-p3>=0;
         -p3+1>=0; -barber+p4+1>=0; barber+p4>=0; -chair+p4>=0; chair+p4>=0;
         -open+p4+1>=0; open+p4>=0; -p1+p4>=0; p1+p4>=0; -p2+p4>=0; p2+p4>=0;
         -p3+p4>=0; p3+p4>=0; p4>=0; -barber-p4+1>=0; barber-p4+1>=0;
         -chair-p4+2>=0; chair-p4+1>=0; -open-p4+2>=0; open-p4+1>=0;
         -p1-p4+2>=0; p1-p4>=0; -p2-p4+2>=0; p2-p4>=0; -p3-p4+2>=0; p3-p4>=0;
         -p4+1>=0; -barber+p5>=0; barber+p5>=0; -chair+p5>=0; chair+p5>=0;
         -open+p5>=0; open+p5>=0; -p1+p5>=0; p1+p5>=0; -p2+p5>=0; p2+p5>=0;
         -p3+p5>=0; p3+p5>=0; -p4+p5>=0; p4+p5>=0; p5>=0; -barber-p5+3>=0;
         barber-p5+3>=0; -chair-p5+3>=0; chair-p5+3>=0; -open-p5+4>=0;
         open-p5+3>=0; -p1-p5+4>=0; p1-p5+3>=0; -p2-p5+4>=0; p2-p5+3>=0;
         -p3-p5+4>=0; p3-p5+3>=0; -p4-p5+4>=0; p4-p5+3>=0; -p5+3>=0|]
 PplLoose: [|p1-p4=0; p2-p4=0; p3-p4=0; -2barber-chair+open-p4-p5+3>=0;
             -2barber-2chair-p5+3>=0; barber>=0; chair>=0; open>=0;
             -chair+p4>=0; -barber+chair-open-2p4+p5>=0;
             -barber-chair-3open+p5>=0|]
