https://en.wikipedia.org/wiki/Introduction_to_Mathematical_P...
and for ease of reading see the various PDF versions at:
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).
This really must be a very math-starved community of people who wanted to learn math but never quite could.
It's also pretty typically a part of History Of Mathematics and Philosophy of Mathematics courses.
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.
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.
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.
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
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.
It covers everything from pure lambda calculus through dependent type theory up to homotopy type theory. In comparison to the HoTT book, the book "PROGRAM = PROOF" is oriented less towards mathematicians more towards programmers. It contains also a short introduction to OCaml and Agda.
The book can downloaded from the authors web page:
https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/teaching...
https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/publicat...
For a deep dive into both ends of that, see the history of publication of Knuth's TAoCP where the text was originally published traditionally by setting metal type on a composition machine (to the extent possible), then compositors would add the additional characters and spacing material necessary to compose the equations and so forth so as to lay out a galley (which would then be proofed/corrected) --- a successive edition was then typeset using an early imagesetter, which looked so ghastly that DEK considered giving up, but when informed that the imagesetter was controlled by a computer declared, "I am a computer scientist, I can fix that." and expected to knock out a typesetting system over his next sabbatical....
Roughly a decade later, TeX 1.0 was released.... the current version is 3.141592653 (with new versions adding another decimal place as the version tends towards \pi) --- while we're still waiting on the full publication of Vol. 4, it is widely considered that TeX was worth the delay.
No it wasn't.
And you did not read it.
EDIT: source: took logic as undergrad + wrote on the tractatus which required a lot of pre-reqs to understand. 0 chance a course at undergrad level ever assigns principia mathematica. I don't care if you went to yale or oxford or ecole normale ... 0 chance. Most charitable interepretation: some pages of it + was on a bibliography. not required reading.
if feel embarrassed, that is the consequence for lieing. There is such a thing as intellectual honesty.
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...
Which leads us to our next borderline impenetrable book, Gödel, Escher, Bach by Douglas Hofstadter.
OTOH, Russell found a logical error at the heart of Frege's work, and PM fixed it by introducing the theory of types.
Another instance of a "clever" joke that becomes annoying very fast.
That said, even if the OP was assigned the text at some point as an undergraduate, I remain a bit doubtful it was actually read.
Thanks for calling out these sort of posers and charlatans on HN. We should not tolerate these people if we are to discuss/argue/motivate interesting/hard subjects productively.
I automatically discount anybody on HN (until i have looked at their profile/comment history/any personal bio websites etc.) who claim they have read/studied a) Euclid's Elements b) Newton's Principia c) Maxwell's Treatise on Electricity and Magnetism d) Einstein's 1905 Annus Mirabilis papers. e) Principia Mathematica by Russell/WhiteHead f) Godel's Theorem g) Bourbaki's mathematics books etc. etc. They might have browsed it out of curiosity but that is not the same as reading/studying it.
Actual conceptual mathematics/science is intrinsically hard even ignoring the archaic language/notations.
As a good example; the Nobel-prize winning physicist S.Chandrasekhar wrote Newton's Principia for the Common Reader where he explains a subset of the principia (only dealing with gravitation) using modern notation and language. He himself found it quite hard and thus the "common reader" in the title is somebody who has had a good course in calculus and has the motivation to put forth the effort in understanding it.
(Of course, if you don't read German, you should get yourself a translation.)
See https://myweb.rz.uni-augsburg.de/~eckern/adp/history/einstei...
I don't think I'm smart enough to casually read and understand original works on General relativity, but the Annus Mirabilis work seems much simpler. The famous E=MC2 paper is only three pages.
See https://myweb.rz.uni-augsburg.de/~eckern/adp/history/einstei...
About Gödel: if you are interested in the theorems, and not necessarily their original presentation, you can get plenty of rigorous modern treatments. It's very common for mathematicians to work out simpler proofs and more appealing presentations of famous results over time.
See https://dn721807.ca.archive.org/0/items/uber-formal-unentsch... if you want to give one of Gödel's work a go. It's only 26 pages. Footnote 48a is especially interesting. Overall the prose is crisp, but the notation is rather archaic to modern eyes.
I agree with your general sentiment, and your heuristic in general.
The textbooks they use in that course are written in modern notation and are accessible to a knowledgeable reader; neither can be said of the Principia Mathematica. The archaic syntax is a serious issue.
Apparently, the history is that the school lost its accreditation and had to shut down during the Great Depression, so to attract investors and reopen, it adopted an extremely unique identity with no watering down of curriculum and commitment to western classics in an attempt to combat the rise of fascism.
Hofstadter wrote a followup book: I am a strange loop.
Why, yes, he works as a compiler engineer.
I gave that book to my mathematician grandma, and she found it so boring she couldn’t finish it - “All this stuff was known for decades”. True anecdote.
- “effort to refute bullshit is order of magnitude more than to refute it”.
It's as if a group of monks wanted to keep the quadrivium and trivium but their clock stopped at the 16th century. One of their faculty proudly said they study analysis by reading Descartes! Which I thought was a highbrow joke but nope, dead serious.
There's a reason that 'standing on the shoulders of giants' is a thing. Dive into the classics after you have gained the maturity from modern texts.
Take one of the easier problems from Rudin. Prove that a continuous function from the unit interval [0,1] to itself has a fixed point. I wonder how a student immersed in the 'classics' would even begin to tackle this.
Euclid isn’t surprising. School children used to learn plane geometry from Euclid until the 1950s or so. I learned geometry at school using a syllabus from Euclid and we learned the modern form of Euclid’s postulates etc but we didn’t study Euclid itself.
[1] Taylor series were developed in the modern form by James Gregory who was trying to reverse engineer how Newton had come up with his series expansions. I say rediscovered above because they were first written down by Madhava of Sangamagrama who gave Taylor series expansions for the trigonometric functions and natural logarithms/exponential function in the 14th century.
It is a popular science book which catches the vibe of mathematical logic in an excellent way. It is not a textbook, nor a piece of research. It's all vibes, but high-quality vibes. If you are in the right headspace it can be really inspiring!
If they do and enjoy it, good for them! But many parts haven't aged all that well.
However, I can still very warmly recommend 'The Pleasures of Counting' to this very day.
However, it is pretty dated these days.
https://www.amazon.com/Godels-Theorem-Simplified-Harry-Gensl...
Principia Mathematica by Whitehead and Russell was published back in 1910 -- and yet it reads like a modern text on programming languages. I have found Principia quite engaging and hard to put away. Principia discusses, with great insight, such modern topics as extensionality/intensionality, referential transparency, type. It contains perhaps the first mentioning of `domain', `alpha renaming' and `type' in the modern sense. Its `incomplete symbols' -- the ones that only make sense in a context -- anticipate continuations and control operators. It insightfully observes that the notions of free and bound variables, substitution, abstraction, and application all come from linguistics. I could not help but feel that Principia already contained lambda-calculus. It also seems that Russell and Whitehead anticipated intuitionism, for example, when insisting on separate notations for 'any' vs. `all' (although admitting the equivalence of these notions in their theory).
The whole Principia is very large: It is said that the book is famous for taking a thousand pages to prove that 1+1=2. As the preface stresses, the proofs are excruciatingly detailed so to remove the chance of an unstated premise being used in a proof. The goal of Principia was to put forward a set of very basic notions, and show that they and they alone are sufficient for the whole Mathematics. If Principia were to be published today, all the proofs would be relegated to a Supplement (or a theorem prover). What important are the basic notions and the set up -- most of which is explained in the Preface and Chapter 1.
These following are a few notes taken while reading Chapter 1 of Principia, with several comments very kindly given by Jacques Carette.
The current version is 1.3, August 2026
Principia Mathematica by Alfred North Whitehead and Bertrand Russell. Cambridge: University Press, 1910-
<http://name.umdl.umich.edu/AAT3201.0001.001>
The full scanned text, many thanks to The University of Michigan Historical Mathematics Collection
Linsky, Bernard. The Notation in Principia Mathematica
The Stanford Encyclopedia of Philosophy (Summer 2026 Edition), Edward N. Zalta & Uri Nodelman (eds.)
<https://plato.stanford.edu/archives/sum2026/entries/pm-notation/>
Page 8 of Principia has perhaps the first mention in mathematical literature of intensions and extensions, and what is now called `referential transparency': ``if p≡q we shall have f(p)≡f(q)''. Here f(p) is a proposition that includes another proposition p. In modern terms, we would call f a context and denote by C[], and say that if p≡q then C[p]≡C[q], which is the familiar statement of a referential transparent context. The page then shows an example of a non-referentially transparent context ``A believes p'': a proposition whose meaning varies when p is substituted with equivalent propositions. The example betrays the origin of this concept, from linguistics, specifically, from the work of Frege (who is mentioned in a footnote). The book states that ``mathematics is always concerned with extensions rather than intensions.'' (again borrowing Frege terms, but in English translation.)
On p12, the book states that definitions are merely typographic conveniences. On the other hand, definitions are of most importance, because they show the intent.
…the definitions are not part of our subject, but are, strictly speaking, mere typographical conveniences.… In spite of the fact that definitions are theoretically superfluous, it is nevertheless true that they often convey more important information than is contained in the propositions in which they are used. … The collection of definitions embodies our choice of subjects and our judgement as to what is most important. Secondly, … the definition contains an analysis of a common idea, and may therefore express a notable advance.
Page 15 introduces ``propositional functions'', what is now known as lambda-terms. See for yourself, from the running example on the page.
"
xis hurt" [called ambiguous] really makes no assertion at all, till we have settled whoxis. Yet owing to the individuality retained by the ambiguous variablex, it is an ambiguous example from the collection of propositions arrived at by giving all possible determinations toxin "xis hurt" which yield a proposition, true or false.
The authors then introduce the notation for that ``propositional function'': "\hat{x} is hurt". Although "x is hurt" and "y is hurt" occurring in the same context can be distinguished, ``"\hat{x} is hurt" and "\hat{y} is hurt" convey no distinction of meaning at all.'' The paragraph concludes: ``More generally, φx is an ambiguous value of the propositional function φ\hat{x}, and when a definite signification a is substituted for x, φa is an unambiguous value of φ\hat{x}.'' Here we have it: free variables, bound variables, substitution and alpha-equivalence.
The topic of variables comes up again, on p17, in the discussion of quantified formulas:
The symbol "
(x).φx" [in modern notation,∀x.φ(x)] denotes one definite proposition, and there is no distinction in meaning between "(x).φx" and "(y).φy" when they occur in the same context. … The symbol "(x).φx" has some analogy to the symbol ∫abφ(x) dxsince in neither case is the expression a function ofx. … Thexwhich occurs in "(x).φx" or "(∃x).φx" is called (following Peano) an "apparent variable".
The page then goes on to introduce the notion of a variable scope.
What Principia calls `apparent variable' is bound variable in modern terminology; `real variable' is now called free variable. The example of a definite integral to illustrate bound variables and alpha-equivalence is striking. It also shows that lambda calculus has a long pedigree. I couldn't help but admire the Leibniz insight.
p18 and p19 of Principia deals with what we now call schematic variables and schematic assertions, of the form ⊢ f x.
When we assert something containing a real variable, as in e.g.
⊢ x = xwe are asserting any value of the propositional function. When we assert something containing an apparent variable, as in⊢ (x).x = x[which is⊢ ∀ x. x=xin modern notation] we are asserting ... all values of the proposition function in question. It is plain that we can only assert ``any value'' if all values are true; for otherwise, since the value of the variable remains to be determined, it might be so determined as to give a false proposition. Thus in the above instance, since we have⊢ x = xwe may infer⊢ (x).x = x
The authors then go on to introduce what we now call generalization, of ∀-introduction. (Page 20 introduces the inverse, ∀-elimination, or, as Principia puts it, ``what holds for all, holds for any''.)
Although a schematic formula (for any) is equivalent to the corresponding universally quantified formula in Principia's logic [which was later distilled to is now called First-Order Logic], the authors still wish to keep the two notions distinct.
The ordinary formulae of mathematics contain such [real-variable] assertions; for example
sin² x + cos² x = 1does not assert this or that particular case of the formula, nor does it assert that the formula holds for all possible values ofx, although this is equivalent to this latter assertion; it simply asserts that the formula holds, leavingxwholly undetermined; and it is able to do this legitimately, because howeverxis determined, a true proposition results.
On page 20, Principia says, after describing ∃-introduction: ⊢ φy ⊂ (∃x).φx:
The above proposition gives what is in practice the only way of proving existence theorems: we always have to find some particular
yfor whichφyholds, and hence to infer(∃x).φx. If we were to assume what is called the multiplicative axiom, or the equivalent axiom enunciated by Zermello, that would, in an important class of cases, give an existence-theorem where no particular instance of truth can be found.
Thus, for Russell and Whitehead, ``the only way in practice'' of proving existence theorems was to exhibit a witness. They have, perhaps unconsciously, took up intuitionistic, or even constructivist view. And this was published in 1910...
Jacques Carette noted that Brouwer was also publishing around that time. (Although it has to be said that Brouwer writings of that time were hardly comprehensible to a mathematician. The intuitionistic vs. classical controversy has really started with Hermann Weyl.) Jacques has further noted that some aspects of that constructivism can be traced back Kronecker 30 years earlier.
On p21, after asserting a proposition (in modern notation)
⊢ ∀x. φ(x) ∧ ∀x. ψ(x) ⇒ ∀x. φ(x) ∧ ψ(x)
the authors write ``this requires φ and ψ should be functions which take arguments of the same type. (We shall explain this requirement at a later stage).'' How contemporary! That was perhaps the first use of the word `type' in the sense now so common in programming.
On p26, the authors note that the symbol for set membership is actually the Greek epsilon, the first letter of the word ἐστί -- which, by a Russian analogue, I assume means ``to be''. So x ∈ man literally means "x is a man". (I don't mean that Principia first proposed that notation. It was already established.)
Page 33 is probably the first modern definition of a function as a particular form of a binary relation: any binary relation R induces a function R'y as the unique x such that xRy holds. No restriction on R is imposed; however, later `domain' is introduced as a class of those y for which there exists only one x so that xRy holds. A one-to-many relation hence does define a function, with the empty domain.
Principia calls such binary-relation--induced functions `descriptive functions' (now often called ``definite descriptions'). The name and the exposition follows the theory of descriptions in natural languages that Russell developed five years prior (in his famous paper ``On denoting'', Mind 14(4), 1905).
Jacques Carette noted that Principia anticipated the difference between ``definite description'' and ``explicit function'' back in 1910, because there were already examples in mathematics of these. ``Analytic continuation is one of those processes in mathematics which is functional but not a function, as it involves a certain amount of choice.''
Ludlow, Peter. Descriptions
The Stanford Encyclopedia of Philosophy (Winter 2023 Edition), Edward N. Zalta & Uri Nodelman (eds.)
<https://plato.stanford.edu/archives/win2023/entries/descriptions/>