- Mark Dominus (https://blog.plover.com/math/PM.html)
https://en.wikipedia.org/wiki/Introduction_to_Mathematical_P...
and for ease of reading see the various PDF versions at:
I do teach PM when I teach theory of computation, but largely to tell the story of how we discovered the limits to computation.
Perhaps it's this one:
On Formally Undecidable Propositions of Principia Mathematica and Related Systems
https://en.wikipedia.org/wiki/On_Formally_Undecidable_Propos... - PDF: https://monoskop.org/images/9/93/Kurt_G%C3%B6del_On_Formally...
More seriously, there is indeed a huge logical error at the heart of the whole enterprise but it was not discovered until much later by Kurt Gödel.
Like the article says, what they did was ahead-of-its-time, and a monumental influence on all subsequent work on formal systems, including Gödel's work, regardless of whether Russell and Whitehead achieved their initial aims.
[0] https://en.wikipedia.org/wiki/Axiom_of_reducibility [1] https://www.gutenberg.org/files/78255/78255-h/78255-h.htm#Pa...
It's also pretty typically a part of History Of Mathematics and Philosophy of Mathematics courses.
To illustrate, suppose you have a non-associative operator $. Rather than write a$(b$c), you can write a$.b$c - the . makes the $ before it be lower precedence on the right side. More dots make things be even lower precedence.
So, for example,
a$b .$: x$y .$. p$q
means (a$b) $ ((x$y) $ (p$q))
At least, that's my recollection. It's been over fifty years since I read (significant parts of) it...i like to think of Frege and the Begriffschrift like this
Boole: logic + algebra = algebraic logic
Frege: logic + functions = predicate logic
ergo, if Boole is rightly deified then so should Frege regardless of minor infelicities (which prompted type theory anyhow) -- again, apologies if this is totally misleading
The Little Schemer/Typer could be used as a preparatory text to gear one up for HoTT.
It also has the advantage of being a bit more applicable to functional programming languages, maybe even more so than Mac Lane’s Categories for the Working Mathematician (which I sometimes see suggested to mathematically-inclined Haskell novices).
But I find univalence axiom intriguing. I am interested in different approach to types, using triage calculus, which is more "materialist" than "structuralist" - type is given by the structure of the (quoted) term in normal form (unlike lambda calculus, triage calculus makes quoting easy). And I feel like univalence is related to quoting, something like if the two quoted terms are equal under "standard self-interpreter", then they are equal.
FWIW, I am very against this recommendation. That book is needlessly opaque. I don’t know a good recommendation for category theory, but that isn’t it.
https://principia.lib.uiowa.edu/about.html
"The goal of this project is to make clear structural connections between different parts of Principia and to make analyzable data about the theorems, definitions, and primitive postulates in its text. We do this by providing three digital tools ..."
For example here is their take on the celebrated proof in PM that 1 + 1 = 2
Magnificent Principia (2013), by Colin Pask
https://devontrevarrowflaherty.com/2014/08/26/book-review-pr...
Quoting from Wikipedia:
https://en.wikipedia.org/wiki/Logic_Theorist
Logic Theorist is a computer program completed in 1956 by Allen Newell, Herbert A. Simon, and Cliff Shaw.[1] It was the first program deliberately engineered to perform automated reasoning, and has been described as "the first artificial intelligence program".[1][a] Logic Theorist proved 38 of the first 52 theorems in chapter two of Whitehead and Bertrand Russell's Principia Mathematica, and found a new and shorter proof for Theorem 2.85.[3]
This really must be a very math-starved community of people who wanted to learn math but never quite could.
1. If you can already program, the worst thing you can do is think of mathematics as learning a programming language. It is not, and you will waste your time being frustrated with things like syntax and notation. You get “used to” mathematics by doing it, and it’s something on its own. Just go with it. It’s ok to be confused.
2. Do the exercises, and stop asking for “solution manuals”, the point is to get you thinking and the struggle is most important part, not whether you got it “right”. Again, I think this is a programmer centric way of looking at things: “how do I know it’s right if I can’t compile it”.
Maybe that’s why programmers like the foundations of mathematics. Like if somehow they could just go to the bottom of things, the assembler/machine code of sorts, the whole enterprise would make sense. Counterintuitively, the really great mathematicians of yore, did mathematics before it was anywhere close to formalized.
While axioms were known in ancient times, only Hilbert started the whole "prove Mathematics" thing.
How else would you prove mathematics and why would that be childish to use math? The limitations discovered were quite surprising back then.