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