After thinking more about it, I think I understand your thought process. I agree that set theory has lots of pathological stuff (the book even points out that (a,b)={{a},{a,b}} is quite pathological). However, it seems to me that similar to how you should understand how a Turing machine like brainfuck works before doing advanced programming, you should understand how the foundations of math work before doing advanced math. This is the main reason why I am studying set theory (and will do real analysis soon enough).
Interestingly, there are also multiple formulations of computing, some more popular than others. The languages that I like to use are mainly based on Turing machines (c, zig, etc), but some others (javascript) are a mix and can be formulated like a lambda calculus if you really want. Yet it seems to me that since Turing machines are the most popular formulations of computing, we should learn them (even if we like to use lambda calculus later on). From what I’ve read, it seems that real analysis is also based upon sets. Actually, after looking this up, it seems you can do analysis in type theory, but that this is off the beaten path. So maybe I should learn set theory because it is the most popular but keep in mind that type theory might be more elegant.
you should understand how the foundations of math work before doing advanced math
Is this merely something that set theoreticians believe, or do mathematicians that are experts at other branches of math actually find set theory useful for their work?
Can you in practice use set theory to discover something new in other branches or math, or does it merely provide a different (and less convenient) way to express things that were already discovered otherwise?
Many statements are undecidable in ZFC; what impact does that have on using set theory as a foundation for other branches of math?
Can you in practice use set theory to discover something new in other branches or math, or does it merely provide a different (and less convenient) way to express things that were already discovered otherwise?
The value of set theory as a foundation comes more from being a widely-agreed upon language that is also powerful enough to express pretty much everything mathematicians can think up, rather than as a tool for making new discoveries. I think it’s worth learning at least at a shallow level for this reason, if you want to learn advanced math.
I’d add that set theory gives you tools (like Zorn’s lemma and transfinite induction) that aren’t particularly exciting themselves, but you do need them to prove results elsewhere (e.g. Tychonoff’s theorem, or that every vector space has a basis).
That said there are some examples of results from formalizing math/ logic being used to prove nontrivial things elsewhere. My favourite example is that the compactness theorem of first order logic can be used to prove the Ax–Grothendieck theorem (which states that injective polynomials from C^n → C^n are bijective). I find this pretty cool.
I don’t know or think set theory is special. I just wanted to start at the very beginning. Another reason why I chose to start at set theory is because that is what Soares and Turntrout did and I just wanted somewhere to start (and I needed an easy-ish environment to level up in proofs). The foundations of math seemed like a good place. I plan to do linear algebra next because I think I need better linear algebra intuition for pretty much everything. It seems like it helps with a lot.
Tbh I don’t think what specific foundation you use for math matters all that much, so I was mostly bikeshedding in that comment. 99% of things in math are agnostic to foundations. Even Zorn’s lemma can be reformulated in type theory. Really, the only thing you’d need to learn the axioms of set theory for is mathematical logic. Also, I don’t think type theory is inherently more advanced than set theory, it’s just historical happenstance that we teach set theory.
You’ll also be delighted to learn that I think that, in general, it’s better to learn a “close to the metal” language like C at the same time you learn a lambda calculus/type theory-based language like Haskell at the earliest :3 (although the best first language is something multiparadigm like Scheme or Pyret).
After thinking more about it, I think I understand your thought process. I agree that set theory has lots of pathological stuff (the book even points out that (a,b)={{a},{a,b}} is quite pathological). However, it seems to me that similar to how you should understand how a Turing machine like brainfuck works before doing advanced programming, you should understand how the foundations of math work before doing advanced math. This is the main reason why I am studying set theory (and will do real analysis soon enough).
Interestingly, there are also multiple formulations of computing, some more popular than others. The languages that I like to use are mainly based on Turing machines (c, zig, etc), but some others (javascript) are a mix and can be formulated like a lambda calculus if you really want. Yet it seems to me that since Turing machines are the most popular formulations of computing, we should learn them (even if we like to use lambda calculus later on). From what I’ve read, it seems that real analysis is also based upon sets. Actually, after looking this up, it seems you can do analysis in type theory, but that this is off the beaten path. So maybe I should learn set theory because it is the most popular but keep in mind that type theory might be more elegant.
Is this merely something that set theoreticians believe, or do mathematicians that are experts at other branches of math actually find set theory useful for their work?
Can you in practice use set theory to discover something new in other branches or math, or does it merely provide a different (and less convenient) way to express things that were already discovered otherwise?
Many statements are undecidable in ZFC; what impact does that have on using set theory as a foundation for other branches of math?
The value of set theory as a foundation comes more from being a widely-agreed upon language that is also powerful enough to express pretty much everything mathematicians can think up, rather than as a tool for making new discoveries. I think it’s worth learning at least at a shallow level for this reason, if you want to learn advanced math.
I’d add that set theory gives you tools (like Zorn’s lemma and transfinite induction) that aren’t particularly exciting themselves, but you do need them to prove results elsewhere (e.g. Tychonoff’s theorem, or that every vector space has a basis).
That said there are some examples of results from formalizing math/ logic being used to prove nontrivial things elsewhere. My favourite example is that the compactness theorem of first order logic can be used to prove the Ax–Grothendieck theorem (which states that injective polynomials from C^n → C^n are bijective). I find this pretty cool.
I don’t know or think set theory is special. I just wanted to start at the very beginning. Another reason why I chose to start at set theory is because that is what Soares and Turntrout did and I just wanted somewhere to start (and I needed an easy-ish environment to level up in proofs). The foundations of math seemed like a good place. I plan to do linear algebra next because I think I need better linear algebra intuition for pretty much everything. It seems like it helps with a lot.
Tbh I don’t think what specific foundation you use for math matters all that much, so I was mostly bikeshedding in that comment. 99% of things in math are agnostic to foundations. Even Zorn’s lemma can be reformulated in type theory. Really, the only thing you’d need to learn the axioms of set theory for is mathematical logic. Also, I don’t think type theory is inherently more advanced than set theory, it’s just historical happenstance that we teach set theory.
You’ll also be delighted to learn that I think that, in general, it’s better to learn a “close to the metal” language like C at the same time you learn a lambda calculus/type theory-based language like Haskell at the earliest :3 (although the best first language is something multiparadigm like Scheme or Pyret).