turing I IfGoto i1 i2 r revltape Cons x xs prog turing[Ite] !EQ x i1 I IfGoto i1 i2 r revltape Cons x xs prog turing I Goto int r revltape rtape prog turing lookup int prog revltape rtape prog turing I Right r revltape Cons x xs prog turing r Cons x revltape xs prog turing I Right r revltape Nil prog turing r Cons 0 revltape Nil prog turing I Left r Cons x xs rtape prog turing r xs Cons x rtape prog turing I Left r Nil rtape prog turing r Nil Cons 0 rtape prog turing I Write int r revltape Cons x xs prog turing r revltape Cons int xs prog turing I Halt r revltape rtape prog rtape turing Empty revltape rtape prog rtape lookup S x I l r lookup x r instrsConstrCheck I l1 r1 I x y True instrsConstrCheck I l1 r1 Empty False instrsConstrCheck Empty I x y False instrsConstrCheck Empty Empty True instrConstrCheck IfGoto igtNat1 igtNat2 IfGoto igtNat12 igtNat22 True instrConstrCheck IfGoto igtNat1 igtNat2 Goto gtNat2 False instrConstrCheck IfGoto igtNat1 igtNat2 Right False instrConstrCheck IfGoto igtNat1 igtNat2 Left False instrConstrCheck IfGoto igtNat1 igtNat2 Write wNat2 False instrConstrCheck IfGoto igtNat1 igtNat2 Halt False instrConstrCheck Goto gtNat IfGoto igtNat12 igtNat22 False instrConstrCheck Goto gtNat Goto gtNat2 True instrConstrCheck Goto gtNat Right False instrConstrCheck Goto gtNat Left False instrConstrCheck Goto gtNat Write wNat2 False instrConstrCheck Goto gtNat Halt False instrConstrCheck Right IfGoto igtNat12 igtNat22 False instrConstrCheck Right Goto gtNat2 False instrConstrCheck Right Right True instrConstrCheck Right Left False instrConstrCheck Right Write wNat2 False instrConstrCheck Right Halt False instrConstrCheck Left IfGoto igtNat12 igtNat22 False instrConstrCheck Left Goto gtNat2 False instrConstrCheck Left Right False instrConstrCheck Left Left True instrConstrCheck Left Write wNat2 False instrConstrCheck Left Halt False instrConstrCheck Write wNat IfGoto igtNat12 igtNat22 False instrConstrCheck Write wNat Goto gtNat2 False instrConstrCheck Write wNat Right False instrConstrCheck Write wNat Left False instrConstrCheck Write wNat Write wNat2 True instrConstrCheck Write wNat Halt False instrConstrCheck Halt IfGoto igtNat12 igtNat22 False instrConstrCheck Halt Goto gtNat2 False instrConstrCheck Halt Right False instrConstrCheck Halt Left False instrConstrCheck Halt Write wNat2 False instrConstrCheck Halt Halt True notEmpty Cons x xs True notEmpty Nil False lookup 0 instrs instrs instrsSecond I l r r instrsFirst I l r l getWrite Write int int getGotoSecond IfGoto i1 i2 i2 getGotoFirst IfGoto i1 i2 i1 getGoto Goto int int run prog tapeinput turing prog Nil tapeinput prog !EQ S x S y !EQ x y !EQ 0 S y False !EQ S x 0 False !EQ 0 0 True turing[Ite] True I IfGoto i1 i2 r revltape rtape prog turing lookup i2 prog revltape rtape prog turing[Ite] False I l r revltape rtape prog turing r revltape rtape prog Empty 0 getGoto 1 run 2 getGotoFirst 1 True 0 instrConstrCheck 2 Goto 1 Left 0 Right 0 !EQ 2 Cons 2 turing 4 I 2 instrsFirst 1 False 0 turing[Ite] 5 Nil 0 getGotoSecond 1 lookup 2 Write 1 Halt 0 S 1 instrsConstrCheck 2 0 0 getWrite 1 notEmpty 1 IfGoto 2 instrsSecond 1 INNERMOST Frederiksen_Glenstrup/turing_typed.tml.trs