1.17/1.19 MAYBE 1.17/1.19 We consider the system theBenchmark. 1.17/1.19 1.17/1.19 Alphabet: 1.17/1.19 1.17/1.19 0 : [] --> a -> b 1.17/1.19 cons : [] --> (a -> b) -> c -> c 1.17/1.19 hd : [] --> c -> a -> b 1.17/1.19 map : [] --> ((a -> b) -> a -> b) -> c -> c 1.17/1.19 nil : [] --> c 1.17/1.19 1.17/1.19 Rules: 1.17/1.19 1.17/1.19 f 0 x => hd (map f (cons 0 nil)) x 1.17/1.19 map f nil => nil 1.17/1.19 map f (cons g x) => cons (f g) (map f x) 1.17/1.19 1.17/1.19 Using the transformations described in [Kop11], this system can be brought in a form without leading free variables in the left-hand side, and where the left-hand side of a variable is always a functional term or application headed by a functional term. 1.17/1.19 1.17/1.19 We now transform the resulting AFS into an AFSM by replacing all free variables by meta-variables (with arity 0). This leads to the following AFSM: 1.17/1.19 1.17/1.19 Alphabet: 1.17/1.19 1.17/1.19 0 : [] --> a -> b 1.17/1.19 cons : [a -> b * c] --> c 1.17/1.19 hd : [c * a] --> b 1.17/1.19 map : [(a -> b) -> a -> b * c] --> c 1.17/1.19 nil : [] --> c 1.17/1.19 ~AP1 : [(a -> b) -> a -> b * a -> b] --> a -> b 1.17/1.19 1.17/1.19 Rules: 1.17/1.19 1.17/1.19 ~AP1(F, 0) X => hd(map(F, cons(0, nil)), X) 1.17/1.19 map(F, nil) => nil 1.17/1.19 map(F, cons(G, X)) => cons(~AP1(F, G), map(F, X)) 1.17/1.19 ~AP1(F, G) => F G 1.17/1.19 1.17/1.19 1.17/1.19 +++ Citations +++ 1.17/1.19 1.17/1.19 [Kop11] C. Kop. Simplifying Algebraic Functional Systems. In Proceedings of CAI 2011, volume 6742 of LNCS. 201--215, Springer, 2011. 1.17/1.20 EOF