38.05/13.30 MAYBE 38.05/13.30 We consider the system theBenchmark. 38.05/13.30 38.05/13.30 Alphabet: 38.05/13.30 38.05/13.30 0 : [] --> a 38.05/13.30 cons : [e * f] --> f 38.05/13.30 f : [a * a * a] --> b 38.05/13.30 false : [] --> d 38.05/13.30 filter : [e -> d * f] --> f 38.05/13.30 filter2 : [d * e -> d * e * f] --> f 38.05/13.30 g : [c * c] --> c 38.05/13.30 map : [e -> e * f] --> f 38.05/13.30 nil : [] --> f 38.05/13.30 plus : [a * a] --> a 38.05/13.30 s : [a] --> a 38.05/13.30 true : [] --> d 38.05/13.30 38.05/13.30 Rules: 38.05/13.30 38.05/13.30 plus(x, 0) => x 38.05/13.30 plus(x, s(y)) => s(plus(x, y)) 38.05/13.30 f(0, s(0), x) => f(x, plus(x, x), x) 38.05/13.30 g(x, y) => x 38.05/13.30 g(x, y) => y 38.05/13.30 map(h, nil) => nil 38.05/13.30 map(h, cons(x, y)) => cons(h x, map(h, y)) 38.05/13.30 filter(h, nil) => nil 38.05/13.30 filter(h, cons(x, y)) => filter2(h x, h, x, y) 38.05/13.30 filter2(true, h, x, y) => cons(x, filter(h, y)) 38.05/13.30 filter2(false, h, x, y) => filter(h, y) 38.05/13.30 38.05/13.30 This AFS is converted to an AFSM simply by replacing all free variables by meta-variables (with arity 0). 38.05/13.30 38.05/13.30 EOF