--- Abstract Syntax Tree ------------------------ serialize_bintree(x) = sb{2}(x{3},EOS{4}) sb(BL,r) = L{9}(R{10}(r{11})) sb(BN(x,y),r) = L{16}(sb{17}(x{18},sb{19}(y{20},R{21}(r{22})))) --- Tree Automata ------------------------------- E4 <-- EOS { {} } E16 <-- L(E17) { \v1{r,x,y} -> v1{r,x,y} } E9 <-- L(E10) { \v1{r} -> v1{r} } E21 <-- R(E22) { \v1{r} -> v1{r} } E10 <-- R(E11) { \v1{r} -> v1{r} } E22 <-- __ { {r:__} } E20 <-- __ { {y:__} } E18 <-- __ { {x:__} } E11 <-- __ { {r:__} } E3 <-- __ { {x:__} } E19 <-- Fsb { \x{_1,_2} -> let {v1{y} = x{_1,_2}._1; v2{r} = @E21(x{_1,_2}._2)} in v1{y}*v2{r} } E17 <-- Fsb { \x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{r,y} = @E19(x{_1,_2}._2)} in v1{x}*v2{r,y} } Fsb <-- E16 { \v{r,x,y} -> {_1:BN(v{r,x,y}.x,v{r,x,y}.y), _2:v{r,x,y}.r} } Fsb <-- E9 { \v{r} -> {_1:BL, _2:v{r}.r} } E2 <-- Fsb { \x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{} = @E4(x{_1,_2}._2)} in v1{x}*v2{} } Fserialize_bintree <-- E2 { \v{x} -> {_1:v{x}.x} } --- Guided Tree Automata ------------------------ {Fserialize_bintree: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> L(1) 1 --> L(1) 1 --> R(2) 2 --> __() GUIDED TRANSITIONS: 0: 1 <-- L(7) { \x1_1-> (((\v1{r,x,y} -> v1{r,x,y}) >>> ((\v{r,x,y} -> {_1:BN(v{r,x,y}.x,v{r,x,y}.y), _2:v{r,x,y}.r}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{} = @E4(x{_1,_2}._2)} in v1{x}*v2{})) >>> (\v{x} -> {_1:v{x}.x})) $ x1_1) } 1 <-- L(5) { \x1_1-> (((\v1{r} -> v1{r}) >>> ((\v{r} -> {_1:BL, _2:v{r}.r}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{} = @E4(x{_1,_2}._2)} in v1{x}*v2{})) >>> (\v{x} -> {_1:v{x}.x})) $ x1_1) } 4 <-- __ { _|_ } 1: 7 <-- L(7) { \x1_1-> (((\v1{r,x,y} -> v1{r,x,y}) >>> (\v{r,x,y} -> {_1:BN(v{r,x,y}.x,v{r,x,y}.y), _2:v{r,x,y}.r}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{r,y} = @E19(x{_1,_2}._2)} in v1{x}*v2{r,y})) $ x1_1) } 7 <-- L(5) { \x1_1-> (((\v1{r} -> v1{r}) >>> (\v{r} -> {_1:BL, _2:v{r}.r}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{r,y} = @E19(x{_1,_2}._2)} in v1{x}*v2{r,y})) $ x1_1) } 5 <-- R(8) { \x1_1-> ((\v1{r} -> v1{r}) $ x1_1) } 4 <-- __ { _|_ } 2: 8 <-- __ { ({r:__}) } E3: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({x:__}) } E4: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> EOS() GUIDED TRANSITIONS: 0: 1 <-- EOS { ({}) } 0 <-- __ { _|_ } E18: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({x:__}) } E19: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> L(1) 1 --> L(1) 1 --> R(2) 2 --> __() GUIDED TRANSITIONS: 0: 3 <-- L(7) { \x1_1-> (((\v1{r,x,y} -> v1{r,x,y}) >>> (\v{r,x,y} -> {_1:BN(v{r,x,y}.x,v{r,x,y}.y), _2:v{r,x,y}.r}) >>> (\x{_1,_2} -> let {v1{y} = x{_1,_2}._1; v2{r} = @E21(x{_1,_2}._2)} in v1{y}*v2{r})) $ x1_1) } 3 <-- L(5) { \x1_1-> (((\v1{r} -> v1{r}) >>> (\v{r} -> {_1:BL, _2:v{r}.r}) >>> (\x{_1,_2} -> let {v1{y} = x{_1,_2}._1; v2{r} = @E21(x{_1,_2}._2)} in v1{y}*v2{r})) $ x1_1) } 4 <-- __ { _|_ } 1: 7 <-- L(7) { \x1_1-> (((\v1{r,x,y} -> v1{r,x,y}) >>> (\v{r,x,y} -> {_1:BN(v{r,x,y}.x,v{r,x,y}.y), _2:v{r,x,y}.r}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{r,y} = @E19(x{_1,_2}._2)} in v1{x}*v2{r,y})) $ x1_1) } 7 <-- L(5) { \x1_1-> (((\v1{r} -> v1{r}) >>> (\v{r} -> {_1:BL, _2:v{r}.r}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{r,y} = @E19(x{_1,_2}._2)} in v1{x}*v2{r,y})) $ x1_1) } 5 <-- R(8) { \x1_1-> ((\v1{r} -> v1{r}) $ x1_1) } 4 <-- __ { _|_ } 2: 8 <-- __ { ({r:__}) } E20: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({y:__}) } E21: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> R(1) 1 --> __() GUIDED TRANSITIONS: 0: 1 <-- R(3) { \x1_1-> ((\v1{r} -> v1{r}) $ x1_1) } 0 <-- __ { _|_ } 1: 3 <-- __ { ({r:__}) }} -- 0.04 seconds is elapsed.