← Back to context

Comment by empath75

4 hours ago

I spent two weeks proving a number theory result myself in lean just to see what I could do. (It’s something about composing polynomials with themselves and what other polynomials you can get that way).

It was a struggle with a lot of dead ends but it is just software engineering. It’s not a world away from getting a Rust program to type check.

The main problem I had with it is that LLMs will happily grind away case checking in Lean until the end of time and it’s up to you to see patterns and find dead ends. For example it wasn’t until I suggested to try translating the problem to a different characteristic that Mythos one shotted the proof (and found a counterexample for a related question I was working on).

My main problem now is _what to do with it_. I am not an academic, don’t know any academics and it’s a minor problem that I picked because I thought it was tractable and turned out to not be in the literature and fairly complicated, and the only reason I spent as much time on it as I did is that I thought I was an hour away from cracking it for about 10 of those days.

(In case anybody is curious about the proof, it’s that you can’t compose a single two variable polynomial over the integers with itself and any number of integer constants via substitution to generate all polynomials, but you can with x^2 - y and 1/2 if you allow rational numbers)

I just cleaned out the gutters on my house. Took a while to direct the guys I hired, but feel pretty proud of the result.

How did you learn lean? I’ve played the game but I still feel lost and bewildered. Did the action of proving with LLM assistance teach you the best?

  • I didn’t. Claude wrote all the proofs, I just validated that it was sorry-free, didn’t have any extra axioms other than mathlib and that it proved what i wanted it to prove (there’s tools for that). I did also find a actual mathematician who did a sanity check for me.