def declaration(function):
function,name=_strip_function(function)<EOL>if not function.__code__.co_code in [empty_function.__code__.co_code, doc_string_only_function.__code__.co_code]: <EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>def not_implemented_function(*args,**kwargs):<EOL><INDENT>raise ValueError('<STR_LIT>'.format(args[<NUM_LIT:0>],name))<EOL><DEDENT>not_implemented_function.__qualname__=not_implemented_function.__name__ <EOL>return default(not_implemented_function,name=name)<EOL>
Declare abstract function. 

Requires function to be empty except for docstring describing semantics.
To apply function, first argument must come with implementation of semantics.