# tapes
tape tape1 { 
    def correct1:=[ "+", "/", "+" ] 0;
    def correct2:=[ "+", "-", "+", "+", "/", "+", "-", "+", "+" ] 0;
    def correct3:=[ "/" ] 0;
    def fail1:=[ "+", "-", "+", "+", "/", "+", "+", "-", "+" ] 0;
} fail1;

# states
state 0 name "rewind1" startstate { 
  (tape1=="-") -- tape1("-",-1) -> 0 (-19);
  (tape1=="/") -- tape1("/",-1) -> 0 (-63);
  (tape1==oot) -- tape1(nothing,1) -> 1 (20);
  (tape1=="+") -- tape1("+",-1) -> 0 (-126);
}(650,278);

state 1 name "startReplace" { 
  (tape1=="/") -- tape1("/",1) -> 8 (1);
  (tape1=="&") -- tape1("/",1) -> 7 (1);
  (tape1==oot) -- tape1(nothing,0) -> 88 (71);
  (tape1=="+") -- tape1("x",1) -> 2 (1);
  (tape1=="-") -- tape1("=",1) -> 3 (20);
}(1122,436);

state 2 name "forwardMinus" { 
  (tape1=="/") -- tape1("&",1) -> 4 (3);
  (tape1=="&") -- tape1("&",1) -> 2 (-92);
  (tape1=="=") -- tape1("-",1) -> 4 (30);
  (tape1=="+") -- tape1("+",1) -> 2 (83);
  (tape1==oot) -- tape1(nothing,0) -> 88 (-12);
  (tape1=="-") -- tape1("-",1) -> 2 (-33);
  (tape1=="x") -- tape1("+",1) -> 4 (61);
}(351,283);

state 3 name "forwardPlus" { 
  (tape1=="&") -- tape1("&",1) -> 3 (134);
  (tape1=="x") -- tape1("+",1) -> 5 (-30);
  (tape1=="-") -- tape1("-",1) -> 3 (-157);
  (tape1=="+") -- tape1("+",1) -> 3 (-80);
  (tape1==oot) -- tape1(nothing,0) -> 88 (0);
  (tape1=="/") -- tape1("&",1) -> 5 (17);
  (tape1=="=") -- tape1("-",1) -> 5 (-7);
}(1221,674);

state 4 name "checkPlus" { 
  (tape1=="+") -- tape1("x",-1) -> 6 (20);
  (tape1=="-") -- tape1("-",0) -> 88 (-28);
  (tape1==oot) -- tape1(nothing,0) -> 88 (-7);
  (tape1=="/") -- tape1("/",0) -> 88 (20);
}(143,150);

state 5 name "checkMinus" { 
  (tape1=="&") -- tape1("&",0) -> 88 (-36);
  (tape1=="/") -- tape1("/",0) -> 88 (29);
  (tape1=="+") -- tape1("+",0) -> 88 (7);
  (tape1=="-") -- tape1("=",-1) -> 6 (-54);
  (tape1==oot) -- tape1(nothing,0) -> 88 (-18);
}(1366,821);

state 6 name "rewind" { 
  (tape1=="+") -- tape1("+",-1) -> 6 (99);
  (tape1=="=") -- tape1("-",1) -> 1 (-14);
  (tape1=="x") -- tape1("+",1) -> 1 (14);
  (tape1=="-") -- tape1("-",-1) -> 6 (48);
  (tape1=="&") -- tape1("&",-1) -> 6 (-194);
}(1346,172);

state 7 name "forwardEnd" { 
  (tape1=="x") -- tape1("+",1) -> 8 (-21);
  (tape1=="-") -- tape1("-",1) -> 7 (20);
  (tape1==oot) -- tape1(nothing,0) -> 88 (-6);
  (tape1=="/") -- tape1("/",1) -> 88 (20);
  (tape1=="=") -- tape1("-",1) -> 8 (8);
  (tape1=="+") -- tape1("+",1) -> 7 (106);
}(629,580);

state 8 name "checkEnd" { 
  (tape1=="+") -- tape1("+",0) -> 88 (0);
  (tape1==oot) -- tape1(nothing,0) -> 99 (12);
  (tape1=="/") -- tape1("/",0) -> 88 (-19);
  (tape1=="-") -- tape1("-",0) -> 88 (20);
}(375,530);

state 88 name "error" endstate { }(120,834);

state 99 name "allOK" endstate { }(578,428);


