A function is well defined in mathematics; see http://en.wikipedia.org/wiki/Function_(mathematics) . Note that the definition doesn't really differ for computer science. Procedures, on the other hand, may or may not be functions according to whether they behave like them (match their properties).