# Defining Functions

We have seen that a function*f*:

*X → Y*can be defined as a set, its

**graph**,

*graph*( *f *) = {(*x*, *f*(*x*)) | *x
*∈*
X* }

Notice that

*graph*( *f *) ⊂ *X
×
Y*

As with any set, this one can be defined using predicates. For example,
a 440 Hz pure tone, which is a sinusoidal function of time,
*f*: *Reals*→
*Reals*, can be given as a set by

*graph*( *f *) = {(*t*, *y*) |
*t* ∈ *Reals* and
*y *= sin(880π*t*)}
⊂ *Reals*
×*Reals*

Notice that the expression
"*y *= sin(880π*t*)"
is a predicate. For any particular *y* and *t* it is either
true or false. In it, the symbol
"=" is interpreted as an assertion, not an assignment.
The set is those pairs (*t*, *y*) such that
the assertion is true.

A common shorthand, used in many textbooks, is to give the predicate only as a definition of the function:

*y *= sin(880π *t*)

or

*f*(*t*)* *= sin(880π*t*).

This is acceptable when the domain and the range of the function are clearly understood from the context, and when it is clear that these expressions declare the relationship between the domain and the range that the function defines.