Category Theory
Zulip Server
Archive

You're reading the public-facing archive of the Category Theory Zulip server.
To join the server you need an invite. Anybody can get an invite by contacting Matteo Capucci at name dot surname at gmail dot com.
For all things related to this archive refer to the same person.


Stream: learning: questions

Topic: What it's like doing math


view this post on Zulip Hakimi Rashid (Oct 21 2020 at 05:08):

Hi everyone. I just want to know the mindset, the feels and the struggles from everyone while doing and approaching research in math or problems in math in general starting from when they were a beginner up to expert level / any level that they are currently in.

Let's start with me. I am a complete beginner. Right now, doing math for me is like programming a computer. It starts with an idea or problem or both. Then, I start to break down the problems into smaller parts that I can manage and approach one by one before I can see the whole picture. Currently, I feel like i am struggling to learn more about the syntax of the programming language, the rules, the dos and donts, the collections of libraries that people have developed, the paradigm or pattern that people have used to solve problems and maybe more that i dont know of...

With computers, we can't just use our language (which is full of nuances and subtleties, deep meanings, not rigorous) and tell them what we want them to do. We have to translate our ideas down to their language before they can execute them.
But, (I don't know if this true in general) the difference is... with computers, we have all these compilers, user-friendly editors and environments that can point out our mistakes and errors (even though they can't point out some/many bugs). With math, it feels like you are writing a program using a piece of paper and pencil without all those programming tools and have to manually compile your program in your head, checking line by line.

I don't know but suspect that maybe some people are fortunate enough to have this "compiler" in their mind that makes them breeze thru the whole process.

Thank you for sharing. This will help me build the right intuition and mindset along the journey.

view this post on Zulip Morgan Rogers (he/him) (Oct 21 2020 at 09:14):

The "compiler" is a learned system, not built into anyone, as far as I know. I'll give you my perspective as a "pure" mathematician.
The nice thing about maths is that (unless you're doing something super applied like fluid dynamics where you have to develop some physical intuition in order to have any idea what assumptions to make in order to make progress) you typically start with all of the assumed facts in front of you. In an exercise provided in a textbook or course, you'll be given a formal description of all of the ingredients, and the challenge is to perform the mental gymnastics that transforms those facts into the desired conclusion. In research, on the other hand, you have to add the work at either end of collecting the formal descriptions of the ingredients and identifying what the desired conclusions might be.

view this post on Zulip Morgan Rogers (he/him) (Oct 21 2020 at 09:20):

Just like real gymnastics, it takes a lot of practice to get good at it and for it to feel natural. For example, going from seeing the definition of a group to showing that any finite group with an even number of elements contains an element of order 2 takes a few leaps of imagination. The mental gymnastics is quite different for solving differential equations, where the creativity lies in identifying which of the techniques in your tool-box is applicable.
In category theory, the gymnastics you need to learn is that of manipulating the various gadgets that one finds in categories. Diagram chasing (and diagram building!), understanding results about limits and colimits and how these interact, flipping back and forth across adjunctions... all take practice, but there are lots of good textbooks and courses out there to help with that.

view this post on Zulip GhaS Shee (Oct 21 2020 at 13:31):

I might completely agree with @[Mod] Morgan Rogers ,
As a math learner, the gymnastics of "the finite groups" is fundamental, I think.
As you learned 9×7=63 9 × 7 = 63 in elementary school , I think we should know what is ab=d a*b = d and how it behaves in 3D where a,b,d a, b, d A4 A_4 (An A_n denotes for Alternating groups ) to do contemporary math.
And the limit definition in "Categories and Sheaves" written by Kashiwara / Schapira enforces us to compute them in practical math; e.g. Higher Categories .

In terms of compilers and computers, I think no one can deny the recommendation of "Types and Programming Languages" written by Benjamin C. Pierce. Thanks to that book, I could follow what is going on now between computers and mathematics nearly exactly (but only in a very fundamental point of veiw ) .
If you didn't, please check it up.

If you have already known, just let it go through :-)

view this post on Zulip Matteo Capucci (he/him) (Oct 22 2020 at 16:52):

It's absolutely true that some people are just 'gifted' and compile math in their head as easily as you compile your mother tongue, but don't think that every mathematician is one of those :) many of us are just incredibly passionate, so that we went through all the necessary boring, low-level gymnastics to get to the point of grasping the high-level stuff.
Often people refer to 'the mathematical edifice', and indeed, like and edifice, mathematics is built from the ground-up. Yes, you can build some tall pinnacles before you start the lower floors somewhere else, but overall, you need to approach it from the bottom-up.
So don't get discouraged! You don't need to be an 'expert' in the easy things, but you certainly need to have seen them. The ideas, the intuitions, the techniques, will slowly train your brain to think 'in the right way' to grasp high-level math.
My suggestion thus is to make baby steps. Learn some linear algebra, euclidean geometry, calculus, logic, etc, and then build on them.
Plus, ironically there are compilers for math, they're called proof assistants. People like Kevin Buzzard make a case of using them to teach undegraduates, which I think is a very good thing. They force you to think things through and, most importantly, they actually check the proofs you write down. Heck, most can even write chunks themselves! So if you like fiddling with programming, you could try something like Lean, or Agda.

view this post on Zulip Dan Doel (Oct 22 2020 at 16:55):

I'm not sure "compiling" is a great metaphor for doing math.

view this post on Zulip Dan Doel (Oct 22 2020 at 16:57):

A lot of math is done at a level way above that, and not really even getting into 'programming' let alone compiling. I would say it is more like convincing another programmer that a program could be written, based on them knowing a bunch of other programs that are possible to write.

view this post on Zulip John Baez (Oct 22 2020 at 16:59):

I guess only people who like to program like these programming metaphors for math. :upside_down:

view this post on Zulip Matteo Capucci (he/him) (Oct 22 2020 at 17:11):

Dan Doel said:

A lot of math is done at a level way above that, and not really even getting into 'programming' let alone compiling. I would say it is more like convincing another programmer that a program could be written, based on them knowing a bunch of other programs that are possible to write.

I think compiling as in 'take a bunch of pages from a math paper and convert it into an idea into your head'

view this post on Zulip Matteo Capucci (he/him) (Oct 22 2020 at 17:12):

Also, checking a proof in your head is very much like compiling a formal proof in a proof assistant, except you have much better type inference than them

view this post on Zulip Dan Doel (Oct 22 2020 at 17:14):

That isn't what compiling a program is, though. There are similar processes connected to programming. Like gradually gaining an understanding of how a large program works as an idea that leaves out a lot of the actual details.

view this post on Zulip Dan Doel (Oct 22 2020 at 17:15):

And there's a considerable amount of mathematics that is not presented as formal proofs.

view this post on Zulip Dan Doel (Oct 22 2020 at 17:16):

Almost all mathematics at this point, probably.

view this post on Zulip Dan Doel (Oct 22 2020 at 17:21):

Anyhow, I guess my point is, experienced mathematicians aren't able to breeze through stuff because they have a 'compiler' for formal proofs in their head. It's because they have a lot of general ideas about what things work, similar to how an experienced programmer knows a lot of general examples of how to build programs. So when you say, "I think we could build a program that does X," they can say, "yeah, that seems plausible," without working through a ton of details.

view this post on Zulip Dan Doel (Oct 22 2020 at 17:22):

Because rarely does anyone care about working through all the formal details in full rigor.

view this post on Zulip Matteo Capucci (he/him) (Oct 22 2020 at 17:27):

Dan Doel said:

That isn't what compiling a program is, though. There are similar processes connected to programming. Like gradually gaining an understanding of how a large program works as an idea that leaves out a lot of the actual details.

A compiler takes an high-level description of a program and turns it into an actual program. So replace 'program' with 'idea', and I argue this is what mathematicians do when they read a paper, at least in the first-order approximation.
That said, is silly to argue about metaphors, since this might simply be working for me (and possibly @Hakimi Rashid ) and not for you, and that's... just fine :sweat_smile:

view this post on Zulip Matteo Capucci (he/him) (Oct 22 2020 at 17:28):

Dan Doel said:

Anyhow, I guess my point is, experienced mathematicians aren't able to breeze through stuff because they have a 'compiler' for formal proofs in their head. It's because they have a lot of general ideas about what things work, similar to how an experienced programmer knows a lot of general examples of how to build programs. So when you say, "I think we could build a program that does X," they can say, "yeah, that seems plausible," without working through a ton of details.

Yeah we agree

view this post on Zulip John Baez (Oct 22 2020 at 17:53):

Dan Doel said:

Anyhow, I guess my point is, experienced mathematicians aren't able to breeze through stuff because they have a 'compiler' for formal proofs in their head. It's because they have a lot of general ideas about what things work, similar to how an experienced programmer knows a lot of general examples of how to build programs. So when you say, "I think we could build a program that does X," they can say, "yeah, that seems plausible," without working through a ton of details.

Right! To get good at math it's really crucial to not compile all the details of proofs in your head... yet also to know, when working on a particular proof, where the real obstacles to doing this would lie.

view this post on Zulip John Baez (Oct 22 2020 at 17:56):

Here's a great article on this subject, which might help @Hakimi Rashid:

Quote about the three stages of doing math:

1) The “pre-rigorous” stage, in which mathematics is taught in an informal, intuitive manner, based on examples, fuzzy notions, and hand-waving. (For instance, calculus is usually first introduced in terms of slopes, areas, rates of change, and so forth.) The emphasis is more on computation than on theory. This stage generally lasts until the early undergraduate years.
2) The “rigorous” stage, in which one is now taught that in order to do maths “properly”, one needs to work and think in a much more precise and formal manner (e.g. re-doing calculus by using epsilons and deltas all over the place). The emphasis is now primarily on theory; and one is expected to be able to comfortably manipulate abstract mathematical objects without focusing too much on what such objects actually “mean”. This stage usually occupies the later undergraduate and early graduate years.
3) The “post-rigorous” stage, in which one has grown comfortable with all the rigorous foundations of one’s chosen field, and is now ready to revisit and refine one’s pre-rigorous intuition on the subject, but this time with the intuition solidly buttressed by rigorous theory. (For instance, in this stage one would be able to quickly and accurately perform computations in vector calculus by using analogies with scalar calculus, or informal and semi-rigorous use of infinitesimals, big-O notation, and so forth, and be able to convert all such calculations into a rigorous argument whenever required.) The emphasis is now on applications, intuition, and the “big picture”. This stage usually occupies the late graduate years and beyond.

view this post on Zulip Dan Doel (Oct 22 2020 at 18:01):

I guess my other point is: there are analogues of these things in programming, even if mathematicians don't recognize them. But 'compiling' isn't the right analogue. :smile:

view this post on Zulip Hakimi Rashid (Oct 23 2020 at 04:28):

Thank you everyone for sharing your perspectives. These help me to get the big picture and also identify the parts that i'm still lacking (and that's alot). The analogy is just based on my limited experience so far with the universe of math and also my point of view as an outsider just starting to wet his feet in math. It suppose to capture something / parts that is unique and special to math that other fields doesn't have or very being applied in a very limited sense. I am not trying to limit the boundary of mathematical activities by presenting the analogy.

The article by Terry Tao shared by @John Baez really helps point out whats lacking. The gymnastic analogy by @[Mod] Morgan Rogers also helps in the sense that for most people, the skills and the intuitions are mostly acquired. Also, thanks for recommending the book @GhaS Shee , will look into it. Thanks @Matteo Capucci for sharing your experiences and info on Agda. So, it can help reduce the cognitive load of doing math by automate part of it and let the computer do the chores?

And also the view by @Dan Doel Dan Doel said:

A lot of math is done at a level way above that, and not really even getting into 'programming' let alone compiling. I would say it is more like convincing another programmer that a program could be written, based on them knowing a bunch of other programs that are possible to write.

is somewhat similar to the 'post-rigorous' stage right? This really open my mind and make me realize that when mathematician met and discuss they do it mostly at the higher level of sharing ideas and sometimes when needed they go deeper into the low level details. This is what i'm lacking of. The rigorous details parts and the ability to traverse between them. This will enable me to check error in 'compilation' and help me to separate the good and bad intuitions.

view this post on Zulip Dan Doel (Oct 23 2020 at 04:40):

Yes. And I think everyone needs to work through a lot of details at first to build up the intuition. But eventually you have enough general knowledge that someone can communicate a (somewhat) new thing to you without all the details. Similarly, you might have enough programming knowledge to understand how to solve a problem without having to read actual source code in detail.

view this post on Zulip Pedro Minicz (Oct 24 2020 at 17:36):

Just to add a bit about proof assistants: I've gotten into math because of proof assistants and I believe can be a great way of learning math from scratch with the help of a compiler.