I am reading a book on theory of computation today and i am really having a tough time understanding the pumpimg lemma concept and how it is used to prove that for eg. a^n b^n :n<0 does not form a regular set ?and how does pigeonhole principle come into this?