f(n) = o(g(n)) ==> f(n) < c g(n) - m for any constant m, any c>0 and n>n0
when c =1, f(n) < g(n) - m for all n>n0
Need to prove: 2^f(n) < a 2^g(n) for any a>0 and all n>n0'
if a >= 1, it's obvious 2^f(n) < a 2^g(n) for all n>n0
if 0 < a < 1, let b = 1/a; b > 1,
for n>n0 (this means n0' >= n0) , we can reason backward like this:
2^f(n) < a 2^g(n) 2^f(n) <== 2^f(n) < (1/b) 2^g(n) <== 2^f(n) < 2^log(1/b) 2^g(n) <==
2^f(n) < 2^(g(n) - logb) <== f(n) < g(n) - logb which is proven at the beginning, where m could be logb.
PS: "f(n) = o(g(n)) ==> f(n) < c g(n) - m" this is straightforward and can be easily proven by L' Hopital's Rule.