Proving $((p\Rightarrow q)\Rightarrow p)\Rightarrow p$ by using two opposite assumptions. I found this post and it raises a question:
Use Fitch system to proof ((p ⇒ q) ⇒ p) ⇒ p without any premise. ONLY FOR FITCH SYSTEM.
In the answer, the line 2 and 3 make two opposite assumptions.
I have to say this seems kind of unnatural to me (to assume something and the contrary at the same time).
When reaching line 4 we can pretend $p$ based on line 3, but we can just as well pretend $\neg p$ based on line 2.
This is actually use later on line 8.
So what is the assumption? $p$ or $\neg p$
Can someone explain what is going on here?
At this point it seems a bit weird to me.
The rest of the answer is rather clear.
Thank you for any light.
 A: The Fitch system is a proof system that allows you to have subcontexts that start with assumptions.
Every time you indent, you start with an assumption, and any assumption is valid in that position. Then, you can deduce things in that subcontext. A valid deduction uses the logical rules or reiterates statements outside the context.
For example, here is a proof of $P \to (Q \to P)$:
1. Assume P
 2. Assume Q
  3. Reiterate P
 4. Conclude Q → P
5. Conclude P → (Q → P)

The same proof could be given for $Q = \neg P$:
1. Assume P
 2. Assume ¬P
  3. Reiterate P
 4. Conclude ¬P → P
5. Conclude P → (¬P → P)

Although we assumed contradictory things, our proof is still valid.
A: Can I take up the general worry, rather than the specific point about this particular Fitch proof?
You are right that standard natural deduction systems for classical logic allow you to have premisses or assumptions $P$ and $\neg P$ active at the same time. (As in the proof that is bugging you.)
For example, take the uncontentious Fitch proof from $\neg P$ to $\neg(P \land \neg Q)$, and the uncontentious proof from $\neg(P \land \neg Q)$ and $P$ to $Q$. We are allowed to paste them together to get an "explosive" proof from $\neg P$ and $P$ to $Q$.  
You might well say that this is actually not very natural. For when we paste those proofs together we get to the point where we have $P$ and $\neg P$ in play together -- shouldn't we then say "Hold on! That's absurd! We need to stop and backtrack!!!" rather than continue? (Compare what we do with tableaux proofs -- when on a branch we hit a contradiction, we always close it off!)
The usual riposte is to say that "arguing past a contradiction" like this doesn't lead to invalid inferences, and in particular explosion is a correct inference, given the classical semantical account of entailment. (Suppose we say $A, B$ entails $C$ if there is no valuation which makes $A, B$ true and $C$ false. Then if there is no valuation which makes $A, B$ true, because they contradict each other, then $A, B$ entails any $C$.)
But some logicians put more weight on considerations of relevance in proof (and think that our semantics should fit our views about correct proofs rather than vice versa). They would say that the inference from  $P$ and $\neg P$ to $Q$ commits a fallacy of irrelevance. There are various ways of developing this thought. But, in the present context you might be interested to know about Neil Tennant's Core Logic which -- precisely -- puts heavy constraints on when it is acceptable to "argue past a contradiction", and gives a system of logic [strictly two systems, one classical in flavour, one constructivist] which lacks explosion, but is arguably as strong as we need in ordinary mathematical reasoning. So we certainly can develop systems of deduction which deprecate arguing past a contradiction.
However, most logicians prefer to keep things simple, bite the bullet of occasional irrelevance, allow ourselves to argue from any combination of premisses/assumptions even if explicitly contradictory, and stick to standard natural deduction systems! 
A: Since I was the one that posted that proof ...
It's really all a matter of doing what needs to be done in order for the inference rules to work. And yes, sometimes, as in this proof, you end up assuming $p$ on one line, and assuming $\neg p $ on another line.
Specifically, I assumed $\neg p$ on line $2$ since I wanted to prove $\neg p \rightarrow p$ (which I obtained on line $14$), and to prove a conditional, you start a subproof assuming the antecedent. But within that subproof, I wanted to prove $p \rightarrow q$ (which I obtained on line $12$), and so for the very same reason of the rule for proving conditionals being defined the way that it is, I started a new subproof assuming $p$.
I also want to point out that a such, the main reason I assumed $p$ and $\neg p$ was to prove the conditionals. That is, I wasn't thinking: "let me assume $p$ so that I can combine it with some other statement and get interesting results", but rather I was thinking: "I need to show that if $p$ then bla bla bla, and to show that let me assume $p$ and see if I can get to bla bla bla".  This kind of 'goal-oriented' thinking is one of the traits of organized thinking you need to master in order to get good at these formal proofs ... and that is obviously a trait that will serve you well in other contexts of reasoning as well (sometimes people ask what the point is of doing formal logic proofs, and my answer is that it does train you for this important organized thinking trait quite well).
