Just representing that the solution is there is one use-case. If solve returns some Solution object, that gives more information than if it is returns `[]` or raises NotImplementedError: that it knows that there is a solution. 

By the way, a nit-pick. It's `NotImplementedError`, not `NotImplemented`. This is important because the latter also exists in Python, but is a completely different thing.