The first principle we are talking about here is this:
#f'(x)=lim_(h->0)(f(x+h)-f(x))/h#
We now have:
#d/dx(ln(x))=lim_(h->0)(ln(x+h)-ln(x))/h#
#=>lim_(h->0)[ln(x+h)-ln(x)]*1/h#
Using the fact that #log_a(b/c)=log_ab-log_ac#, we now have:
#=>lim_(h->0)[ln((x+h)/x)]*1/h#
#=>lim_(h->0)[ln(x/x+h/x)]*1/h#
#=>lim_(h->0)[ln(1+h/x)]*1/h#
Now, using the fact that #alog_bc=log_bc^a#
#=>lim_(h->0)1/h[ln(1+h/x)]#
#=>lim_(h->0)ln((1+h/x)^(1/h))#
Hmm... Let's do some algebra here.
Now, we let #h/x=g#
This yields #h=gx# when we multiply both sides by #x#.
We now have:
#=>lim_(h->0)ln((1+g)^(1/(gx)))#
If you are asking, "What if #x=0#?", don't worry (be happy!).
It is fine because in the function #f(x)=ln(x)#, #f'(0)# is undefined because 0 is not even in the domain of this function (#ln(0)# is undefined)
Now, when #h# approaches 0 in #h=gx#, then we can also say that #g# approaches 0. (as #g# gets really, really, small, to zero, #h# also approaches zero.)
We can therefore say that:
#lim_(h->0)ln((1+g)^(1/(gx)))=lim_(g->0)ln((1+g)^(1/(gx)))#
We also note that #1/(gx)=1/g*1/x#
#=>lim_(g->0)ln((1+g)^(1/g*1/x))#
Using the fact that #a^(bc)=(a^b)^c#, we have:
#lim_(g->0)ln(((1+g)^(1/g))^(1/x))#
Using our previous fact that #alog_bc=log_bc^a#, we now have:
#lim_(g->0)1/xln(((1+g)^(1/g))# Now, #1/x# doesn't even matter in this limit, for we are dealing with #g#.
Therefore, we can bring #1/x# entirely out of the limit.
#1/xlim_(g->0)ln(((1+g)^(1/g))#
We can also bring the limit inside the natural log.
#=>1/xln((lim_(g->0)(1+g)^(1/g))#
Now, #(lim_(g->0)(1+g)^(1/g))# is equal to #e#! (If you are not sure about this, I recommend studying more about #e#.)
Therefore,
#1/xln((lim_(g->0)(1+g)^(1/g))=1/xln(e)#
#ln(e)=1#, so:
#lim_(h->0)(ln(x+h)-ln(x))/h=1/x#