--- Abstract Syntax Tree ------------------------ taba_reverse(x) = lettaba{2}(h{3}(idshape{4}(x{5}))) lettaba(Pair(Nil,x)) = x{10} h(Pair(n,x)) = hImpl{15}(n{16},x{17}) hImpl(Z,y) = Pair{22}(y{23},Nil{24}) hImpl(S(x),y) = lethImpl{28}(hImpl{29}(x{30},y{31})) lethImpl(Pair(Cons(a,x),y)) = Pair{38}(x{39},Cons{40}(a{41},y{42})) idshape(Nil) = Pair{46}(Z{47},Nil{48}) idshape(Cons(a,x)) = letidshape{52}(idshape{53}(x{54}),a{55}) letidshape(Pair(n,x),a) = Pair{61}(S{62}(n{63}),Cons{64}(a{65},x{66})) --- Tree Automata ------------------------------- E64 <-- Cons(E65, E66) { \v1{a} v2{x} -> v1{a}*v2{x} } E40 <-- Cons(E41, E42) { \v1{a} v2{y} -> v1{a}*v2{y} } E48 <-- Nil { {} } E24 <-- Nil { {} } E61 <-- Pair(E62, E64) { \v1{n} v2{a,x} -> v1{n}*v2{a,x} } E46 <-- Pair(E47, E48) { \v1{} v2{} -> v1{}*v2{} } E38 <-- Pair(E39, E40) { \v1{x} v2{a,y} -> v1{x}*v2{a,y} } E22 <-- Pair(E23, E24) { \v1{y} v2{} -> v1{y}*v2{} } E62 <-- S(E63) { \v1{n} -> v1{n} } E47 <-- Z { {} } E66 <-- __ { {x:__} } E65 <-- __ { {a:__} } E63 <-- __ { {n:__} } E55 <-- __ { {a:__} } E54 <-- __ { {x:__} } E42 <-- __ { {y:__} } E41 <-- __ { {a:__} } E39 <-- __ { {x:__} } E31 <-- __ { {y:__} } E30 <-- __ { {x:__} } E23 <-- __ { {y:__} } E17 <-- __ { {x:__} } E16 <-- __ { {n:__} } E10 <-- __ { {x:__} } E5 <-- __ { {x:__} } Fletidshape <-- E61 { \v{a,n,x} -> {_1:Pair(v{a,n,x}.n,v{a,n,x}.x), _2:v{a,n,x}.a} } E53 <-- Fidshape { \x{_1} -> let {v1{x} = x{_1}._1} in v1{x} } E52 <-- Fletidshape { \x{_1,_2} -> let {v1{x} = @E53(x{_1,_2}._1); v2{a} = x{_1,_2}._2} in v1{x}*v2{a} } Fidshape <-- E52 { \v{a,x} -> {_1:Cons(v{a,x}.a,v{a,x}.x)} } Fidshape <-- E46 { \v{} -> {_1:Nil} } FlethImpl <-- E38 { \v{a,x,y} -> {_1:Pair(Cons(v{a,x,y}.a,v{a,x,y}.x),v{a,x,y}.y)} } E29 <-- FhImpl { \x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{y} = x{_1,_2}._2} in v1{x}*v2{y} } E28 <-- FlethImpl { \x{_1} -> let {v1{x,y} = @E29(x{_1}._1)} in v1{x,y} } FhImpl <-- E28 { \v{x,y} -> {_1:S(v{x,y}.x), _2:v{x,y}.y} } FhImpl <-- E22 { \v{y} -> {_1:Z, _2:v{y}.y} } E15 <-- FhImpl { \x{_1,_2} -> let {v1{n} = x{_1,_2}._1; v2{x} = x{_1,_2}._2} in v1{n}*v2{x} } Fh <-- E15 { \v{n,x} -> {_1:Pair(v{n,x}.n,v{n,x}.x)} } Flettaba <-- E10 { \v{x} -> {_1:Pair(Nil,v{x}.x)} } E4 <-- Fidshape { \x{_1} -> let {v1{x} = x{_1}._1} in v1{x} } E3 <-- Fh { \x{_1} -> let {v1{x} = @E4(x{_1}._1)} in v1{x} } E2 <-- Flettaba { \x{_1} -> let {v1{x} = @E3(x{_1}._1)} in v1{x} } Ftaba_reverse <-- E2 { \v{x} -> {_1:v{x}.x} } --- Guided Tree Automata ------------------------ {Ftaba_reverse: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { (((\v{x} -> {_1:Pair(Nil,v{x}.x)}) >>> (\x{_1} -> let {v1{x} = @E3(x{_1}._1)} in v1{x}) >>> (\v{x} -> {_1:v{x}.x})) $ ({x:__})) } E3: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> Pair(4,1) 1 --> Cons(3,2) 1 --> Nil() 2 --> __() 3 --> __() 4 --> __() GUIDED TRANSITIONS: 0: 1 <-- Pair(12, 6) { \(x1_1,x1_2) x2_1-> ((\v1{y} v2{} -> v1{y}*v2{} >2> (\v{y} -> {_1:Z, _2:v{y}.y}) >>> (\x{_1,_2} -> let {v1{n} = x{_1,_2}._1; v2{x} = x{_1,_2}._2} in v1{n}*v2{x}) >>> (\v{n,x} -> {_1:Pair(v{n,x}.n,v{n,x}.x)}) >>> (\x{_1} -> let {v1{x} = @E4(x{_1}._1)} in v1{x})) $ x1_1 x2_1) } 1 <-- Pair(12, 7) { \(x1_1,x1_2) x2_1-> ((\v1{x} v2{a,y} -> v1{x}*v2{a,y} >2> (\v{a,x,y} -> {_1:Pair(Cons(v{a,x,y}.a,v{a,x,y}.x),v{a,x,y}.y)}) >>> (\x{_1} -> let {v1{x,y} = @E29(x{_1}._1)} in v1{x,y}) >>> ((\v{x,y} -> {_1:S(v{x,y}.x), _2:v{x,y}.y}) >>> (\x{_1,_2} -> let {v1{n} = x{_1,_2}._1; v2{x} = x{_1,_2}._2} in v1{n}*v2{x})) >>> (\v{n,x} -> {_1:Pair(v{n,x}.n,v{n,x}.x)}) >>> (\x{_1} -> let {v1{x} = @E4(x{_1}._1)} in v1{x})) $ x1_2 x2_1) } 5 <-- __ { _|_ } 1: 7 <-- Cons(11, 10) { \x1_1 x2_1-> ((\v1{a} v2{y} -> v1{a}*v2{y}) $ x1_1 x2_1) } 6 <-- Nil { ({}) } 5 <-- __ { _|_ } 2: 10 <-- __ { ({y:__}) } 3: 11 <-- __ { ({a:__}) } 4: 12 <-- __ { ({y:__}, {x:__}) } E4: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> Pair(4,1) 1 --> Cons(3,2) 1 --> Nil() 2 --> __() 3 --> __() 4 --> S(5) 4 --> Z() 5 --> __() GUIDED TRANSITIONS: 0: 1 <-- Pair(14, 7) { \x1_1 x2_1-> ((\v1{} v2{} -> v1{}*v2{} >2> (\v{} -> {_1:Nil}) >>> (\x{_1} -> let {v1{x} = x{_1}._1} in v1{x})) $ x1_1 x2_1) } 1 <-- Pair(15, 8) { \x1_1 x2_1-> ((\v1{n} v2{a,x} -> v1{n}*v2{a,x} >2> (\v{a,n,x} -> {_1:Pair(v{a,n,x}.n,v{a,n,x}.x), _2:v{a,n,x}.a}) >>> (\x{_1,_2} -> let {v1{x} = @E53(x{_1,_2}._1); v2{a} = x{_1,_2}._2} in v1{x}*v2{a}) >>> (\v{a,x} -> {_1:Cons(v{a,x}.a,v{a,x}.x)}) >>> (\x{_1} -> let {v1{x} = x{_1}._1} in v1{x})) $ x1_1 x2_1) } 13 <-- __ { _|_ } 1: 8 <-- Cons(12, 11) { \x1_1 x2_1-> ((\v1{a} v2{x} -> v1{a}*v2{x}) $ x1_1 x2_1) } 7 <-- Nil { ({}) } 13 <-- __ { _|_ } 2: 11 <-- __ { ({x:__}) } 3: 12 <-- __ { ({a:__}) } 4: 15 <-- S(17) { \x1_1-> ((\v1{n} -> v1{n}) $ x1_1) } 14 <-- Z { ({}) } 13 <-- __ { _|_ } 5: 17 <-- __ { ({n:__}) } E5: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({x:__}) } E16: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({n:__}) } E17: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({x:__}) } E29: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> Pair(4,1) 1 --> Cons(3,2) 1 --> Nil() 2 --> __() 3 --> __() 4 --> __() GUIDED TRANSITIONS: 0: 3 <-- Pair(12, 6) { \(x1_1,x1_2) x2_1-> ((\v1{y} v2{} -> v1{y}*v2{} >2> (\v{y} -> {_1:Z, _2:v{y}.y}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{y} = x{_1,_2}._2} in v1{x}*v2{y})) $ x1_1 x2_1) } 3 <-- Pair(12, 7) { \(x1_1,x1_2) x2_1-> ((\v1{x} v2{a,y} -> v1{x}*v2{a,y} >2> (\v{a,x,y} -> {_1:Pair(Cons(v{a,x,y}.a,v{a,x,y}.x),v{a,x,y}.y)}) >>> (\x{_1} -> let {v1{x,y} = @E29(x{_1}._1)} in v1{x,y}) >>> (\v{x,y} -> {_1:S(v{x,y}.x), _2:v{x,y}.y}) >>> (\x{_1,_2} -> let {v1{x} = x{_1,_2}._1; v2{y} = x{_1,_2}._2} in v1{x}*v2{y})) $ x1_2 x2_1) } 5 <-- __ { _|_ } 1: 7 <-- Cons(11, 10) { \x1_1 x2_1-> ((\v1{a} v2{y} -> v1{a}*v2{y}) $ x1_1 x2_1) } 6 <-- Nil { ({}) } 5 <-- __ { _|_ } 2: 10 <-- __ { ({y:__}) } 3: 11 <-- __ { ({a:__}) } 4: 12 <-- __ { ({y:__}, {x:__}) } E30: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({x:__}) } E31: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({y:__}) } E53: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> Pair(4,1) 1 --> Cons(3,2) 1 --> Nil() 2 --> __() 3 --> __() 4 --> S(5) 4 --> Z() 5 --> __() GUIDED TRANSITIONS: 0: 3 <-- Pair(14, 7) { \x1_1 x2_1-> ((\v1{} v2{} -> v1{}*v2{} >2> (\v{} -> {_1:Nil}) >>> (\x{_1} -> let {v1{x} = x{_1}._1} in v1{x})) $ x1_1 x2_1) } 3 <-- Pair(15, 8) { \x1_1 x2_1-> ((\v1{n} v2{a,x} -> v1{n}*v2{a,x} >2> (\v{a,n,x} -> {_1:Pair(v{a,n,x}.n,v{a,n,x}.x), _2:v{a,n,x}.a}) >>> (\x{_1,_2} -> let {v1{x} = @E53(x{_1,_2}._1); v2{a} = x{_1,_2}._2} in v1{x}*v2{a}) >>> (\v{a,x} -> {_1:Cons(v{a,x}.a,v{a,x}.x)}) >>> (\x{_1} -> let {v1{x} = x{_1}._1} in v1{x})) $ x1_1 x2_1) } 13 <-- __ { _|_ } 1: 8 <-- Cons(12, 11) { \x1_1 x2_1-> ((\v1{a} v2{x} -> v1{a}*v2{x}) $ x1_1 x2_1) } 7 <-- Nil { ({}) } 13 <-- __ { _|_ } 2: 11 <-- __ { ({x:__}) } 3: 12 <-- __ { ({a:__}) } 4: 15 <-- S(17) { \x1_1-> ((\v1{n} -> v1{n}) $ x1_1) } 14 <-- Z { ({}) } 13 <-- __ { _|_ } 5: 17 <-- __ { ({n:__}) } E54: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({x:__}) } E55: INITIAL GUIDE: 0 GUIDE FUNCTION: 0 --> __() GUIDED TRANSITIONS: 0: 0 <-- __ { ({a:__}) }} -- 0.05 seconds is elapsed.