Solving new and difficult theory problems… without looping into oblivion

Sometimes you decide that you need a specific theoretical result. For example, you may need a closed form formula for a given quantity. Yet, you barely know how to begin.

Maybe, you end up looping: you keep on revisiting the same ideas, again and again. You don’t seem to make any progress at all!

What do you do? Don’t be hasty to conclude that you can’t do theory. Mathematicians are just ordinary people.

Some advice that has worked for me:

  • Be patient. Work incrementally.
  • At first, don’t try to prove conjectures. Begin by trying to disprove them! It is often much easier to disprove something than to prove it. And most conjectures end up being false.
  • Find the simplest non-trivial variation on your problem, and work from there instead. What you will learn from solving a closely related problem might teach you how to break the real problem. A related strategy is to work on specific examples.
  • Be paranoid. Check every single fact or claim twice. And then check it again.
  • Run computer simulations to check your mathematics, or to suggest new conjectures.
  • Draw pictures. Use your visual cortex.
  • Try to abstract out the problem: find a more general problem. Sometimes, specific problems appear more difficult than general ones because you are thrown off by irrelevant details.
  • Be thorough. When trying to solve a difficult theoretical problem, be neat. For example, work as if you are trying to explain your problem to someone else.

Published by

Daniel Lemire

A computer science professor at the University of Quebec (TELUQ).

8 thoughts on “Solving new and difficult theory problems… without looping into oblivion”

  1. Good points.

    Just a footnote to your point about drawing pictures. Sometimes it helps to draw a BIG picture. Sometimes just redrawing the same picture 3x larger opens up your thinking.

  2. Fantastic advice. I studied Computer Science in college and I often had this problem in math class, while the mathematics kids pulled ahead.

    A follow-up question: outside of college, what is the best way to pursue a rigid mathematical education? I want to delve into machine learning, but the main thing holding me back is a poor mathematical background. I either 1) forgot the content of important classes such as linear algebra and number theory that are relevant to the subject, or 2) did not exercise application and thus the true meaning of the content in my math classes was never revealed. Math is one of the subjects that I benefited from taking in a formal institution because grades forced me to learn it (where as most of what I know about computer science I picked up on my own), hence my weakness in the subject.

  3. I agree with being neat and writing down every step. But I work best when I alternate being sloppy and being neat. When I’m my most creative, I scribble on paper. But then I follow that by typing notes up carefully in LaTeX, often when I’m tired and no longer thinking as quickly.

  4. @Adam Bossy

    I would suggest using wikipedia (it is a great source of mathematical material) combined with google scholar.

    Start with a narrow problem that interests you and then read all about it, then dig down into the various subtopics you need to learn, always starting from wikipedia. Keep in mind that you are going to be overwhelmed and blinded most of the time, but do not worry about it.

    Better yet! Write or improve wikipedia articles when you can!

    (It helps to learn TeX if you don’t know it already.)

    Also, use numerical simulations to test out your theories and formulas.

    Plus, be patient. Getting good at mathematics does not happen quickly.

  5. Or… use a theorem prover. Then you don’t have to worry about not being thorough enough. It will let you know if you haven’t. Well, unless you accidentally use an assumption without meaning to, but there are ways of detecting that too.

Leave a Reply to Robin Green Cancel reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    Markdown is turned off in code blocks:
     [This is not a link](

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see