While it is reasonable to require the programmer to adhere to restrictions on arguments, some of these restrictions are either undecidable or too expensive to always enforce (see section 5.1). Therefore, some entries have an additional paragraph labelled “Implementation responsibilities” that distinguishes the responsibilities of the programmer from those of the implementation.