Hacker News new | past | comments | ask | show | jobs | submit login
How to Read Mathematics (vcu.edu)
663 points by ColinWright on Dec 13, 2017 | hide | past | favorite | 138 comments



One thing that I really would like to impress upon computer people is that mathematics is not (usually) a formal computer language. Symbols and technical terms change meaning depending on the author, people write with different "accents". There's a little ambiguity and informality at times, but a whole lot less than other kinds of writing.

Mathematics is (usually) written for humans, not computers. Don't attempt to read mathematics as you read code. To keep making bad analogies, it's a bit more like reading music. Picking the right tempo, the notes to accentuate, the interpretation -- this all requires a human. Computer still make crude approximations.


Why is that? Why is there not a universal way of writing mathematics that is not ambiguous and can be read by anyone that understands the 'language'?

I have a deep dread and fear of numbers and mathematics in general because I don't understand them and I have never learned. Now I learn that there isn't one thing to learn but a vast array? No thanks. I had this apparently romantic view that an equation is an equation (the same equation) anywhere in the world.


> Why is that? Why is there not a universal way of writing mathematics that is not ambiguous and can be read by anyone that understands the 'language'?

There is one, it's called formal logic. The problem with it is that it's not adequate to explain things, only to prove theorems formally; any strict unambiguous proof written in formal logic looks more like a debug trace than a scientific article.

To provide a proper explanation of a mathematical result, at many points in the proof you need to summarize the hundreds of intermediate mechanical steps and write the insight behind them in common language, using potentially ambiguous words.


Why is there not a universal way of writing anything that is not ambiguous and can be read by anyone that understands the 'language'? Because humans have a tendency to defy attempts at classification and constraint. Constructed real-world languages (Lojban, Esperanto) haven't really taken off, while non-constructed languages mix and match whenever they feel like it ("le parking", "Schadenfreude"). The same is true in maths: people use what is easiest.


Because whenever we read something we have to guess the meaning. To the human mind, all communications are inherently contextual and metaphorical. To put it another way each individual has his own internal private language into which everything he reads must be translated.


It's as if we truly believe that 0 is positive charged and 1 is negative charged.

Or to take us a step further, that a certain arrangements of electrons is "negative" and the inverse arrangement is "positive"

I often tell CS people that everything in computing is metaphor and it honestly disturbs me that 80% of the time I get blank looks.


> I often tell CS people that everything in computing is metaphor and it honestly disturbs me that 80% of the time I get blank looks

This is why people think Machine "Learning" means that the Singularity is near.


> Why is there not a universal way of writing anything that is not ambiguous and can be read by anyone that understands the 'language'?

You mean like Lojban (https://en.wikipedia.org/wiki/Lojban) ?


Why should all mathematics be written using exactly the same language and conventions? Should all computer programs be written in the same language? People modify the language (natural, mathematical, programming) they are using to suit their problem. It is unreasonable to expect that the kind of language you use at the foundations of mathematics for example (set axioms and so on) would be efficient and useful for stating properties of much more complex objects: this exactly parallels computer programming languages.

Admittedly, there are no big tables containing "definitions" of these languages. But I think it is common opinion that if you don't understand the language a paper is using, then there is a very large chance you don't know the underlying theory, and the paper will make no sense anyway.


There's also a small but non-negligible chance that you could have understood the paper because you know (part of) the underlying theory under a different name, using different notation and concepts but leading to the same results.


> Now I learn that there isn't one thing to learn but a vast array? No thanks. I had this apparently romantic view that an equation is an equation (the same equation) anywhere in the world.

It's not as bad as that! You're very unlikely to hit this sort of issue until you're reading research papers (unless you decide you're very interested in mathematical history). Pretty much all the material youll come across up to ~undergrad level will use very, very similar notation.


The first alternate notation I think in maths, I used was dot (period) notation for scalar multiplication. Next would be different versions of standard form (aka engineering notation).

Later, at high-school (UK, 16-18yo) we used both d/dx type notation for differentiation and x-dot (a dot above the letter for each level of differentiation).

There would be 3 versions of x= ut + (at^2)/2 that we'd know, this one, d/dx, and dot-notation; primarily the former was used in physics and the latter in maths. We'd also use suffixed numbering, u_0, u_1 on occasions and use u, v, w on other occasions.

One important point - they're not different equations, just written differently.

You write for your audience, in an advanced paper you can abbreviate and use shorthand because you know the reader (in general) will understand.

As an undergrad I found that each department I studied in would tend to use different notation - chemistry, ecology, maths, physics, computing - for the same things. Though sometimes different professors would buck the trend ... they also had different accents and vocabulary, our QFT professor loved the word recapitulation.

You also get different symbol use, like rho for density in one domain and d in another; but that's not really notation per se.

TL;DR sometimes you come across different notation earlier. Different notation doesn't change the equation.


There are at least three different commonly used notations I'm aware of for division.... And that's not counting the long division process, for which I'm aware of at least two different notations (usage varies by country).


I think the answer is that such a language would be overly verbose. You could ask the same question about human language and the same answer applies.


It probably is also the case that the language used in sci articles is constantly changing, too.

We may take advantage of libraries in programming (but even then they may not work on all of the physical platforms), but it's not that well defined, what is "the fundamental language" of mathematics; at least not as of today.

Although I find it cool that tools like Coq are getting increasingly popular, so we will eventually get there.


An exercise that I made during my degree and phd years in maths was to always take notes in a consistent notation across the various lectures, regardless of the convention used by the teacher. It forced me to pay attention and as a bonus I have a consistent set of notes for most undergraduate mathematics :-)


I had this reaction to sign language. Seemed like deaf people missed a good opportunity, but then I realized that how we talk and think is shaped very much by our language. Similarly scholars from different backgrounds have different ways of expressing a precise mathematical concept. This one paper I read implicitly treated complex scalars as real vectors, took me some time to clear up the confusion.


What do you mean by "writing" mathematics? The glib answer is that math is a superset of programming and there are non-computable arithmetic functions, so programming is not rich enough to describe what you need to describe when you are talking about math.

I think a more intuitive answer is that in math you are generally talking about relations between infinite sets of objects, whereas in programming you are living in a (in practice) finite space and are evaluating everything into an integer. Programming is about calculating integers, mathematics is about proving theorems. The language has to be very different because what is crucial about evaluating integers unambiguously is peripheral to proving theorems and vice versa.

You can ask, why is it so painful to give a formal proof of correctness of your program? It's impossible to do for all but the most trivial programs. You know that a brilliant person, given years of work, might be able to come up with a proof of correctness, but you also know that the language they would use to do that would be very different from the language that you as programmer would use to write your program. So it goes in both directions. Programs evaluate numbers, they are essentially adding machines, and central to that is the erasure of state via addition.

Math is about symbolic relations and erasure of state is via relations on infinite sets. For example, you want to prove that if a group has a prime number of elements, then it must be cyclic. So pick a generator, raise it to powers, and get a subgroup. Then by Cauchy's theorem, the order of the subgroup has to divide the order of the main group, and that order is prime, so therefore the subgroup has to be the whole group.

There are many things to unpack in that statement. For example, Cauchy's theorem, which says that if a A is a subgroup of B, then the order of A divides the order of B. So

Cauchy's theorem + Group is prime order => non-zero subgroups must be the whole group.

And then every non-zero group has a non-trivial cyclic subgroup + non-zero subgroups must be the whole group => the whole group is a cyclic group.

So it's bit like adding numbers, in that you forget state, but the rules are much more complicated involving quantifiers and a huge universe of sets.

To build a computer that could reason that way, you'd need an infinite set of registers, rules for quantifiers, etc. and your unit of memory would be abstract set relations instead of a zero or 1.

You can try to simulate special cases of that in software, say with an SMT solver. If you look at the DSL of writing code for SMT solvers, it looks different from the code that a programmer is used to writing, and the best SMT solver can't really do anything too interesting from a math point of view, with very rare exceptions.

Moreover in math as practiced, no one (except some logicians) writes in formal logic. It would be too cumbersome. Simple statements like "a harmonic function on a disk achieves its maximum and minimum value on the boundary of its domain" would require thousands of pages of formal symbols and quantifiers. No one can think like that, and so we don't write math that way because we also want to forget things and make compact statements, but what we forget in math is relationships among infinite sets, things like, what are the real numbers, what is a function on the real numbers, what is a differential, what is a harmonic function, what is the maximum of a function, what is a disk, all of that is packed into our statement and replaced with a math statement that is much more compact in the same way that 1 && 0 are replaced by 0 in a computer register, but the computer register is not rich enough to model relations on sets.


> Math is about symbolic relations

Tell this to anybody who is familiar with, say, algebraic topology. This is a very narrow view of mathematics. Mathematics is much, much deeper than that. Even the pure algebra is no longer about "symbolic relations".

In fact, today the correct view of mathematics would be much closer to that of theoretical physics: both study one or the other form of reality, using pretty much the same method.


> You can ask, why is it so painful to give a formal proof of correctness of your program?

It's not!

It turns out that the dependently-typed lambda calculus is sufficient. See the research into Lean[0].

It seems we had discovered a portal called, Curry-Howard. You can throw in theorems in one side and out come proofs on the other. Programs are mathematical objects. And programming is a subset of mathematics. I like to think of it as an applied mathematics.

It just so happens that practitioners of this language don't require knowledge of the other side of the portal in order to write their proofs. They just write their proofs without any theorems, or at best, a large suite of examples.

To me writing proofs is programming.

[0] http://leanprover.github.io/


This is true. The CS folks are my university tended to be quite strict about writing out quantifiers for everything, while a very accomplished math researcher in our department told our class to "please write in English" instead of using those symbols, because he wouldn't be able to read them.

I asked a friend why he thought this was, and he suspected that the CS department's focus on formal languages and automatic theorem proving is what lead to their use of logical symbols.


I was this guy to certain professors: at the end of the day it's less about formality and more about someone's ability to understand you at a high level and assess you. To me, I was trying to convey my ideas as precisely as possible. To my professor, I was being so verbose that it would have taken him at least an hour to thoroughly assess the rigor with which I had approach my proof, which simply doesn't scale to all students.

Your friend in math is definitions. IME clever definitions minimize the sheer amount of rigor you need to get from point A to point B through their abstractions. The more "natural" or easily understandable a definition is, the easier it is to use that definition as a ground truth in your theorems.

For example, I have an unpublished proof of a graph/game-theory conjecture. Proving the theorem's correctness is extremely convoluted if you rely on atomic definitions of graphs, valid actions, etc. However, as you define new relationships precisely, it becomes much easier. The more abstractly you approach the problem, the simpler the problem becomes, given the correct abstractions.


More computers understand only what they're told. You -have- to be exact.

Humans can infer. If it doesn't make sense, they realize something is wrong and attempt to make sense of it.

As to why the mathematician preferred 'English', I think it's because quantifiers aren't universal. Mathematical notation itself isn't universal. That is, while the student may be internally consistent and exact in their qualifiers, they are not universally consistent between students, nor with the professor's expectation. The professor wanted to immediately grok what the student was trying to do, not have to approach every single turned in assignment as though it was an unfamiliar mathematical paper, using its own notation, that he had to interpret (where some symbols may share a standard meaning across papers, others won't)


I am very much in the math camp, not the computer science camp, but I enjoy annoying mathematicians by explicitly using quantifiers every now and then. Other ways to annoy mathematicians are bringing up pathological examples and remarking that what they have just said doesn't hold in trivial degenerate cases (e.g., the empty set).


But humans can't read it, nor can computers. Maybe it's time to ask if we can do better than traditional formal mathematical notation.


Plenty of humans can read formal mathematical notation just fine.


What do you mean by "humans can't read it".


What I mean is that mathematical notation was never developed with the intention of being easily understood. Nobody writes out a formula and then spends time making it more readable. In programming they do - it's called refactoring. How mathematicians typically polish an already correct formula is called "simplification." This usually leads to their collection of symbols being even more inscrutable. But the more mathematical proofs, formulae, and other statements are unintelligible, the more they make you appear really smart, so the natural tendency is to obfuscate mathematical statements as much as possible. And because this notation cannot be executed by a machine, there is no way to easily prove that it isn't complete gibberish.


In the actual practice of learning and using mathematics, mathematical notation is often much, much more readable (and potentially much less ambiguous) than any text in a natural language that would attempt to convey the same meaning as a mathematical formula.

What must be noted though is that historically the language of mathematical formulas, unlike more "human-readable" text, has been designed to serve several distinct purposes, and conveying the meaning was originally not the most important one; rather, the language of formulas serves the purpose similar to that of programming languages of today, which is to let one to efficiently and, to a large extent, mechanically perform - and thus radically simplify - 1) calculations; 2) logical reasoning; 3) transformations that lead to discovery of new facts.


"To the absolute number multiplied by four times the [coefficient of the] square, add the square of the [coefficient of the] middle term; the square root of the same, less the [coefficient of the] middle term, being divided by twice the [coefficient of the] square is the value." -Brahmagupta, 628AD

I would say we have come a long way.

Mathamaticians absolutly do spend effort on making their work readable. However, this readability is general not within the equations themselves, but rather in the prose around the equations and in how the proof is presented. Of course, skill levels vary in this, and most mathematicians only ever write for other mathematicians, so that is the audience they have practice with (and, if you read a math paper, likely the intended audience).

Also, generally the "equation" is not what mathamaticians are even trying to explain because it is vastly simpler then what they actually worked on, which is the proof.

For example, suppose quadratic equations were actually really difficult, and a mathamtician finally figured out how to solve them. She would probably say something along the lines of:

"A quadratic equation has solutions x=(-b +- sqrt(b^2 - 4ac))/2a.

[Entire paper talking about how to complete the square]"

The entire point of the equation is to be simple to write down and use. It is not intended to be understood.

Sometimes they say an equation without explanation. That is either bad writing, or knowing the audience. Ideally, every equation would come with either an explanation or reference; but if I am writing a research paper, I am probably not going to cite every fact that can be found in an undergrad calculus textbook.


Feynman’s method to understand complex problems is so simple and elegant! Surely you’re joking, mr Feynman:

”I can’t understand anything in general unless I’m carrying along in my mind a specific example and watching it go. Some people think in the beginning that I’m kind of slow and I don’t understand the problem, because I ask a lot of these “dumb” questions: “Is a cathode plus or minus? Is an an-ion this way, or that way?” But later, when the guy’s in the middle of a bunch of equations, he’ll say something and I’ll say, “Wait a minute! There’s an error! That can’t be right!” The guy looks at his equations, and sure enough, after a while, he finds the mistake and wonders, “How the hell did this guy, who hardly understood at the beginning, find that mistake in the mess of all these equations?” He thinks I’m following the steps mathematically, but that’s not what I’m doing. I have the specific, physical example of what he’s trying to analyze, and I know from instinct and experience the properties of the thing. So when the equation says it should behave so-and-so, and I know that’s the wrong way around, I jump up and say, “Wait! There’s a mistake!”


Also from the same book:

"I had a scheme, which I still use today when somebody is explaining something that I’m trying to understand: I keep making up examples. For instance, the mathematicians would come in with a terrific theorem, and they’re all excited. As they’re telling me the conditions of the theorem, I construct something which fits all the conditions. You know, you have a set (one ball) – disjoint (two balls). Then the balls turn colors, grow hairs, or whatever, in my head as they put more conditions on. Finally they state the theorem, which is some dumb thing about the ball which isn’t true for my hairy green ball thing, so I say, ‘False!’"


Not from the book but personal experience:

This is also useful to understand preconditions by reduction. I.e. if you want to understand a theorem, it can sometimes be useful to start by figuring out the reason behind the preconditions. "Why does this apply only to balls that have hair?" Simply go, "What would the theorem imply if I start with a smooth ball instead?"

This practise can also lead to generalisations. Oftentimes starting with a smooth ball will make you go "What? That't can't be possible."

But sometimes, starting with a smooth ball leads you to, "Huh, that's really, really weird. But it's not a contradiction in and of itself. I could use that result in another context!"


What kind of second-rate mathematician tries to prove a theorem without writing down examples? That's Proving Theorems 101.


I have no idea why you were being down-voted, and I wonder how many of the down-voters are actually mathematicians. If they were responding to your tone they need to know that it's incredibly mild compared with what one could say.

I upvoted you, but clearly didn't undo all the downvotes.


Right. The very first step in trying to prove a theorem is to try and disprove it (by looking for a counter-example).


Which are a form of example. You don't store those counter examples in your head - you write them down. If they don't turn out to be counter examples, what are they?


I read that in Feynman's voice in my mind. His tone is unmistakable with each word he utters you can hear him smile with astonishment at the complexity of things.

https://www.youtube.com/watch?v=eqtuNXWT0mo


I agree that having possible examples in mind is a great way to learn mathematics. There are whole books on useful counterexamples, e.g.

https://www.amazon.com/Counterexamples-Analysis-Dover-Books-...

These counterexamples are sometimes a bit involved, but I find they are often useful for understanding the purpose of the technical assumptions that accompany many theorems.


So. much. Using simple examples, low dimensions and physical analogies is really a key to advanced math.


This is so exactly how I think...

When you're talking about complex abstract systems, I have 2 or 3 real world models going on in my head and playing out chains of consequences at the same time. When your abstract system falls down I can tell you where and what caused it despite not understanding a word of your explanation as to why it should. All those mathematical equations and models may as well be Greek to me.


There's a lesson somewhere in there that is applicable in software engineering.


How I read Mathematics. First try to find the paper. First use http://front.math.ucdavis.edu . If you can't find it then use google scholar. If that fails then go on the authors academic website. If that fails then see if the author is live and try to contact them. Then repeat for their grad students. If all else fails post it to r/math or HN and ask for the pdf.

First you want to see if this paper is even worth reading. Scan the Abstract and the conclusions. If it is still relevant then do a quick scan of the whole text and look for the things you don't understand. For everything you don't understand look up on wikipedia. Once you have found those pages then look on the citations on wikipedia to gain more understanding. If you still can't understand the paper reread it and then attempt to redo their calculations. If all else fails ask someone to help you read it. Whenever you get confused write on the paper questions. If you figure out that this paper is meaningless then look for another one.

If you figure out a new question that you want to persue more then try to answer that question. If you don't have access to professor or if they are impeding your work then use stackexchange. Either that or try to invalidate your new theory yourself. Recognize that you can be wrong.


Also a very good advice I had received a long time ago but that I had dismissed until recently: some articles are just badly written.

The author sometimes forget to mention what B actually is, changes the meaning of the multiplication operator implicitly, assumes the formula given is inside an integral.... I could go on.

A maths article is an article. A lot are imperfect, quite a few are bad. Some times it is not the reader that is lacking.

That being said, do your homeworks and only consider that possibility after giving the article one hour of your time or so.


I remember reading this exact piece of advice, but have been trying to remember where.

Would anybody be able to provide the blog post I believe we both read, which says almost exactly what Iv wrote? I could have sworn Michael Nielson wrote it, but I was unable to produce it last time I searched. So I am following OP's advice and am asking here. :P


I may have found the post by Michael Nielson I was looking for... on Hacker News!

https://news.ycombinator.com/item?id=666615

In particular, this piece of advice he gives still rings true to my ears:

Often, when struggling with a book or paper, it's not you that's the problem, it's the author. Finding another source can quickly clear stuff up.


Mine comes from my dad, I doubt he has a blog :-)


How I read Mathematics. First try to find the paper. First use http://front.math.ucdavis.edu . If you can't find it then use google scholar. If that fails then go on the authors academic website. If that fails then see if the author is live and try to contact them. Then repeat for their grad students. If all else fails post it to r/math or HN and ask for the pdf.

Short of bugging the author, you can also go to Wikipedia's entry for SciHub and see what their latest known domain suffix and/or IP address is.


If you don't want to bug the author for their paper then it presupposes that you wouldn't even ask the author a question. It doesn't hurt to send an email that they delete but most likely the author never gets questions and you boost their ego.


> First try to find the paper. First use http://front.math.ucdavis.edu . If you can't find it then use google scholar. If that fails then go on the authors academic website. If that fails then see if the author is live and try to contact them. Then repeat for their grad students. If all else fails post it to r/math or HN and ask for the pdf.

Or, go directly to arxiv, scihub or a similar service.

Fully agree with the following steps, though.


This is still the easy path. Sometimes you have to hope that the article you need was translated from Russian to English, find which is its translated title, search the title, understand that you could not find anything because you have to search the title the volume it was published into, not its original one; then search again the new title, find nothing on GenLib, SciHub and similar, go the university library, discover that the section this article belongs to is currently packed because they are renovating (or moving, who remembers) and there is not ETA and they do not allow you to fetch it from the packages; speak of the problem with your advisor, who tries to find it in his university's library; in the meantime, speak of the problem with a friend, that encourages to you to ask the library again, this time the library agrees to get the paper for you and you photocopy it; more or less at the same time your advisor manages to give you a photocopy. At last, scan the paper (because you do not want to carry a hundred pages in your backpack all the time, do you?) and put it on GenLib for the sake of future souls that might need it.

All of this just to have the paper. During reading, you still need to check the Russian original and ask a Russian friend (as Google translator is not necessarily to be trusted on mathematical texts) for some points that make no sense and turn out to be mistranslations. Not to mention the references to other Russian papers from the sixties that could be even more difficult to find.

On the other hand I have to mention that the paper actually contained the theorem I wanted and the proof was reasonably clear. The author also replied helpfully to an email I sent him! So this was definitely worth the effort. I was lucky!


>First try to find the paper. First use http://front.math.ucdavis.edu . If you can't find it then use google scholar. If that fails then go on the authors academic website. If that fails then see if the author is live and try to contact them. Then repeat for their grad students. If all else fails post it to r/math or HN and ask for the pdf.

You can replace all that by a trip to sci-hub ;)


I believe sci-hub has been taken down, at least temporarily. The .cc and .bz domains weren't working for me. I think it's possible to setup custom DNS servers on your machine and access that way, but I haven't played around with it.


It's still possible to use Sci-Hub, it's just that DNS queries for it tend to fail. Even knowing the IP address isn't enough, because although that gets you to the familiar Sci-Hub home page, search results always time out.

The trick is to find out the IP address of a DNS server or two that knows about Sci-Hub, and put those in your /etc/resolv.conf file.

Note: They have to come first in the file, before any 'compromised' DNS servers like Google's or your ISP's, that will always report 'sorry, I don't know how to find this "Sci-Hub" you speak of'.

If you're on a Windows machine, do it in Control Panel instead; dig down in Network settings, TCP/IP, Advanced, DNS to find the place to type in new DNS server IP addresses.

Do that, and Sci-Hub works fine. Twitter is a good place to find the latest working IP addresses for their DNS server. Last time I looked, they were 80.82.77.83 and 80.82.77.84.


It's .hk at the moment.


"Mathematical ideas are by nature precise and well defined, so that a precise description is possible in a very short space"

"A well-written math text will be careful to use a word in one sense only"

So many papers are not that careful, and thus, not so precise. There are only so many greek letters, so they end up overloaded. I can't count the number of times I've struggled over an equation, only to find out that the reason it made no sense and/or the value for a specific example came out differently was because the author assumed one variable to mean something differently than I did (and my assumption was perfectly valid in another context. Sometimes another context in -the same paper-). The whole experience is incredibly frustrating.

Echoing another point here, if you just show a sufficiently non-trivial example and walk me through it, I grok it quickly. -Then- give me the equation if you must.


My main exposure to mathematics is via CS papers, and this is doubly true there it seems to the point where my warning bells go off if they present their solutions in equations - it's all to often a sign that they're going to hand-wave away essential details that'd be obvious were missing if they presented code or even pseudo-code.

E.g. I did my MSc. on statistical approaches to reducing error rates in OCR, and so many of the papers I reviewed for my literature review suffered from leaving out absolutely critical information when they presented equations etc. that most of the time I spent implementing a lot of the methods presented tended to be to try to reverse engineering missing information (and often that was only possible because many of the papers used one of a few well established public datasets for their experiments).

To me, for those CS papers, maths was a warning what was lying ahead was likely not precise or well defined. It's incredibly frustrating as there were generally no good reason to do so - it wasn't a matter of leaving out large bulks of complicated code. Often it could be as simply as leaving out the concrete values of given parameters.

I'm not implying maths have no place in CS papers, but the CS papers that I've seen that have used it best have tended to also present code fragments, or use maths very sparingly and coupled with painstakingly defining variables etc.


Yeah, my attempt at a master's in CS (before deciding the time would be better spent elsewhere) left me feeling largely the same. "Oh, isn't that equation elegant. Oh, wait, actually trying to implement it...what the hell, where is all the other information I need?! That's a gaussian...but where do the parameters for that gaussian come from? What is this variable? WHAT IS THIS VARIABLE?!" etc.

I had a 4.0 departmental in CS from the same school I tried to get a master's in, but yeah, the master's experience was so bad, and working through those issues so time consuming, I just said "Screw it, I can get a better return on this amount of time doing my own things". Even if it's learning the same things, but to an explicit goal rather than just 'understanding' (and an eventual test/assignment that may or may not relate to what I care about), and where I'm not constrained by an academic policy that prevents me from going to others to have them explain exactly what I need to know.


Another problem is that different subfields of math use jargon a little bit differently. Normal for instance can mean so many different things.


FTA :

>>> One can now check that the next statement is true with a certain amount of essentially mechanical, though perhaps laborious, checking. I, the author, could do it, but it would use up a large amount of space and perhaps not accomplish much, since it'd be best for you to go ahead and do the computation to clarify for yourself what's going on here. I promise that no new ideas are involved, though of course you might need to think a little in order to find just the right combination of good ideas to apply.

I hate that. When I program my computer, I specify all the steps to accomplish something. If it's too verbose, then I abstract it in a function.

I even add comments to make sure that a human reader easily and completely understands what I do.

I do that because I want the computer and the human reader to be productive in their understanding of what I do. And because I want the human reader to see that it's either elegant or just mechanical.

I'm not that pretentious to say "hey, I've hidden a few details because if you are as smart as I am, then you'll understand easily".

I had this when learning maths. As a student I was sometimes lost because I always thought maths were hard. Should I have had all the details, I'd seen it was indeed much easier than I thought and wouldn't have been intimidated. Now, I'm older, and I know all of that and I'm much better at mathematics. But what a waste of time.

And the space argument, come one. Just put all the stuff in annexes and it'll be fine.


> I hate that. When I program my computer, I specify all the steps to accomplish something. If it's too verbose, then I abstract it in a function.

> I even add comments to make sure that a human reader easily and completely understands what I do.

Yeah, honestly, any single time I read a maths-related paper I feel like I would be better off with an example, well-written, implementation in any programming language.

Then I recall what the code, written by mathematicians, tends to look like, and I'm not so sure anymore...

Seriously, the fact that math people choose to ignore the last 50 years of software engineering development, which was in a large part focused on readability and maintainability, instead of incorporating the techniques for themselves is really baffling. As it is, aside from a couple of really well-written articles, reading any paper has a high chance of frustrating me to tears...


So you'd never say to someone "use a bubble sort" or "try a bitwise trie" you'd lay it out in full, commented code each time?

When you say "I abstract it in a function" that's surely what a mathematician is doing when they say "then we have a BVP and it naturally follows ...", they're applying the function "treatAsBVP". If you don't understand that step then you go and learn that, just as someone would have to find a library and look at an abstracted function used in your code to understand what it returns.


> When you say "I abstract it in a function" that's surely what a mathematician is doing

In principle, yes.

In practice, I can right-click on any such function and get to see its source (edit: instantly, automatically) whenever I need it. That doesn't work at all with math papers.

EDIT: Furthermore, when writing about something where bubble sort is used, for the general audience, I would simply link to an explanation of what it is, visualization of how it works and an example code, so that anyone who doesn't know it can quickly get up to speed with it, then I'd explain how exactly that sorting method fits with the rest of topic.

In maths, papers are devoid of any links, the teaching materials are up to 50 years old and never updated to take advantage of new presentation techniques, authors frequently name-drop some algorithm and then forget to say what parameters they used or how exactly it connects with preceding and following paragraphs. It's really bad from UX point of view. That's why sites like BetterExplained are so important.

EDIT2: so, in short, I'd do everything I could - without spending huge amounts of time on it - to make the article as accessible and easy to follow as possible and to make it useful even if someone is not able to understand it whole. I'd really like to see mathematicians to at least try doing the same.


> In maths, papers are devoid of any links, the teaching materials are up to 50 years old and never updated to take advantage of new presentation techniques, authors frequently name-drop some algorithm and then forget to say what parameters they used or how exactly it connects with preceding and following paragraphs.

That there is the crux. If math articles/papers were written in a different medium then you could drill down (right click, view source) from the most abstract level down to the basics. Some kind of tool would need to exist to make this possible.


>In maths, papers are devoid of any links

Not really. Math papers have citations; and important references to prior work are mentioned in the text. It would be a nice quality of life improvement if these were as easy to follow as clicking a link, but relative to the amount of effort you will spend within each link, it is pretty close. Assuming that the referenced paper is in an accessible location; although if it isn't and I need to track it down, I would prefer a standard citation over a broken URL with no archive.


Clickable links are but one of the "quality of life" improvements paper authors could provide - but don't. It's not like there are no tools (like nogbit suggests); for example, Jupyter Notebooks are a document format which can incorporate various kinds of content, from latex typesetting to interactive charts to executable code. The problem is that such tools are simply ignored by most of the paper authors. I do understand some of the reasons for this ((over)reliance on journals for instance), but that doesn't change the fact that it makes for much worse experience for the readers than it could be.


It is unreasonable to expect that people who are experts in their own field, working at the very boundaries of human knowledge, should also be expected to be completely up-to-date with the latest research in software engineering development.


> working at the very boundaries of human knowledge

That's a pretty minor part of all the papers produced every day.

> to be completely up-to-date

Did I say anything about being "completely" up-to-date? Most of the good practices for readability and maintainability of code were known in the 80s, with almost all of the bad practices disappearing in the late 90s. That's twenty years.

> the latest research in software engineering development

That's not even a research, actually. Things like using meaningful function and variable names (I can never, for the life of me, understand why someone would prefer `X` over `training_set` or `x` over `element`), using comments, using uniform, standard formatting, abstracting - but not hiding or omitting - mechanical details and so on don't come from standard research (I think?), but from the practice of programming.

It is completely reasonable to expect people to improve their craft and to change their ways to better fit a changing environment. The arrival of general-purpose computers and later the Internet had a huge impact on almost every other occupation, from accountants to physicists, to biologists and medical professionals, to writers and journalists... just not on mathematicians. I may be wrong on this, of course, it could have changed in the meantime, but when I was a university student I learned algebra - as I've been told to - from a book printed in 1978. And that was ten years ago.


Because mathamaticians have thousands of years of history where they learned how to write math in a way that is readable to other mathamaticians.

Software engineering is a very different activity from the math that mathamaticians do. It makes sense that it has a different standard for what mathematicians do.

There are undoubtadly ways to improve mathematics, but it seems highly arrogant to say that your <100 year old field has discovered a massive improvement that mathematics has missed for centuries.


> Because mathamaticians have thousands of years of history where they learned how to write math in a way that is readable to other mathamaticians.

No, actually, they learned to write math in a way which is a trade-off between readability and ease of writing (which is perfectly ok). The problem is exactly with thousands of years of history: the notation which is convenient to write on a clay tablet or papyrus scroll is not necessarily the best notation to use in an interactive document format displayed on computer screen.

Fiction writers have as long a history as mathematicians (or much longer) but they don't insist on writing in Latin or Middle English. It is arrogant to think that the notation and practices of contemporary mathematicians are ideal and impossible to improve in any way.

Lastly, writing for other mathematicians is a problem in its own right. There is a difference between conducting your day to day work, where you can write your equations on clay tablets for all I care and writing an article with a purpose of explaining your work to others. Most of the math papers completely ignore this and instead of honestly explaining the matter, authors focus on promoting themselves as great scientists.

There is a lot that can be done to improve understandability (I used "readability" for this earlier, but understandability seems to fit better), to reduce the time needed to read and understand math papers. It would benefit everyone, yet almost nobody does it. There are reasons for this, I'm sure, but it still makes everyone worse off.


Cross-pollination is one of the low-hanging ways one can contribute to a discipline, and all professions are very eager to have people bring in ideas from other domains.

Even if a domain is over 1000 years old, some domains have only existed for about 150-200, which means that before, the world did not have the benefit of those lenses. Now that we have them, it is only natural to mix and match to see if easy insights come out.

Is there not also a risk of arrogance to demanding that another field understand everything about yours before attempting to share knowledge? It suggests that the time of day is so limited, and you have business of such importance, that you will not hear ideas below a threshold. That seems like a fine strategy for accruing quality up to a point, but it can run into local maxima more easily.


> your <100 year old field

We should not forget that the progress that science, mathematics and technology have made in the past 100 - 150 years by far exceeds all that had been done before.


appeal to tradition, poor argument. not arrogance to assert perhaps a field needs to update its methods.


A software engineer suggesting that math should adopt the practices of software engineering sounds a lot like someone trying to generalize their domain into another domain; and saying that they know better then the domain experts in the field they are generalizing into.

Occasionally they are right. Most of the time however, the domain experts are right.


As I said in another comment[1], I'm not even talking about software engineering, just a good practices of everyday programming.

Could you please tell me why do you think that the name `x` is better than `element` (when talking about some set), the name `X` is better than `training_set`, and the `∑` is better than `sum`?

[1] Here: https://news.ycombinator.com/item?id=15914024


Well, it's not just about who is right and who is wrong, not in this case. Comparing industry practices with those of scientific (especially theoretical) research may not make much sense. Plus, if you consider the way software is actually developed, you will see that the kind of honesty that is required or assumed in regard to a scientist cannot be practically expected from today's software engineer. Engineering is all about compromises, while science is not.


It is endlessly frustrating that the current trend in functional programming fetishizes mathematical notation when describing the same concepts with more verbose versions of the same thing in other programming languages would be clearer and more widely understood.


> When I program my computer, I specify all the steps to accomplish something.

You certainly do not specify all the steps your computer must take to run the program because that would make even the simplest program a nightmare to read. In the same way, specifying all the steps a reader must take would make math papers completely unreadable. There's a line which should be chosen wisely, but it's not as simple as "just explain everything".


You forgot this:

> If it's too verbose, then I abstract it in a function.

Yeah, not everything has to be included in your source and you do rely on abstractions when writing code. On the other hand, these abstractions are always there, and it "easily follows" that you can take a peek at them at any time, up to and including disassembling a binary executable. You can't do this with a maths paper - you can't just go to Github to check the source of a library, you have to "reimplement", again and again, pieces of the paper that an author decided to omit.


>You can't do this with a maths paper - you can't just go to Github to check the source of a library, you have to "reimplement", again and again, pieces of the paper that an author decided to omit.

Analogous to Github would be the entire mathematics ecosystem - it is not unreasonable to expect your reader to read another referenced work rather than reproduce it yourself.

I think a better analogy than Github for work just assumed to be worked through by the reader, would be uncommented sections of code. Despite what anyone says about best practices, there will always be plenty of uncommented sections of code in any serious codebase, although the hope is that they would all be fairly trivial (and this is the same hope with mathematics papers).

I would expect anyone reading my code to understand that if I loop through an array of integers, add them to a sum, and then divide by the length of the array, I am taking an average, even if I would be better served using a method that describes this properly.

I would expect anyone reading my code to intuitively understand what I am doing if I build a reverse lookup map to some other map data structure without me commenting every little line and type to explain the idea behind the construction.

Similarly, it is not always unreasonable for mathematicians to assume their reader can step between lines using elementary techniques. If you want someone to perfectly walk through every single assumption in a proof with zero ambiguity, you have arrived at Principia Mathematica.

Certainly some mathematicians are worse than others, but this is no different than the world of software. I cannot begin the number the times I have stepped into some old enterprise code and immediately wanted to scrub my eyes after viewing some thousands-of-lines method with few to no comments and code branching in every direction for hundreds of lines at a time.


Of course, ambiguity can still arise even when the author puts the details into the appendices because "details of the details" could still be missing. This can happen when there is a mismatch between the assumed background by the author and the actual background of the reader. There are many hypothetical answers to why the article was not written for a more general audience (and not all require assumed malintent by the author).


I disagree with 'do not read too fast':

Skim all. Skim again the next day. But the third time, get pencil and paper and take notes, and effort. If it's neither uncomfortable nor exciting, you're doing it wrong.


So basically take a couple days to understand the material rather than going all in all at once?


Few math professors grok a journal paper within a day. One professor told me he strives for a page a day.


Just... no. If you actually have to understand it (rather than, say, peer-review it), then make a honest attempt to understand it right from the beginning. For instance, suppose it takes you 30 minutes to skim through a chapter of a math book. Then you've wasted 30 minutes you could've spent understanding the chapter's first section.


That's true, but there are many situations where you don't know if you really need to understand it until you've skimmed it or otherwise have read enough to know what's in it.



What if everyone learns differently?


haha true, I envy people that just sit down read a book/chapter/article/blog linearly and then comes enlightened, I can't, I need to first Skim almost 90% of the material, and then start again from the bottom, reading the last part and trying to figure out how the first part is connected or are important for understand what is written.

I think that people that read it linearly don't miss important info, but I just can't


Nobody is born knowing how to read effectively. It is a matter of practice and discipline.


Have you actually read any of the papers? While I tend to agree with you in an ideal situation where you may assume the writer is <probably> good - that is usually not the case with real-life papers.

It's not even the writing per se - it's the structure, or omissions instead. I would rather skim first to find which parts I may not be able to grasp right away and to find out if there's any point spending time on this, rather than go on and read the pieces from the citation list.


> Have you actually read any of the [emphasis mine] papers?

What specific papers are you talking about? TFA doesn't contain a single occurrence of the word “paper”. On the other hand, it contains several occurrences of the word “book”. And, most importantly, it is obviously written for newcomers to mathematics, who for obvious reasons will spend more time reading carefully written books rather than papers written in a rush.


I’m curious if anyone has advice on how to understand all the symbols used in math papers. Frequently I find this is the first barrier for me in reading them.


Shameless plug, I write about math on BetterExplained.com

For each symbol, I try to make an analogy. For "e", for example, I have the notion of "continuous growth". The formal definition is this:

https://betterexplained.com/ColorizedMath/content/img/E_(mat...

"The base for continuous growth is the unit quantity earning unit interest for unit time."

Once you see the role of each part of the definition, the idea snaps into place. I just wrote about it here: https://betterexplained.com/articles/colorized-math-equation...

Hope that helps!


Just wanted to thank you for a great job you do on BetterExplained. I was able to understand and put to use some concepts only thanks to your articles, most recently it was Fourier transform. I'd be much better at math if people writing educational materials realized that there are more effective ways to teach (and to learn) than what they had experienced. Thank you!


I appreciate it, thank you! I have a similar wish, hoping more people would share math in the way that truly helps them.


I like that figure you made! Though shouldn't the whole 1/n fraction be red and not just the numerator?


Thanks! So, the red 1 represents the 100% interest we intend to earn; the pink n in the denominator represents the compounding pieces we divide it into.

For example, an approximation of e would be (1 + .01)^100, where the 100% interest had been chopped into 100 separate segments of 1%.


> For each symbol, I try to make an analogy.

Analogies are utterly unhelpful without a thorough understanding of the actual definitions.


Analogies on their own are limited if you don't continue to the technical definition. They are a raft to cross the river.


> ... They are a raft to cross the river.

or rather like net to catch the fish. once you have the fish, you can forget about the net.

this is not far removed from words, which are used to convey meaning. once you have meaning you can forget about the words ;)

edit-001 : fmt changes.


>> ... They are a raft to cross the river.

>or rather like net to catch the fish. once you have the fish, you can forget about the net.

So you can forget about the net ... like a raft to cross a river?! ;o)


When you are a student, rather than a researcher, formal definitions must come first, and intuition can be developed later. Otherwise, you are just allowing yourself to say nonsense.


I worry about the fact that you're being downvoted, because what you're saying is utterly crucial and important. I fear those who ignore it will waste a lot of time with really misguided ways of doing mathematics. The analogy approach works for programming, but it's not applicable to seriously studying mathematics.


I wouldn’t dismiss analogy so easily. George Polya opened my eyes to the power of analogy in math. I can’t recommend his “Mathematics and Plausible Reasoning” enough.


Polya's text was targeted towards researchers and people who already understood the basics pretty well. But I don't think the analogy approach is valid (or at least, not recommended) in the context of this thread, where the parent seemed to assume that the audience wasn't even particularly comfortable with limits. It can be a dangerous and seductively-easy path to go down, is all I'm saying. You're not going to understand mathematics without having a firm firm grasp of the rigorous definitions and by doing mountains of exercises (where it will often be quickly apparent that using an analogy is not sufficient).


I wouldn't worry too much about it. Math students are not the primary target audience of this website. And, if the planets align and someone here actually wants to study math, they will either quickly discover the limitations of an “analogy-first” approach, or quickly fail and give up.


> The analogy approach works for programming, but it's not applicable to seriously studying mathematics.

Why?


Analogies are always leaky abstractions and it's easy to cement an incorrect notion of the subject matter that doesn't account for subtle behavior and edge cases. I do think explaining by analogy is useful as long as it comes with clear caveats, but as an example, if there were good analogies for quantum uncertainty and wave particle duality, or general relativity, people wouldn't find those things eternally perplexing. YouTube has thousands of hours of videos trying to explain GR with elevators in space and trains moving at the speed of light, but if you can't do the math you'll never really understand it. Some things just can't be broken down into concepts that a three dimensional monkey brain can easily understand.


Because in mathematics, unlike programming, you won't get anywhere without actually understanding the topic at hand.


I highly recommend the book "Mathematical Notation: A Guide for Engineers and Scientists" by Edward Scheinerman (Amazon link: http://a.co/c1jcvLH ). It's short, and perfect for looking up symbols, brackets, subscript/superscript conventions etc. for science and engineering math (for me, the stuff I encounter in my programming life, when I read papers & books that deal with graphics programming, DSP, cryptography, etc.).

It's difficult to google mathematical stuff, especially since each symbol has many different meanings depending on which branch of mathematics you're dealing with - this book solves that problem nicely by letting you look up by the roman letter a symbol is similar to, by mathematical discipline, etc.


+1 - great book; always on my desk.


This looks perfect, thanks!


Probably the first thing to do is find a copy of Lawrence Chang's Handbook of Spoken Mathematics (also referenced in a previous HN post: https://news.ycombinator.com/item?id=10284052)

This has been great for helping me figure out what to even call various symbols so I can then go look up what they actually intend you to do.


When I studied math at the university (80s), I never attended classes, and so I didn't know how to read quite a few symbols. I got laughed at during oral examinations, (but no marks were reduced for this). This book would have been really handy!

Anyway, I still read some symbols differently.


Thanks! I've been looking for something like this for so long. It's always been a pain to study something like graph theory, graphics, crypto, etc. without even being able to read the formulae.


This is pretty good!


Remember that these symbols stand for something, i.e., they must be defined somewhere. Make sure that you can either remember the definition or consult it whenever you need it.


> The author usually spends months discovering things, and going down blind alleys. At the end, he organizes it all into a story that covers up all the mistakes (and related motivation), and presents the completed idea in clean neat flow. The way to really understand the idea is to re-create what the author left out. Read between the lines.

Pity there's little mathematical writing that actually _does_ contain these blind alleys and mistakes. Part of why I enjoy "Concrete Mathematics" by Graham/Knuth/Patashnik is that it's one of the rare counterexamples.


I was thinking of ideas for a talk recently, and I thought of "Things I tried that didn't work and one that did" or something to that effect. However, when I looked through my old failed approaches, I found the amount of documentation was proportional to the level of success of the approach, making such a talk nearly impossible.


There's a contrast between the comments here about Feynman, and the author's example of birthdays. The birthday data is totally random, and the author's assert this is the sort of thing mathematicians enjoy. It strikes me that Wolfram does this too, he'll demo something by saying "let's get some data" and then generate a big pile of random numbers.

I usually space out at that point. I understand the utility of it, but I find it worthless in most cases. I'd rather understand a concrete example well, then check my understanding by trying the random case, then try to think of some clever or experience based edge case or counterexample.

I think Feynman, especially later in life, probably had the gift of jumping straight to step 3: he understood that his most valuable contribution could often be simply expanding the space of possible examples. And random doesn't really get you the whole space, and certainly doesn't get you the interesting parts of the space.


One good advice our calculus lecturer gave us was:

"Proofs are not meant to be understood by reading them from beginning to end. They are usually meant to be `checked` that way. Most of the time, I start reading the proof from the conclusion and work backwards. Often I write my proofs that way as well."


Good advice. Here is my advice for reading research papers. http://muratbuffalo.blogspot.com/2013/07/how-i-read-research...


A rather obvious but often overlooked piece of advice is to "read the masters".

IMHO it is very easy to waste tonnes of time reading papers / books that are OK but still vastly inferior to an account of a master.

Want to learn index theory: read Atiyah and Singer's original papers.

Interested in the classification of quadratic forms: read Serre's course in arithmetic.

Need to learn about the recent breakthroughs on prime tuples: read Tao!

Find time to read Weil, insist on reading Poincare, come up with an excuse to read Scholze etc.

Top mathematics literature is often spectacularly well written.

See also: https://mathoverflow.net/questions/28268/do-you-read-the-mas...


Mathematical notation is often too vague, informal and too dependent on context.Frankly there is too much ambiguous overloading of symbols.It seems the language has evolved to be succinct and short to write, rather than being explicit and unambiguous.I know maths people say that it is meant to be read by people and not by computers. More people are acustomed to reading code than ever before.I feel that math notation needs reform that makes it formal, unambiguous and capable of describing imperative manipulations rather than be merely declarative, with clear annotations of type information of entities.


That's what type theory is for. There have been some very interesting developments in the last 40 years that you might want to check out.


I like this approach. I've always been stumped by the exact phrases like "it follows easily" and my eyes tend to glaze over whenever I encounter that latex math formula typeface. Breaking it down like this suddenly helps me appreciate the other layer of communication in math writing, which isn't just about expressing a specific mathematical idea - but also about expressing how to appreciate it.

One gripe is the circular > Before you start to read, make sure you know what the author expects you to know.

How can you know what the contents of the text require before you know (read) the contents of the text?


As others have said elsewhere, skim it once or twice, ignoring the detail, reading the text, getting an overall gist of the way it goes.

Then brew a fresh coffee, grab pad and pencil, roll up your sleeves, and make notes as you go.


What I most enjoy about reading mathematics is convincing myself that what I'm reading is true. I like to keep a pad of dot-graph paper and a pencil with me as I read to break down the theorems, lemmas, and expressions as I go; try derivations, etc. Martin Gardner got me into the habit as I read his articles while I was growing up.

These days I can even toy with the idea in Lean[0] or TLA+ and find different ways of formulating the results. What a time to be alive!

[0] http://leanprover.github.io/


It's too bad in the majority of cases you won't have someone besides you answering all the questions. Without that, the reader would've gotten stuck long ago.


After many years of frustration not being able to read physics papers, a helpful physics guy told me: when it's bolded, that means it's a matrix, and that other one, they didn't say so, but it's a vector, so this step is a vector matrix operation.

(that's why, today, I use numpy, where the operations are much easier to see).


Also here: http://web.stonehill.edu/compsci/History_Math/math-read.htm In fact, I think this must be the original source.


I’ve been struggling with this lately as I’ve been studying ML/Stat. Thanks ColinWright!


Pure mathematics is, in its way, the poetry of logical ideas - Albert Einstein


This advice could be adapted to more general advice on learning


I would add - draw!


Just my perspective, but mathematics seems like badly-written software to me. Shitty single-letter variable names with all the code in main() without any separation of concerns.


try reading some proofs in coq to see how badly software does in making mathematics readable.

nevertheless, i agree for things like white papers the overloading of identifiers is frustrating.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: