Are there any generic thinking approaches for providing mathematical proofs to a given theorem To produce mathematical proofs for theorems we should have the required knowledge in that area. But even having adequate knowledge, people like me struggle a lot for writing down the proofs for any given theorem. 
Is there any way I can improve these skills? Are there any generic thinking approaches for providing mathematical proofs to a given theorem?
 A: In the absence of more information I will give a generic answer.
Some general resources on the topic:


*

*http://www.tricki.org (wiki-style collection of proof techniques)

*Pólya: How to solve it (this book is a classic on the topic)

*Engel: Problem-Solving Strategies (another classic with lots of problems)

*Solow: How to Read and Do Proofs (also highly recommended)

*Houston: "How to Think like a Mathematician" (introductory and nice companion to Engel's)


Some general strategies for attacking a problem that is better understood with examples:


*

*Try small (to medium sized) cases

*Generalize

*Specialize

*Combine Generalize-Specialize by adding assumptions and weakening conclusions freely during your first proof attempts, then try to remove or weaken assumptions and to strengthens the conclusions

*Draw conclusions from the result

*Put it away and look at it again later


Strategies to improve your skills:


*

*Try to solve lots of problems

*Read solutions after spending time trying

*Discuss your thoughts with others

*Become teaching assistant or tutor, as teaching/explaining a topic to others helps your understanding a lot

*Rewrite your proofs until they have textbook quality

*When reading proofs in textbooks, first check that the proof is correct and complete by verifying each step, then lean back to get the full picture by extracting the key ideas and finally look again at the details to learn the techniques how to write down precisely a maybe vague idea

*Reflect why you did not find a particular solution

*If your strategy of proving something fails, ask yourself whether there is any reason that your strategy had no hope of working (e.g. because the same strategy would have proven a stronger result, which is in fact false).


(This post has been wikified in case someone wants to add.)
A: In some precise sense, people conjecture that there is no general method for proving theorems. More than that, they even conjecture that in general, we can't expect theorems to have short proofs. If you want to learn more, you can try reading about Proof Complexity.
A: Perhaps you misunderstand the activity of proving theorems. A great portion of the time is spent figuring out just what theorems to prove. In the process, you adapt hypotheses and conclusions as you struggle to prove preliminary versions which happen to be false. In other words, the theorems are not given for your to prove; they must be found first. And for finding theorems, the only way is to prove simpler theorems, to improve your theorem-finding skills.
A: As others have indicated, it would be much easier to answer this question if you gave a better indication of the level at which you are currently studying mathematics/trying to prove theorems.  (High school, undergrad, doctoral student, professional, ... ?)  Nevertheless, here is some general advice, which is similar
to the advice I give my own students at the advanced undergrads/beginning doctoral student level.
Let's begin with what professional mathematicians do: they prove new theorems, results that have never been proved before.  Doing this has one obvious difficulty: until the theorem is proved, you can't even be sure that it is true.
So you have the problem of trying to guess at what might be true before you can
be sure that your guess is correct.  The way that people do this is by some kind of intuition built up with experience.  As a general rule, it is probably best to postpone trying to do this until you have had time to build up the necessary intuition and experience; typically that time would be some point during the course of your doctoral studies.
Prior to trying to prove new theorems, the best thing to do is to practice proving theorems which you already know are true.  One source of these is
homework problems assigned in the courses you are studying, but it sounds from your question as if you might be having trouble with those.
A good way to improve your theorem proving skills, then, is to do the following: 
go back to a (theoretical) course you studied some time ago, and whose results you feel comfortable with.  For a lot of people this would be a first course in 
group theory, or maybe a course in elementary number theory. Then try to prove the major theorems from the course without looking at your notes or textbook.  
The point of this is that you are hopefully fairly familiar with the statements
of the results, having used them a lot of times since then, and are probably reasonably familiar with the techniques of the course too.  But on the other hand, you probably don't remember all the proofs exactly.  So it is a good place to practice: your past experience with the course, and the advantage of having seen the results proved carefully before, should help serve as an intuition which can guide you in trying to reprove the results yourself.
If you can't work out how to prove a result after some time, you can look back in your notes or in the text.  But try not to look at the whole argument.  Just look to find the point in the argument where the author deals with the point on which you are stuck.  Once you have seen what general technique they use to get past this sticking-point, stop reading!  See if you can use that technique yourself to finish the proof.  In this way, you will begin to learn the different techniques and how they are used in arguments. 
This is the process I used (and continue to use) myself as practice for proving
theorems, and I highly recommend it.  The more theorems you prove yourself, the better you will get at it!  Once you have gone back over a course in this way, you will also understand the results and techniques of that course much better than you did before.
A: A lot of mathematics is about abstraction, but abstract principles are hard. It may help to work with a more concrete object. For example, if are working with rings, you may want to play with various rings defined on the integers.
I had a graduate level course in algebra which went very slowly. In most of the year, we covered about 10 or 12 pages in book. No one was doing well. We really didn't know what it was all about. Then one day the professor (who may have been a great theoretical mathematician but was not a good teacher) told us that the motivating example was based on polynomials. Well, gee, you could have told us that a long time ago. The professor was happy with the abstraction, but the class needed an example.
A: Simply put: if you get the picture, you can do the math. A good strategy is to break up one big problem you can't solve (yet) into smaller ones you can. In other words: simplify complicated things. An almost archetypical example of this is of course the cosine law that you can proof by breaking up the given bigger triangle into two smaller ones which each have a 90 degree angle.
