With proofs, I normally think of the "work" as being in the derivation of a statement that is shown to be true. That is, the value is in deriving a new true statement that was not previously known to be true.
In the examples I usually see for using something like Lean, there's a true statement given, and the question is how to prove it. Although there are reasons this could be interesting, it doesn't seem quite as valuable as deriving some truth statement that wasn't previously known to be true.
Can something like Lean be used generatively, to generate multiple true statements given a set of assumptions?
Proof of true statements and discovery of new true statements go hand in hand. This is also because the proof tells you something about why the theorem is interesting. Generating multiple true statements given a set of assumptions is not very interesting per se.
But yes, something like, "in your situation, this is an interesting conjecture" would be nice in a proof assistant. Maybe AI will get us there.
But yes, I agree some kind of AI-ish guided suggestion process would be interesting. You'd have to quantify "interesting" probably to build such a thing but I suspect it could be done.
As pointed out by others generating random true statements is not very interesting because you can generate such trivially by appending && true as many times as you want to the statement.
So in general you always want to prove something, because only that can tell you something about what is true and what is not.
BehaviourMC(compile(src)) = BehaviourE(src)
You are basically saying that the machine code behaviour of the compiled source should be identical to emulating the source directly.
You then need to define what you mean mathematically by machine code etc. until the goal is fully specified.
And then you prove it correct.
"Let a,b,m,n be integers, and suppose that b^2 = 2a^2 ..."
So, (b^2)/(a^2)=2 b/a = sqrt(2)
or, in other words, sqrt(2) is rational. then it goes and uses this in the rest of the example.
That's hilarious. It's the brick joke, in math. https://plantsarethestrangestpeople.blogspot.com/2012/01/bri... It's a great example, made terrible (for teaching) because the punchline is never explained.
Your excerpt left out key information, which is the secondary hypothesis that am+bn=1
Hint: what are a and b? I won't wait for you to find values that satisfy the hypotheses.
It's the same flavor as: assume a=b+1, and b=a+1. Then a-b=b-a You can prove that p=>q, sometimes, even if p is false. (Especially if p is false!)
A later chapter provides the punchline.
https://hrmacbeth.github.io/math2001/07_Number_Theory.html#t...
Nothing special is going on there, but it may be distracting if the joke doesn't land.
Does anyone know of a Lean book that builds up the basics from absolutely nothing, not even the Lean standard library? I'm curious about the foundations that lie just above the language.
Lean is self-hosted, so the language is written in Lean. And it's well documented. Starting from the Prelude [3], all the way up to the language server (yes, Lean ships a parser combinator library and a JSON library with the language).
One caveat is that the toolchain version of the repo is the repo itself, so you'd have to follow the development guide [4] to set it up.
Also, this is different from the standard library std4 [5], which is actually not shipped with the language, but just a normal package developed and used as the standard library.
[1]: https://leanprover.github.io/functional_programming_in_lean/
[2]: https://github.com/leanprover/lean4
[3]: https://github.com/leanprover/lean4/blob/master/src/Init/Pre...
[4]: https://github.com/leanprover/lean4/blob/master/doc/dev/inde...
[1] https://www.cs.utexas.edu/users/EWD/transcriptions/EWD13xx/E...
"What some people like to call the progress of mathematics has always consisted in the subversion of paradigms. Pierre Deligne made this point in a lecture on Voevodsky’s univalent foundations: he said it reminds him of Orwell’s Newspeak, where the ideal was to have a language where it is impossible to express heretical thoughts."
https://siliconreckoner.substack.com/p/the-central-dogma-of-...
https://lean-lang.org/theorem_proving_in_lean4/title_page.ht...
You may need to use them in tandem, but I have found it much more productive to jump to the “number theory” section of TFA then to step through the official resource.
This resource also has its code online: https://github.com/hrmacbeth/math2001/tree/main/Math2001
One major ommission from TFA is lean's built in package manager and package builder lake: https://lean-lang.org/lean4/doc/setup.html#lake