Zulip Chat Archive
Stream: Lean Together 2024
Topic: Probability in the form. of P. Freiman Ruzsa - Rémy Degenne
Kim Morrison (Jan 09 2024 at 15:08):
Interesting reading re: PFR for those who haven't seen it yet: Terry wrote up a very nice blog post at https://terrytao.wordpress.com/2023/11/18/formalizing-the-proof-of-pfr-in-lean4-using-blueprint-a-short-tour/.
Christopher Hoskin (Jan 09 2024 at 15:24):
Is there any more info on how to use blueprints? The README is a bit sparse https://github.com/PatrickMassot/leanblueprint
Chris Birkbeck (Jan 09 2024 at 15:30):
There is a good blueprint example here: https://github.com/utensil/LeanBlueprintExample by @Utensil Song which I found very helpful
Rémy Degenne (Jan 09 2024 at 15:34):
I created a blueprint two weeks ago and here are the notes I took while trying to install everything. I know that Patrick updated blueprint recently, so some of it might be out of date, and some of it might just be me trying useless things. I agree that more doc would be great.
Advice: don't try to setup a blueprint on windows.
My notes
Patrick Massot (Jan 09 2024 at 15:44):
A lot more documentation and a more convenient way to setup a Lean blueprint is on its way.
Patrick Massot (Jan 09 2024 at 15:45):
I hope the above information by Christopher and Rémy will be completely obsolete in at most two weeks.
Terence Tao (Jan 10 2024 at 04:58):
Someone asked in the talk for an example of a task that was easy on paper but hard in Lean. One fact, which we didn't even bother to write in the blueprint because it was so obvious, was that if one had a collection of independent random variables ,say A, B, C, D, E
, then any collection of disjoint tuples of these variables, e.g., (A, C), (B, D), E
, were also independent. Proving this took us through quite a bit of dependent type hell before we found a proof (which was the second to the last thing we needed to finish the main PFR objective). Later we observed that with correct spelling of the statement pfr#ProbabilityTheory.iIndepFun.pi' , the proof was actually not too bad; many of the difficulties were of our own making. Nevertheless this was a major speedbump.
Related: the very last sorry we needed to fill was
abbrev S1 : Fin 3 → Finset (Fin 4)
| 0 => {0}
| 1 => {1}
| 2 => {2, 3}
example: Pairwise (Disjoint on fun x ↦ S1 x) := by sorry
Again, "obvious", but bashing this out with fin_cases
etc. looked really unappealing until @Johan Commelin found this elegant proof:
example: Pairwise (Disjoint on S1) := by
rw [pairwise_disjoint_on]
decide
Last updated: May 02 2025 at 03:31 UTC