We relax the monotonicity requirement of Lyapunov's theorem to enlarge the class of functions that can provide certificates of stability. To this end, we propose two new sufficient conditions for global asymptotic stability that allow the Lyapunov functions to increase locally, but guarantee an average decrease every few steps. Our first condition is non-convex, but allows an intuitive interpretation. The second condition, which includes the first one as a special case, is convex and can be cast as a semidefinite program. We show that when non-monotonic Lyapunov functions exist, one can construct a more complicated function that decreases monotonically. We demonstrate the strength of our methodology over standard Lyapunov theory through examples from three different classes of dynamical systems. First, we consider polynomial dynamics where we utilize techniques from sum-of-squares programming. Second, analysis of piecewise affine systems is performed. Here, connections to the method of piecewise quadratic Lyapunov functions are made. Finally, we examine systems with arbitrary switching between a finite set of matrices. It will be shown that tighter bounds on the joint spectral radius can be obtained using our technique.