MAYBE MAYBE TRS: { app(app(app(app(filter2(), true()), f), x), xs) -> app(app(cons(), x), app(app(filter(), f), xs)), app(app(app(app(filter2(), false()), f), x), xs) -> app(app(filter(), f), xs), app(app(:(), app(app(:(), app(app(:(), app(app(:(), C()), x)), y)), z)), u) -> app( app(:(), app(app(:(), x), z)), app(app(:(), app(app(:(), app(app(:(), x), y)), z)), u) ), app(app(map(), f), app(app(cons(), x), xs)) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app(app(map(), f), nil()) -> nil(), app(app(filter(), f), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(f, x)), f), x), xs), app(app(filter(), f), nil()) -> nil() } DUP: We consider a duplicating system. Trs: { app( app(app(app(filter2(), true()), f), x), xs ) -> app(app(cons(), x), app(app(filter(), f), xs)), app( app(app(app(filter2(), false()), f), x), xs ) -> app(app(filter(), f), xs), app( app(:(), app(app(:(), app(app(:(), app(app(:(), C()), x)), y)), z)), u ) -> app( app(:(), app(app(:(), x), z)), app(app(:(), app(app(:(), app(app(:(), x), y)), z)), u) ), app( app(map(), f), app(app(cons(), x), xs) ) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app( app(map(), f), nil() ) -> nil(), app( app(filter(), f), app(app(cons(), x), xs) ) -> app(app(app(app(filter2(), app(f, x)), f), x), xs), app( app(filter(), f), nil() ) -> nil() } Fail