Def: Let f: N -> R be a function. O(f) = {g: N->R: there exists C, N_0 such that g(n) <= C f(n) for all n >= N_0} \Theta(f) = {g: N->R: there exists c, C, N_0 such that c f(n) <= g(n) <= C f(n) for all n >= N_0} We use O to give an upper bound: g \in O(f) means, informally, that g <= f, if inequality is understood to ignore constants and small values of the input. We use Theta to give an upper and lower bound: g \in Theta(f) means, informally, that g = f, if equality is understood to ignore constants and small values of the input.