6 ms·
I would recommend two things: 1. Since you seem to someone who reads papers sometimes, I would encourage you define your "programming notation" and start provi
by abdullahkhalids 5y ago
I would recommend two things:
1. Since you seem to someone who reads papers sometimes, I would encourage you define your "programming notation" and start proving theorems in that notation. Do it for sufficiently complex proofs: the ones that require a few different lemmas, span several pages, and use some non-trivial algebra. Then, attempt to present your proof to someone in your notation. Judge for understanding.
2. You might very well succeed. But if you don't, wonder why out of many many software engineers (or profs at software engineering oriented degrees) over the past few decades who read math/cs papers, no one attempted to use "programming notation" to write a book or notes to communicate mathematics to others?
- SAI_Peregrinus 5y agoWRT 2, plenty of people use more "programming" style notation. Most cryptography papers these days define algorithms as sequences of steps that look quite a bit like code, just with Greek letters for many of the variable names (but italicized words for function names). EG this paper[1] picked from the last week of IACR preprints shows the style. That's just the first one I clicked, the title looked interesting. Most of the rest use a similar style. The big reason for single-letter variable names is that historically multiplication can be denoted by concatenation. It makes formulae shorter, so they don't need line breaks. Personally I don't think that's a huge benefit, particularly when there's more than one sort of product possible so you end up needing to explicitly denote multiplication anyway. [1] https://eprint.iacr.org/2022/106.pdf https://eprint.iacr.org/2022/106.pdf (Page 7-8)
- deleted 5y ago[deleted]
- abdullahkhalids 5y agoSure, as a physicist, I have written papers with pseudocode for algorithms, and I think we would do well to express algorithms in this way. That's definitely an improvement that is slowly percolating various fields. But most mathematical theorems and their proofs are not algorithms, and not suitable for expressing this way. The reason for single-letter variable names is that mathematics is best learned by manipulating ideas by hand on paper and pen. And that many mathematical expressions are long and if we started using longer names, we would end up writing only a couple of statements per page, which would be much annoying than just using symbols.
- Jtsummers 5y agoNot everything in math is suitably expressed (or, perhaps, discussed) in an algorithmic form. Much (most?) of mathematics is operating at a level of abstraction that is far removed from an underlying machine model (in contrast to algorithms, like, well, the cryptographic algorithms you mention). Take matrix multiplication, imagine seeing this: C = zero(m,p) for k from 1 to n for i from 1 to m for j from 1 to p C_ij += A_ik * B_kj Now suppose that B is invertible and we actually want to know A in terms of B and C. Oops, we can't figure it out because we've tied ourselves to this algorithmic expression. In contrast to a more typical algebraic expression which describes not a computation but a relation: C = AB CB^-1 = ABB^-1 CB^-1 = A Perform that manipulation with the algorithmic description that helpfully obfuscates the relationship between the parts. [And this is a small example, algorithmic expressions of algebraic ideas, like plain English expressions of the same, does not scale very well.]
- User23 5y ago> 1. Since you seem to someone who reads papers sometimes, I would encourage you define your "programming notation" and start proving theorems in that notation. Dijkstra did just that[1]. That same site has hundreds of examples of him proving things in that very programmer friendly notation. Bear in mind that Dijkstra was trained as a “mathematical engineer” for his higher education. I’m not trying to be controversial, but traditional mathematicians are decades behind the best computing scientists when it comes to crafting formalisms. To be fair the typical practicing programmer is even further behind. I can only speculate about the appeal of a notation that makes it difficult or impossible to just let symbol manipulation do the heavy lifting. Perhaps mathematicians enjoy the intellectual exercise of holding all those concepts in mind? Perhaps they, like many guilds, appreciate the barriers to outsiders that they feel increase their own prestige? Or perhaps it’s just sheer inertia? I really don’t know. [1] https://www.cs.utexas.edu/users/EWD/transcriptions/EWD13xx/EWD1300.html https://www.cs.utexas.edu/users/EWD/transcriptions/EWD13xx/E...
- abdullahkhalids 5y agoI don't see anything in that link that is markedly different from math notation used by one math community or the other. Sure, there are difference that are "improvements" in some sense of the word, and I think some of those can be adopted. But nothing major, that will somehow massively reduce the complexity of understanding mathematics by non-experts.
- User23 5y ago> But nothing major, that will somehow massively reduce the complexity of understanding mathematics by non-experts. To give just one example, when done properly the use of hinting in the multi-line equational proof format will certainly ease the non-expert’s task of following a proof.
- abdullahkhalids 5y agoThe two-column proof has been a thing in math education for over a century [1]. I have been told by math educators that it is almost universally detested by school students, because of how it restricts their thinking. Nevertheless, it would be useful at the research level to include more of this hinting. But hinting is not a notational issue at all. [1] https://deepblue.lib.umich.edu/bitstream/handle/2027.42/42653/10649_2004_Article_5096042.pdf;jsessionid=010CB25D780CF8F8D1734F50743ED5AB?sequence=1 https://deepblue.lib.umich.edu/bitstream/handle/2027.42/4265...
- simias 5y agoI can completely understand using shorthand for complicated proofs (defining what they mean at the start). After all that's what I do in code as well: I often import and alias variables in the local scope, but it's limited to a very well defined context and explicit. What I disapprove of is using these very terse syntax in definitions like, say, in Wikipedia articles. In other words it's like how I have no issue using a variable named "int i;" locally in a function, but I'd consider it a very bad practice if a library exported a global "extern int I;" in their public interface.