$%PREAMBLE
\newcommand{\fitch}[1]{\begin{array}{rlr}#1\end{array}}
\newcommand{\fcol}[1]{\begin{array}{r}#1\end{array}} %FirstColumn
\newcommand{\scol}[1]{\begin{array}{l}#1\end{array}} %SecondColumn
\newcommand{\tcol}[1]{\begin{array}{l}#1\end{array}} %ThirdColumn
\newcommand{\subcol}[1]{\begin{array}{|l}#1\end{array}} %SubProofColumn
\newcommand{\startsub}{\\[-0.29em]} %adjusts line spacing slightly
\newcommand{\endsub}{\startsub} %adjusts line spacing slightly
\newcommand{\fendl}{\\[0.044em]} %adjusts line spacing slightly
$
Edit: Ever since I've postes this answer, more elaborate (and refined) answers came along using preambles. I've particularly likes Calvin's approach, so I've further the spacing and made the argument look more fitch-like. These are the commands:
$%PREAMBLE
\newcommand{\fitch}[1]{\begin{array}{rlr}#1\end{array}}
\newcommand{\fcol}[1]{\begin{array}{r}#1\end{array}} %FirstColumn
\newcommand{\scol}[1]{\begin{array}{l}#1\end{array}} %SecondColumn
\newcommand{\tcol}[1]{\begin{array}{l}#1\end{array}} %ThirdColumn
\newcommand{\subcol}[1]{\begin{array}{|l}#1\end{array}} %SubProofColumn
\newcommand{\startsub}{\\[-0.29em]} %adjusts line spacing slightly
\newcommand{\endsub}{\startsub} %adjusts line spacing slightly
\newcommand{\fendl}{\\[0.044em]} %adjusts line spacing slightly
$
And this is an example:
$$
\fitch{
\fcol{\fendl 1:\fendl 2:\fendl 3:\fendl 4:\fendl 5:\fendl 6:\fendl 7:\fendl 8:\fendl 9:\fendl 10:\fendl 11:\fendl 12:\fendl 13:\fendl 14:\fendl 15:\fendl 16:\fendl 17:\fendl 18:\fendl 19:\fendl 20:\fendl 21:\fendl 22:
}
& \scol {
\startsub\subcol{
f \text{ is a relation } \\
\langle x,y \rangle \in f \\
\hline
\forall v[v \in f \rightarrow \exists a \exists b[v = \langle a,b \rangle]] \\
\langle x,y \rangle \in f \rightarrow \exists a \exists b[\langle x,y \rangle = \langle a,b \rangle] \\
\exists a \exists b[\langle x,y \rangle = \langle a,b \rangle] \\
\langle x,y \rangle = \langle a_\alpha,b_\alpha \rangle \\
\langle a_\alpha,b_\alpha \rangle \in f \\
x=a_\alpha \land y=b_\alpha \\
\langle y,x \rangle = \langle y,x \rangle \\
\langle y,x \rangle = \langle b_\alpha,a_\alpha \rangle \\
\langle y,x \rangle = \langle b_\alpha,a_\alpha \rangle \land \langle a_\alpha,b_\alpha \rangle \in f \\
\exists b \exists a [\langle y,x \rangle = \langle b,a \rangle \land \langle a,b \rangle \in f] \\
\langle y,x \rangle \in f^c
} \endsub
f \text{ is a relation } \land \langle x,y \rangle \in f \rightarrow \langle y,x \rangle \in f^c
\startsub \subcol{
\langle y,x \rangle \in f^c \\
\hline
f \text{ is a relation } \\
\exists a \exists b [\langle y,x \rangle = \langle b,a \rangle \land \langle a,b \rangle \in f] \\
\langle y,x \rangle = \langle b_\alpha,a_\alpha \rangle \land \langle a_\alpha,b_\alpha \rangle \in f \\
y = b_\alpha \land x = a_\alpha \\
\langle x,y \rangle \in f
} \endsub
\langle y,x \rangle \in f^c \rightarrow f \text{ is a relation } \land \langle x,y \rangle \in f \\
f \text{ is a relation } \land \langle x,y \rangle \in f \leftrightarrow \langle y,x \rangle \in f^c \\
}
& \tcol{ \fendl
f\ \text{P} \fendl
x,y\ \text{P} \fendl
1, [1]\ \text{T} \fendl
3\ \text{UG}[v/\langle x,y \rangle] \fendl
2,4\ \text{T} \fendl
5\ \text{ES} \fendl
2,6\ \text{S} \fendl
6\ \text{T} \fendl
\text{T} \fendl
8,9\ \text{S} \fendl
7,10\ \text{T} \fendl
11\ \text{EG} \fendl
1,12,[2]\ \text{T} \fendl
1,2,13\ \text{CP} \fendl
x,y\ \text{P} \fendl
15,[2]\ \text{T} \fendl
15,[2]\ \text{T} \fendl
17\ \text{ES} \fendl
18\ \text{T} \fendl
18,19\ \text{S} \fendl
15,16,20\ \text{CP} \fendl
14,21\ \text{T} \fendl
}
}
$$
Built with the following code:
$$
\fitch{
\fcol{\fendl 1:\fendl 2:\fendl 3:\fendl 4:\fendl 5:\fendl 6:\fendl 7:\fendl 8:\fendl 9:\fendl 10:\fendl 11:\fendl 12:\fendl 13:\fendl 14:\fendl 15:\fendl 16:\fendl 17:\fendl 18:\fendl 19:\fendl 20:\fendl 21:\fendl 22:
}
& \scol {
\startsub\subcol{
f \text{ is a relation } \\
\langle x,y \rangle \in f \\
\hline
\forall v[v \in f \rightarrow \exists a \exists b[v = \langle a,b \rangle]] \\
\langle x,y \rangle \in f \rightarrow \exists a \exists b[\langle x,y \rangle = \langle a,b \rangle] \\
\exists a \exists b[\langle x,y \rangle = \langle a,b \rangle] \\
\langle x,y \rangle = \langle a_\alpha,b_\alpha \rangle \\
\langle a_\alpha,b_\alpha \rangle \in f \\
x=a_\alpha \land y=b_\alpha \\
\langle y,x \rangle = \langle y,x \rangle \\
\langle y,x \rangle = \langle b_\alpha,a_\alpha \rangle \\
\langle y,x \rangle = \langle b_\alpha,a_\alpha \rangle \land \langle a_\alpha,b_\alpha \rangle \in f \\
\exists b \exists a [\langle y,x \rangle = \langle b,a \rangle \land \langle a,b \rangle \in f] \\
\langle y,x \rangle \in f^c
} \endsub
f \text{ is a relation } \land \langle x,y \rangle \in f \rightarrow \langle y,x \rangle \in f^c
\startsub \subcol{
\langle y,x \rangle \in f^c \\
\hline
f \text{ is a relation } \\
\exists a \exists b [\langle y,x \rangle = \langle b,a \rangle \land \langle a,b \rangle \in f] \\
\langle y,x \rangle = \langle b_\alpha,a_\alpha \rangle \land \langle a_\alpha,b_\alpha \rangle \in f \\
y = b_\alpha \land x = a_\alpha \\
\langle x,y \rangle \in f
} \endsub
\langle y,x \rangle \in f^c \rightarrow f \text{ is a relation } \land \langle x,y \rangle \in f \\
f \text{ is a relation } \land \langle x,y \rangle \in f \leftrightarrow \langle y,x \rangle \in f^c \\
}
& \tcol{ \fendl
f\ \text{P} \fendl
x,y\ \text{P} \fendl
1, [1]\ \text{T} \fendl
3\ \text{UG}[v/\langle x,y \rangle] \fendl
2,4\ \text{T} \fendl
5\ \text{ES} \fendl
2,6\ \text{S} \fendl
6\ \text{T} \fendl
\text{T} \fendl
8,9\ \text{S} \fendl
7,10\ \text{T} \fendl
11\ \text{EG} \fendl
1,12,[2]\ \text{T} \fendl
1,2,13\ \text{CP} \fendl
x,y\ \text{P} \fendl
15,[2]\ \text{T} \fendl
15,[2]\ \text{T} \fendl
17\ \text{ES} \fendl
18\ \text{T} \fendl
18,19\ \text{S} \fendl
15,16,20\ \text{CP} \fendl
14,21\ \text{T} \fendl
}
}
$$
Further nesting is also possible:
$$
\fitch{
\fcol{1:\fendl 2:\fendl 3:\fendl 4:\fendl 5:\fendl 6:\fendl 7:\fendl 8:\fendl }
\scol{
\forall y \lnot P(y)
\startsub\subcol{
\exists P(x)
\startsub\hline\subcol{
P(u) \\
\hline
\forall y \lnot P(y) \\
\lnot P(u) \\
\perp
} \endsub
\perp
} \endsub
\lnot \exists x P(x)
}
\tcol{
P \fendl
P \fendl
P \fendl
R,1 \fendl
\forall E,4 \fendl
\lnot E,4,5 \fendl
\exists E, 2 ,3-6 \fendl
\lnot I,2-7 \fendl
}
}
\quad \text{or} \quad
\fitch{
\fcol{1:\fendl 2:\fendl 3:\fendl 4:\fendl 5:\fendl 6:\fendl 7:\fendl 8:\fendl }
\subcol{
\forall y \lnot P(y)
\startsub\hline\subcol{
\exists P(x)
\startsub\hline\subcol{
P(u) \\
\hline
\forall y \lnot P(y) \\
\lnot P(u) \\
\perp
} \endsub
\perp
}\endsub
\lnot \exists x P(x)
}
\tcol{
P \fendl
P \fendl
P \fendl
R,1 \fendl
\forall E,4 \fendl
\lnot E,4,5 \fendl
\exists E, 2 ,3-6 \fendl
\lnot I,2-7 \fendl
}
}
$$
Like so:
$$
\fitch{
\fcol{1:\fendl 2:\fendl 3:\fendl 4:\fendl 5:\fendl 6:\fendl 7:\fendl 8:\fendl }
\scol{
\forall y \lnot P(y)
\startsub\subcol{
\exists P(x)
\startsub\hline\subcol{
P(u) \\
\hline
\forall y \lnot P(y) \\
\lnot P(u) \\
\perp
} \endsub
\perp
} \endsub
\lnot \exists x P(x)
}
\tcol{
P \fendl
P \fendl
P \fendl
R,1 \fendl
\forall E,4 \fendl
\lnot E,4,5 \fendl
\exists E, 2 ,3-6 \fendl
\lnot I,2-7 \fendl
}
}
$$
$$
\fitch{
\fcol{1:\fendl 2:\fendl 3:\fendl 4:\fendl 5:\fendl 6:\fendl 7:\fendl 8:\fendl }
\subcol{
\forall y \lnot P(y)
\startsub\hline\subcol{
\exists P(x)
\startsub\hline\subcol{
P(u) \\
\hline
\forall y \lnot P(y) \\
\lnot P(u) \\
\perp
} \endsub
\perp
}\endsub
\lnot \exists x P(x)
}
\tcol{
P \fendl
P \fendl
P \fendl
R,1 \fendl
\forall E,4 \fendl
\lnot E,4,5 \fendl
\exists E, 2 ,3-6 \fendl
\lnot I,2-7 \fendl
}
}
$$
Old Answer
Yes it is. You can do it with MathJax's {array}
.
If you write \begin{array}{} aaaa \\ bb \\ cccccc \\ \end{array}
, you'll get:
$$\begin{array}{} aaaa \\ bb \\ cccccc \\ \end{array}$$
Notice that it's left justified. If you however add an 'r' inside the empty brackets, as in \begin{array}{r} aaaa \\ bb \\ cccccc \\ \end{array}
, you'll get:
$$\begin{array}{r} aaaa \\ bb \\ cccccc \\ \end{array}$$
Which is right justified. However, you can add more than one. If you use more than one tag, you can separate the alignments on each line with an &
. If you type \begin{array}{lr} aaaa & dddd \\ bb & ee \\ cccccc & ffffff \\ \end{array}
, you'll get:
$$ \begin{array}{lr} aaaa & dddd \\ bb & ee \\ cccccc & ffffff \\ \end{array} $$
And of course, you can add as many as you want. \begin{array}{lrlr} aaaa & dddd & 1111 & >>>> \\ bb & ee & 22 & << \\ cccccc & ffffff & 333333 & ====== \\ \end{array}
gives:
$$ \begin{array}{lrlr} aaaa & dddd & 1111 & >>>> \\ bb & ee & 22 & << \\ cccccc & ffffff & 333333 & ====== \\ \end{array} $$
So, in the case of your example, you can use {array}
to get this result:
$$\begin{array}{llr} 1: & \forall x [P(x)] \rightarrow Q & \text{Premise} \\ 2: & \quad | \lnot \exists x[P(x) \rightarrow Q] & \text{Supposition} \\ 3: & \quad |\forall x[ \lnot (P(x) \rightarrow Q)] & \text{From 2} \\ 4: & \quad |\forall x[ \lnot (\lnot P(x) \land Q)] \\ 5: & \quad |\forall x[P(x) \land \lnot Q)] \\ 6: & \quad |\forall x[P(x)] & \text{From 5} \\ 7: & \quad | \lnot Q & \text{From 5} \\ 8: & \quad |\lnot Q \rightarrow \lnot \forall x [P(x)] & \text{From 1} \\ 9: & \quad |\lnot \forall x[P(x)] & \text{From 7, 8} \\ 10: & \quad |\forall x[P(x)] & \text{Copy of 6} \\ 11: & \exists x[P(x) \rightarrow Q] & \text{Contradiction 9, 10} \end{array} $$