There have been distractions. So it’s been painfully slow progress on various projects over the last few weeks. In particular, it has been very slow work trying to write the early (pre-category-theoretic, scene-setting) chapters I wanted to put together for the Gentle Introduction. Partly that’s because I have been trying to decide what I actually believe about set-theoretic reductionism/foundationalism/imperialism …
Here though is a fairly recent paper that I’ve found very helpful. And I am prompted to mention it here because I discovered (in talking to a small and very unrepresentative sample!) that word about it hadn’t got around. So — if you are interested in the topic — let me recommend
Penelope Maddy, ‘Set-theoretic foundations’, in Caicedo et al, eds., Foundations of Mathematics, 2017.
Maddy begins, “It’s more or less standard orthodoxy these days that set theory – ZFC, extended by large cardinals – provides a foundation for classical mathematics. Oddly enough, it’s less clear what ‘providing a foundation’ comes to. Still, there are those who argue strenuously that category theory would do this job better than set theory does, or even that set theory can’t do it at all, and that category theory can. There are also those who insist that set theory should be understood, not as the study of a single universe, V, purportedly described by ZFC + LCs, but as the study of a so-called ‘multiverse’ of set-theoretic universes – while retaining its foundational role. I won’t pretend to sort out all these complex and contentious matters, but I do hope to compile a few relevant observations that might help bring illumination somewhat closer to hand.” And, particularly in the first part of the paper, it strikes me that she does an admirable and very judicious job of distinguishing various things that might be meant by talking of foundations here. Though that still leaves me with much to think about.
In another neck of the woods, I am getting back to updating what was the TYL Study Guide, and I have just uploaded a slightly revised version of Chapters 1 to 8. I hope to finish the new Chapter 9 over the coming days.
About fifty years late, I’ve also been enjoying thinking a bit more carefully about the Prior Analytics, and (relatedly) about ways in which the opening chapters of IFL could be significantly improved.
And so it goes … But, as I say, slow progress all round.
4 thoughts on “Slow progress …”
I have been trying to bring up Maddy’s two papers on this subject (the one you mentioned and the sequel “What do we want a foundation to do? Comparing Set Theoretic, Category Theoretic, and Univalent foundations” http://www.socsci.uci.edu/~pjmaddy/bio/What%20do%20we%20want%20-%20final ) whenever I see debate about these issues, because I think she has done an incredible job in moving towards clarity on the subject of foundations. Even for someone, like myself, who doesn’t subscribe to a Quinean/post-Quinean naturalism about logic and related matters, and therefore will not go all the way with Maddy on her conclusions, the framing of the issues is immaculate. Both the critique of the naive conception of metaphysical insight and epistemic source, but also, even for a realist who wants to push back against her criticism of those goals, the dividing and categorizing of the other principles in coherent and abstract terms so that we can clearly and concisely speak of them is moving the conversation substantively in a forward direction. Clearly, as she points out, different people have meant different things by “foundation”, and it is incumbent on us as philosophers engaging this topic to be clear about this fact.
I have thought about these matters very often, in fact this issue itself is what made me venture into learning category theory, and the point I stand at right now is that the category foundationalists are making a category mistake (no pun intended). Very often they use programming metaphors, which is appropriate because a foundational language is the collection of primitives and means of combination that we use to build abstractions on top of, and it is common to hear category theorists talk about set theory vs category theory in an assembly/machine language vs higher level (usually functional) programming language comparison. I actually agree with this analogy, but I think it proves the opposite point of what they want it to prove. Category theory is the opposite of a foundation, it is an abstraction. In category theory, we leave details on the ground floor, and lift our perspective towards higher structure. This is the opposite of what a foundation is, at least as compared to how I have always understood the word. The quote you use in the Gentle Introduction from Tom Leinster’s book, “Category theory takes a bird’s eye view of mathematics. From high in the sky, details become invisible, but we can spot patterns that were impossible to detect from ground level,” comes back to my mind every time I engage in this debate, because I believe it is a perfect expression of this view. Category theory is about abstraction, not foundation.
I don’t want to be taken as missing a subtle point, however. Of course category theory *can* be used as a foundational system, in the sense of taking category theoretic primitives and building abstractions of things like sets, numbers, algebras and topological spaces and so on with them. I am not arguing against the formal results that people like Lawvere and Mac Lane have proven over the past 50 years; indeed it is possible to do those things. My argument is that this is not productive, it does not give us a better grasp of the mathematical facts because it is using the wrong tool for the job. I am making a normative claim, not a descriptive claim, in saying that set theory is better as a foundational language of primitives and means of combination and abstraction, and category theory is better as an abstraction built on top which lets us see patterns and structures we could not see before. It may be orders of magnitude more productive to write in functional or other higher level programming languages where we can abstract the control structure of the program and let the compiler work out the details, but at the end of the day the compiler is still manipulating low level languages and someone needs to understand those low level languages to implement the compiler, as well as the hardware, so that the higher level language programs can actually run.
At any rate, I am very much looking forward to seeing the updated Gentle Introduction.
I do, very much so, take the comparison of mathematical foundations and programming languages to heart, probably because I care about them equally as much in their own right. But the idea of abstractions being build in a formal language is ubiquitous to both, and I have been focusing my thinking on that topic. Kripke gave a few talks over the past 20 years or so that had various forms of the title “The Set Theoretic Ordered Pair” and I have been unable to find anything, an abstract or summary of the talk, and I am wondering if anyone could fill me in on what he has to say on the subject. The ordered pair is the perfect example of the connection that I am talking about, indeed it is a prime example of a abstract data type, given an axiomatic/algebraic definition and having multiple different implementations (Quine’s definition, Kuratowski’s definition, etc) which each give an abstract object that behaves in the same way and whose real implementation is hidden from the user, and so I would really appreciate anyone who could help me with finding any information on Kripke’s talk.
I think programming language analogies can be helpful up to a point, for instance when talking about abstract structures being ‘implemented’ in various ways.
However, I don’t think that set theory corresponds to machine or assembly language. A language like Lisp is a better analogy. There are two important similarities. It’s based on a simple data structure — lists, rather than sets — that’s flexible and makes it easy to represent a wide variety of things. And the language can nonetheless be used in a very high-level way. (Lisp ‘atoms’ — numbers or whatever — might be considered urelements.)
(The logic-programming language Prolog can also be seen in a similar way, with terms as its simple, general data structure.)
I like Leinster’s idea that “category theory takes a bird’s eye view of mathematics”. However, category theory is not alone in letting use see patterns and structures we could not see before. Other parts of mathematics do that too, including set theory. They might not pick out the same patterns that category theory does, but I have to say I haven’t found category theory’s patterns especially interesting anyway.
“I think programming language analogies can be helpful up to a point… However, I don’t think that set theory corresponds to machine or assembly language.”
I agree, and I think the point they stop being helpful is when you take them literally and ignore the abstraction that the analogy was trying to provide, or try to fold in a different analogy that tries to abstract different properties and relations of the things being talked about than the original analogy was discussing.
I chose assembly/machine languages, firstly because it is often given as the example when category theorists make this analogy, but secondly because if we’re talking about software it is the natural level to use if we want a program to actually run. However, of course, the analogy works in the exact same way if you take Lisp, or Haskell or Java or C# or PHP or whatever else you want, as the foundational language and write an embedded language interpreter inside of it. Taking Lisp and writing an interpreter for some other language as Lisp code is an identical process to writing a compiler with machine code output for some other language, modulo the engineering differences between interpreters and compilers, and the fact that the machine actually knows how to run the machine code whereas running the interpreter requires a Lisp runtime environment which cannot exist on its own (Lisp machines still compiled to a machine code that was not even remotely a Lisp dialect), or at the very least does not exist in the actual world. Despite all of that, the analogy is the exact same, because the analogy is about linguistic abstraction, not the specifics of the languages I chose.
Sure I agree, a homoiconic language like Lisp or Prolog has certain similarities to set theory in terms of primitives and structure. But that is irrelevant to the analogy I was making in the same way the argument “well, Prolog is based on first order Horne clauses, and ZFC set theory is a first order language, so really Prolog should be the base language of the analogy since that is more similar than a typed lambda calculus like Lisp” misses the point of the analogy. So no, I don’t agree that Lisp is a *better* analogy, because the similarities you pointed out about Lisp have nothing to do with the analogy that was under discussion. There is a natural sense in which assembly/machine languages are a foundation for higher level languages because in the actual world they are the actual languages that the actual computers we actually use need to understand to actually run the programs we actually write.
Your second point seems like a non sequitur to me. Whether or not you personally find the patterns category theory reveals to be especially interesting is immaterial to it revealing those patters. You have a clear disdain for category theory which is evident in pretty much every comment I’ve seen you write on here about the subject. My position was that category theoretic foundations are misguided, and that we should continue using set theoretic foundations and build other languages like category theory on top of it (a position I would assume you would have agreed with), and your response was to point out that category theory is not unique in providing new patterns in mathematics and that you personally don’t find the patterns it provides to be interesting. Do you genuinely just not want category theory to exist? Or is there an actual substantive point you’re trying to make in saying that an abstract language being built on top of a foundation doesn’t provide you with anything you find interesting? I have no interest in adjudicating the merits of category theory’s existence as a branch of mathematics with you, that was not even remotely close to the point my comment was making.
Perhaps I shouldn’t have posted my comment as a reply to yours. Since you say “the analogy works in the exact same way if you take Lisp, or Haskell or Java or C# or PHP or whatever else you want, as the foundational language”, I’m not sure quite what you’re objecting to.
I just think that set theory is a higher-level language. That doesn’t mean it can’t be used in a foundational way.
So I disagree with your foundation point only if, and only to the extent that, it requires that set theory be seen as a low-level language like typical machine languages, rather than as a higher-level language in its own right. Since that extent seems to be quite small, perhaps even zero, it’s not a major disagreement.
When saying Lisp was a better analogy, I just meant that if I look at set theory as a programming language, it’s like a certain sort of higher-level language, not a typical machine language. Sets are the main data structure, and lists are more like sets in how they’re structured and used than the fixed-length integers manipulated by machine languages are. And in addition to sets, there’s the formal or informal language used to work with them (first-order logic, for example). That too is not as low-level as machine language.
(Set theory is also a functional language, in addition to being higher-level, at least as ‘functional language’ used to be understood before it so heavily involved type theory as it often seems to now.)
The reason machine code is involved in getting programs to run in the actual world is that real-world computers are ultimately based in physics, and that leads to some of the reasons why actual machine languages have the properties they typically do. Yet even then, a programming language that’s implemented in hardware can be different from typical machine languages. For instance, the Scheme-79 chip was a microcomputer that directly implemented a typed-pointer variant of Scheme (a type of Lisp).
In any case, mathematics is not physically implemented in that way, and so it doesn’t have to be likened to ordinary machine language for it to have a foundational role in building abstractions. And the way abstractions are built in set theory is more like the way they’re built in Lisp. There can be even some of the same criticisms, for instance that ‘irrelevant’ specifics of the way something is represented as a list (set) are visible.
I am happy for category theory to exist in the same way I’m happy for group theory to exist, or functional analysis, or any other part of mathematics.
My point about category theory revealing patterns is that other parts of mathematics also reveal patterns. The particular patterns that category theory reveals are very useful for people working in some areas such as algebraic geometry. I don’t have any objection to that, or any disdain for it. I happen to find the patterns revealed by set theory, or graph theory, for example, more interesting than the ones revealed by category theory, but I’m not working in an area like algebraic geometry.
I’m not happy with the more ‘ideological’ sort of category theorist, the antipathy that some of them often show towards set theory (such as ZFC) that isn’t category-theoretic, the misleading things they often say, the hegemonising ambition over mathematics and parts of computer science, and so on. And also the tendency for certain category theorists to try to make category theory seem necessary, or especially enlightening, in areas where it isn’t (areas which range from ones already well-served by graph theory to politics and even gender equality).
Since I’ve quoted Lawvere before, for instance, on the ‘scientific procedure’ (as he puts it) of using ‘slogans’ as an ‘ideological weapon’ once the ‘main contradictions of a thing have been found’, and what ‘doing this for “set theory” requires’, I’ll quote someone who might not initially seem so ‘ideological’.
In Eugenia Cheng’s recent x + y: A Mathematician’s Manifesto for Rethinking Gender, p 16, for example, she likens set theory to
and then (p 18) tries to get people to associate set theory with the idea that people should be classified by “intrinsic characteristics” and thus with views that could be seen as transphobic:
On p 32, we can see that the hegemonising ambitions don’t stop at maths and CS: