# Typesetting famous 54.43 proof (1+1=2) in Principia Mathematica

Here's my best attempt at typesetting the proof that 1+1=2 in Principia Mathematica:

\documentclass[10pt]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\pagestyle{empty} \begin{document}
\noindent $\mathbf{*54\cdot43.} \vdash:.\alpha,\beta\in1.\supset:\alpha\cap\beta=\Lambda.\equiv.\alpha\cup\beta\in2$\\
\indent\emph{Dem.}
\begin{flalign}\nonumber
\vdash .*54\cdot26.\supset\vdash:.\alpha=\iota'x.\beta=\iota'y.\supset:\alpha\cup\beta\in2.&\equiv.x\neq y.\\\nonumber
[*51\cdot 231]\hspace{4.7cm}\hspace{1cm} & \equiv.t'x\cap\iota'y=\Lambda.\\
[*13\cdot 12]\hspace{4.88cm}\hspace{1cm} & \equiv.\alpha\cap\beta=\Lambda \\\nonumber
\vdash.(1).*11\cdot11\cdot35.\supset\hspace{2.88cm}\hspace{1cm}\\
\vdash:.(\exists x,y).\alpha=\iota'x.\beta=\iota'y.\supset:\alpha\cup\beta\in2.&\equiv.\alpha\cap\beta=\Lambda\\\nonumber
\vdash.(2).*11\cdot54.*52\cdot1.\supset\vdash.Prop\hspace{1.09cm}\hspace{1cm}\end{flalign}
\indent From this proposition it will follow, when arithmetical addition has been defined, that $1 + 1 = 2$.
\end{document}


Here's the result:

And here's the original:

Things I don't like:

1. Lot's of manual hspace; How do I force left alignment of the equations?
2. I don't think the \supset symbol is the most appropriate one for the implication, and it is slightly off the horizontal alignment.
3. The symbol following the \iota (') is not quite the same as the original one.
4. I'm also not sure that the usage \cdot is the most appropriate.

Looking for improvements from the TeX wizards out there ;-)

-
You're missing one term on the 3rd line -- the one starting with \vdash.*54 –  yo' Feb 3 '14 at 22:27
@tohecz: another typo. fixed. thanks :-) –  Hugo S Ferreira Feb 3 '14 at 23:24

The following example tries to mimic many of the symbols and spacings:

• Macro \leftalign is defined that uses the width of the column, calculated from the previous measurement of environment align. The macro can then put it argument to the left.
• The logic for the punctuation symbols are explained in "The Notation in Principia Mathematica".
• The form of the punctuation dots is a square not a circle.
• The width of the assertion symbol ⊦ (U+22A6) is the half of its height, therefore it is smaller than \vdash.
• The star before the number is rather an eight spoked asterisk ✳ (U+2733) than an asterisk. Also it is an ordinary math symbol.
• The dot between the numbers is a little higher than \cdot.
• The ≠ does not have a slanted line.
• The existence symbol is a rotated uppercase E.
\documentclass[10pt,fleqn]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{pifont}
\pagestyle{empty}
\setlength{\mathindent}{2\parindent}
\thickmuskip=\medmuskip

\makeatletter
\newcommand*{\leftalign}[1]{%
\ifmeasuring@
#1%
\else
\begingroup
\hbox to \expandafter\maxcol@width\column@{$#1\m@th$\hfill}%
\endgroup
\fi
}

\DeclareRobustCommand*{\pmstar}{%
\text{%
\resizebox{!}{.75\height}{\ding{107}}%
}%
}
\newcommand*{\pmcdot}{%
\mathpalette{\pm@cdot}{}%
}
\newcommand*{\pm@cdot}[2]{%
\sbox0{$\m@th#1\cdot$}%
\sbox2{$#11$}%
\raise.6\dimexpr\ht2-\ht0\relax\copy0 %
}
\newcommand*{\pmand}{\mathbin{\pmdot{.}}}
\newcommand*{\pmgrave}{\text{\bfseries}}
\newcommand*{\pmimplies}{\boldsymbol{\supset}}
\newcommand*{\pmcup}{%
\mathbin{%
\mathchoice
{\scriptstyle\boldsymbol{\cup}}%
{\scriptstyle\boldsymbol{\cup}}%
{\scriptscriptstyle\boldsymbol{\cup}}%
{\boldsymbol{\cup}}%
}%
}
\newcommand*{\pmcap}{%
\mathbin{%
\mathchoice
{\scriptstyle\boldsymbol{\cap}}%
{\scriptstyle\boldsymbol{\cap}}%
{\scriptscriptstyle\boldsymbol{\cap}}%
{\boldsymbol{\cap}}%
}%
}

\newcommand*{\pmvdash}{\mathord{\@pmvdash\,}\mathopen{}}
\newcommand*{\@pmvdash}{%
\mathpalette{\pm@vdash}{}%
}
\newcommand*{\pm@vdash}[2]{%
\sbox0{$\m@th#11\Lambda\mid$}%
\sbox0{\vrule height\ht0 width.5pt}%
\copy0
\sbox2{\vbox to 0pt{\vss\hbox to.5\ht0{}\hrule height.5pt\vss}}%
\raise.5\ht0\copy2 %
}

\newcommand*{\pmneq}{%
\mathrel{\mathpalette{\pm@neq}{}}%
}
\newcommand*{\pm@neq}[2]{%
\sbox0{$\m@th#1=$}%
\hbox to \wd0{%
\hss$\m@th#1\mid$\hss
}%
\kern-\wd0 %
\copy0 %
}

\newcommand*{\pmexists}{%
\mathord{\mathpalette{\pm@exists}{}}%
}
\newcommand*{\pm@exists}[2]{%
\sbox0{$#1y$}%
\raisebox{\dimexpr-\dp0+\depth\relax}{%
\rotatebox{180}{$\m@th#1\mathrm{E}$}%
}%
}

\catcode\:=\active
\catcode\.=\active
\newcommand*{\pmdot}[1]{%
\mathinner{%
\mathcode\.="8000 %
\mathcode\:="8000 %
\let.=\@pmdot
\let:=\@pmcolon
#1%
}%
}
\@makeother\:
\@makeother\.
\newcommand*{\@pmcolon}{%
\mathpalette\pm@colon{}%
}
\newcommand*{\@pmdot}{%
\mathpalette\pm@dot{}%
}
\newcommand*{\pm@dot}[2]{%
\sbox0{$\m@th#1\mathchar\.$}%
\hbox to 1.15\wd0{\hfill\vrule width1.35\ht0 height1.35\ht0 \hfill}%
}
\newcommand*{\pm@colon}[2]{%
\sbox0{\pm@dot{#1}{}}%
\sbox2{$\m@th#1\pm@vdash{#1}{}$}%
\rlap{%
\raisebox{.5\dimexpr\ht2-\ht0\relax}{\copy0}%
}%
\copy0 %
}
\makeatother

\begin{document}
\setlength{\abovedisplayskip}{0pt}
\setlength{\belowdisplayskip}{0pt}
\paragraph{\boldmath$\pmstar54\pmcdot43$.}
$\pmvdash \pmdot{:.}\alpha,\beta\in1\pmdot{.} \pmimplies \pmdot{:}\alpha\pmcap\beta=\Lambda\pmdot{.} \equiv \pmdot{.}\alpha\pmcup\beta\in2$\\
\indent\emph{Dem.}
\begin{align}
\nonumber
\pmvdash
\pmdot{.}\pmstar54\pmcdot26\pmdot{.}
\pmimplies
\pmvdash
\pmdot{:.}\alpha=\iota\pmgrave y\pmand
\beta=\iota\pmgrave y\pmdot{.}
\pmimplies
\pmdot{:}\alpha\pmcup\beta\in2\pmdot{.}
&
\equiv
\pmdot{.}x\pmneq y\pmdot{.}
\\
\nonumber
\leftalign{[\pmstar51\pmcdot231]}
&
\equiv
\pmdot{.}t\pmgrave x\pmcap\iota\pmgrave y=\Lambda\pmdot{.}
\\
\leftalign{[\pmstar13{\pmcdot}12]}
&
\equiv
\pmdot{.}\alpha\pmcap\beta=\Lambda
\\
\nonumber
\leftalign{%
\pmvdash
\pmdot{.}(1)\pmand\pmstar11\pmcdot11\pmcdot35\pmdot{.}
\pmimplies
}
\\
\pmvdash
\pmdot{:.}(\pmexists x,y)\pmand\alpha=\iota\pmgrave x\pmand\beta
=\iota\pmgrave y\pmdot{.}\pmimplies\pmdot{:}\alpha\pmcup\beta\in2\pmdot{.}
& \equiv\pmdot{.}\alpha\pmcap\beta=\Lambda
\\
\nonumber
\leftalign{%
\pmvdash\pmdot{.}(2)\pmand
\pmstar11\pmcdot54\pmand
\pmstar52\pmcdot1\pmdot{.}
\pmimplies\pmvdash\pmdot{.}\text{Prop}
}
\end{align}
\indent From this proposition it will follow, when arithmetical addition
has been defined, that $1 + 1 = 2$.
\end{document}


-

Perhaps this is nearer to the original, but the spacing used in Principia Mathematica is nowhere similar to what's used in real mathematics.

\documentclass[10pt]{article}
\usepackage{textcomp}
\usepackage{amssymb}
\usepackage{amsmath}

\DeclareMathSymbol{}{\mathord}{operators}{}

\newcommand{\prop}[3]{%
#1\textbf{#2}\textperiodcentered\textbf{#3}. \ignorespaces
}
\newenvironment{dem}
{\par\emph{Dem.}\abovedisplayskip=0pt \belowdisplayskip=0pt }

\pagestyle{empty}

\begin{document}
\prop{*}{54}{43}
${\vdash}{:}.\alpha,\beta\in1.\supset:\alpha\cap\beta=\Lambda.\equiv.\alpha\cup\beta\in2$

\begin{dem}
\begin{alignat}{2}
\nonumber
&{\vdash} .{*}54{\cdot}26.\supset{\vdash}:.\alpha=\iotay.\supset:\alpha\cup\beta\in2.
&& \equiv.x\neq y.\\
\nonumber
&[{*}51{\cdot}231] && \equiv.tx\cap\iotay=\Lambda.\\
&[{*}13{\cdot}12]   && \equiv.\alpha\cap\beta=\Lambda \\
\nonumber
&{\vdash}.(1).{*}11{\cdot}11{\cdot}35.\supset{}\\
&{\vdash}:.(\exists x,y).\alpha=\iotax.\beta=\iotay.\supset:\alpha\cup\beta\in2.
&&\equiv.\alpha\cap\beta=\Lambda\\
\nonumber
&{\vdash}.(2).{*}11{\cdot}54.{*}51{\cdot}1.\supset{\vdash}.\textit{Prop}
\end{alignat}
\end{dem}

From this proposition it will follow, when arithmetical addition has been defined,
that $1 + 1 = 2$.

\end{document}


-