Struggling with natural deduction I've just started a course on logic, and I'm struggling with some of the exercises.
I think I've understood the basic concept of applying rules prove the validity of some expression, but when the proposition becomes too complex I have a hard time getting started. For example:
$$((p\implies q)\implies q)\implies((q\implies p)\implies p)$$
I'm not even sure where to begin proving this. What's the general strategy for taking apart larger propositions?
 A: 
I'm not even sure where to begin proving this. What's the general strategy for taking apart larger propositions?

Natural Deduction rules of inference are rules to introduce or "eliminate" connectives into the inferred statement.  So begin by identifying the connectives in the target and the premises.  
Well, here you don't have any premises, so the first task will be to introduce those conditional connectives.  So start unpacking the nested conditional statement into Conditional Proofs: by assuming antecedents aiming to derive consequents.
$$\def\fitch#1#2{~~\begin{array}{|l}#1\\\hline#2\end{array}}
\fitch{}{\fitch{(p\to q)\to q}{\fitch{q\to p}{~\vdots\\ p}\\(q\to p)\to p}\\((p\to q)\to q)\to ((q\to p)\to p)
}$$
Next you want to derive $p$ from $q\to p$ and $(p\to q)\to q$. Well, you could derive $p$ if you had $q$, and you could derive $q$ if you had $p\to q$, and you could derive $p\to q$ if assuming $p$ derived $q$, which we cannot do, so a direct proof isn't the way to go.  An Indirect Proof is indicated.
$$\fitch{}{\fitch{(p\to q)\to q}{\fitch{q\to p}{\fitch{\neg p}{~~\vdots\\\bot}\\\neg\neg p\\ p}\\(q\to p)\to p}\\((p\to q)\to q)\to ((q\to p)\to p)
}$$
For the rest, work backwards:  You aim to derive a contradiction of one of the three assumptions.  The easiest to do would seem to be $p$; which was detailed above but is actually now feasible.  Try it.
A: Hint: The first 3 lines of my proof (in DC Proof 2.0 format):

And the last 3 lines:

