Leslie Lamport Tells Mathematicians How to Write Proofs (2014)
blogs.scientificamerican.com
blogs.scientificamerican.com
Fully-justified proofs are frequently used to teach geometry and abstract algebra, and are also needed for machine-checked proofs. Outside these contexts, I agree with Lamport that they are useful to catch mistakes, but I wouldn't write them myself because they are incredibly tedious. For communication in papers, narrative proofs can convey ideas and intuition at a much higher bandwidth.
Despite the wording in the article, this is false. A theorem is not false if there is an error in a proof for it. They only showed that 1/3 proofs of theorems had an error. It doesn't say if these were minor errors (omitting an edge case where it's still true, but not handled in the proof, but easily covered), or major (the theorem is actually false).
Quoting the article:
> Some of them were false because the proofs were wrong, and some were false because they relied on wrong proofs.
This is not what 'false theorem' means. This might be pendantic, but isn't that kind of the point here?
When you publish the proof for a theorem, you're generally the first to do so. Aren't you? If there is an error in the only published proof ever, your theorem is unproven. QED.
Edit: to downvoters: please explain my error. I thought I was only telling the obvious here.
Seriously though, I don't know what makes this forum tick. Someone's gotta explain what is socially acceptable around here. I know we're not supposed to complain about votes here, but I genuinely don't understand what happened. (Or rather, what is happening, the votes seem to flow up and down for no discernible reason.)
And I'm pretty sure that if I didn't do it, my "who cares" comment above would have been further downvoted. I observed this several times on several forums, sometimes votes have a momentum, and breaking the rules like I did can sometimes stop that momentum. (This works the other way too: popular comments often stop having further upvotes after the first reply that disagrees.)
Incidentally, I really think a good proportion of downvoters hit the button before reaching the end of the comment. Not because they're personally offended, but because their troll filter judge quickly, from the very first words (thinking back with a cooler head, I can't blame them). Starting a comment by something that looks offensive if taken out of context is a pretty sure way to get it downvoted to oblivion.
Still, the threshold looks pretty damn low.
I understand why complaining about downvotes is looked down upon (off topic, distracting, feed the troll…), but there are cases where those are both unexpected and unwarranted. I mean, I originally replied to a comment that didn't add to the discussion with a comment that did. What was I supposed to do with it? What am I supposed to learn from it?
Not even you provided any meaningful feedback.
That not everything is about you is a decent start.
https://news.ycombinator.com/newsguidelines.html
p.s. Could you please not take HN threads into off-topic meta-hell in the future? There's a reason the site guidelines ask people not to do that.
I hate that kind of manipulation, and it got to me.
> and moreover is at odds with how mathematics actually works
Ah now there's something interesting. How exactly was it at odds with maths? I never said anything about how a theorem was true, or provable. Just proven. If you could tell me how that was at odds with how maths works, I'd most probably learn something.
On the other hand, it's okay for a program to not be proven, because it can be useful even if it has bugs.
True, and a very important point. But... if the program has bugs, do they affect the results? Do they affect the results enough to matter? How do you know? In particular, what is your objective proof that the program does what you need it to do?
For many programs, such concerns are extreme overkill. For some, though, you have to prove that it does what you need it to.
Programs that do need a proof still have model checkers like TLA+, and proof assistants like Coq.
In theory there is a greater risk of mistakes, but I don't think that it's enough to justify that much extra work. A small study is not enough evidence.
Completeness and brevity are not entirely at odds.
http://worrydream.com/#!/ScientificCommunicationAsSequential...
No mathematician today doesn't have access to a computer. Just fold the proof to some appropriate coarse level by default, and let the reader expand any part they want to read. It's not like our computers had any meaningful limit on how big a mathematical proof could be.
This may gradually change if proof assistants and proof checkers improve. It may become to incorporate some machine learning aspects and let algorithms search proof space that is too tedious for humans. This would finally turn computer into bicycle for mathematician.
I would say the two biggest difficulties were 1) Undoing all the very bad math education I'd received earlier in life, and associated repulsion that came from it 2) Figuring out that when I ran into walls understanding certain things it could always be reduced to gaps in my knowledge that were implicitly assumed to not be there. I often ran into that reading proofs in the early days and wanted nothing more than 'very explicit' proofs as you describe (I used to always write mine that way too! In part because it's what I wished the authors were doing).
I'd like to build something in software that automatically associates expandable annotations to mathematical notation, e.g.: http://images.slideplayer.com/34/10244075/slides/slide_5.jpg —It would be super annoying if all the text were always revealed, but with a little cleverness and imagination I think a good scheme could be developed which would satisfy both beginners and experts. I would want a standard library of annotations which would automatically get associated just by using certain standard notational elements.
Here's another demo I put together to try out the same concept for natural language documents: http://symbolflux.com/lodessay/
Predicate Calculus and Program Semantics is a book that is based on the technique.
[1] https://tex.stackexchange.com/questions/49416/which-packages...
While not quite obvious, he could be seen as adverserial by labelling hierachical structured proofs as "proofs of the 21st century" and the ones other mathematicians use as "17th century proofs".
Promoting them as a thorough way to write proofs with additional advantage for the reader to adjust the level of detail of the explanation to their respective level of knowledge might have been a way to get people involved. He's even asking for feedback [1], unfortunately only to denigrate the adressed people in the next sentence [2].
It reminds a bit of Ignaz Semmelweis who managed to do good by reducing mortality of women in childbed by requiring desinfection before examinations but failed to spread the idea by being adverserial to his colleagues [3].
[1] "I am sure my way of writing proofs can be improved, and I encourage mathematicians to improve it", How to Write a 21st Century Proof, p. 5
[2] "They will not do it by remaining stuck in the 17th century.", How to Write a 21st Century Proof, p. 5
So everyone else, please skim the SciAm article and then take 15 minutes to enjoy reading the paper [1] in Lamport's own words.
See page 2 of the paper (page 5 of the PDF) for example. That is where he is talking about people being stuck in the 17th century and "how sloppy their proofs are" [1]. I am not arguing that this might not be true! - I argue that it is not helpful to approach introducing and advertising the idea in this way. I'm not a mathematician but I'd understand if someone reacted with defiance to wording like this.
[1] https://lamport.azurewebsites.net/pubs/proof.pdf, p.2 (PDF page 5)
Probably because negative solutions were not recognized as valid at the time.
Basically, proof by contradiction is not a good idea.
I don't think that we should throw it out, but neither do I think that we shouldn't do so.
> Basically, proof by contradiction is not a good idea.
Based on what?
And maybe you should not make generalizations based on your reading list. In particular, your reading list could be selective, thereby making generalizations worthless. Or you could misread your reading list, where they do not explicitly state that they believe in and/or depend on proof by contradiction.
Returning to the discussion: adamnemecek said that most mathematicians needed to know about constructive mathematics. When asked why he thought they didn't, he said that most math books he read didn't discuss it (presumably, "it" = "constructivist mathematics"). So I said that adamnemecek couldn't draw that conclusion on that evidence, though I should perhaps have been clearer that, as you said, "99% of math books don't worry about issues like the axiom of choice or constructive math". You're actually agreeing with what I was trying to say - you can't look at an average math book and decide whether the author knows about constructivist math or not, because it's outside the topic of the book. Even if the book does lots of proof by contradiction, that only proves that the author is not writing a constructivist book, not that the author is unaware of constructivism.
I think adamnemecek wants every math book to be explicitly constructivist. That, I think, is a complete misreading on his part of how important constructivist math is.
Infinity simplifies mathematics _a lot_ in proving things from the basics of calculus (i.e. analysis).
It might fail if it absolutely must rely on LEM, but a weaker doubly negated version will still work. This might be a deep, important fact in some setting or another.
If anyone thinks constructivism is crackpottery, then they're just ignorant and it's only incidental if it hasn't impoverished their toolkit.
As Andrej Bauer likes to point out—see, for example, Section 3.1 on p. 486 of http://www.ams.org/journals/bull/2017-54-03/S0273-0979-2016-... —non-constructive mathematics is a special case of mathematics (in essentially the same way that untyped = unityped programming is a special case of typed programming).
A common style of proof among novice mathematicians, and even occasionally some professionals, is the good old: "Let's prove `P` by contradiction. Assume `not P`. Then [direct proof of `P`]. Therefore, we have a contradiction."
(I think that the fondness for this technique above all others among novices is that, no matter how hard the problem, you always at least know how to start a proof by contradiction.)
> Basically, proof by contradiction is not a good idea.
The first statement is probably morally true (though I'd argue that almost every professional mathematician knows about constructivism, so maybe you meant something more like "take constructivism seriously" than just "know about constructivism"); and I think that judgements like the second probably aren't easily made scientific, and, if unscientific, are unuseable.
That said, it also seems to be almost entirely beside the point of formalisation (except in the sense that it seems that 'naturally occurring' formal logics tend to be constructive), so … why mention it here?
1. Are there any mathematical truths/theorems that are provable in constructivism that is not provable in "regular" (non-constructive) mathematics?
2. Are there proofs that are easier in constructive mathematics than in non-constructive mathematics?
If the answer to both questions is "no", on what do you base your opinion of the superiority of constructivism?
Or, to say it differently, aren't there things that are true in "classical" (non-constructivist) math that are not true in constructivist math? My impression was that what is provably true in classical math is a strict superset of what is provably true in constructivist math.
I agree with you, if that's not clear. I don't understand your law analogy precisely, but I'm assuming in a general sense you mean 'human defines rule set, rule set retains it's properties provided that humans continue to enforce rule set'. To my mind, that is so open to variation, my brain may begin to attack itself. Humans can 'make sense' of anything. Computation needs to be able to do what it does regardless of whether a human is there to provide input and verify it 'makes sense' to the mind that defined it.
Universe turning into paperclips, sure, but the fact that a set of properties can be used to recreate themselves through their own definitions, that's beautiful, that's computation, rigor. These are things I used to love about math, but computer science just does math better than math does.
What you're arguing for is a view of mathematics that has been dead for a century now. With the Godels incompleteness theorem and Turing halting problem show you that there are cases of 'true' statements in mathematics that can't be reduced to "well-defined logical axioms".
Most mathematicians who don't study metamathematics or philosophy of math have no reason to ever think about formalism or computability.
An aside for people who think Godel's incompleteness theorem somehow invalidates math: don't forget about the much lesser known Godel's completeness theorem, which states that if something is true in every model
Most mathematicians who don't study metamathematics or philosophy of math have no reason to ever think about formalism or computability. Godel's completeness theorem stipulates that there are self-contained consistent systems within the language wherein all of their nice proofs are true and universal, and where plenty of truth still needs to be discovered.
But ok, my point is, how can you say the CH is a true statement that can't be reduced to axioms? What does it mean to be "true" besides that something follows from other truths? The choice of axioms matters, sure, but everything that's true within a system follows from the axioms of that system.
> What does it mean to be "true" besides that something follows from other truths?
I agree with you, but I also don't. You know as well as I, that 'true' can mean something besides 'that which follows from other truths'. All the rules you have to rely on (such as'implication) - that's a truth you are dependent on for math to work, but can not define within math. Implication is a fundamental foundation. But can you define implication without using the concept of implication?
> The choice of axioms matters, sure, but everything that's true within a system follows from the axioms of that system.
It's easy to point out flaws in reasoning. It's so, so much harder to have an airtight reasoning system, that goes for mathematics and computation, both, together, alone, etc.
> What does it mean to be "true" besides that something follows from other truths?
Truth is true, no more, no less. Once you turn it into symbols, it turns into a mess (or a work of art).
Not true. Also computer science is very vague in a way.
Leslie Lamport is a mathematician by education. And I have a good idea he'd prefer to be called a mathematician if he had to choose between the two labels (mathematician and computer scientist).
That's not to say CS, and programming, doesn't contribute to the process of rigor. In fact, I had a realization that a program is a form of constructive mathematics, and hence a program is more rigorous than a proof on paper in the following sense: a single typo in a math proof would be overlooked by the reader, but a single typo in a program could make it fail.
Still, in order to make connections between programming and mathematical rigor, you have be trained in mathematics, not just computer science.