3 ms·
This is a very interesting project and it has actually set me on an interesting path. In scientific computation one blends mathematics and computation. The mat
by silentvoice 13y ago
This is a very interesting project and it has actually set me on an interesting path.
In scientific computation one blends mathematics and computation. The math is highly advanced, and it will tell you important things about your resulting code such as what kind of stability properties you should expect, and how "robust" the code is (deliberately ambiguous term, but in most cases it means: does your code work equally well no matter what parameters you throw at it?).
In the realm of physics simulations, these math questions turn out to be amazingly delicate and failing to answer them before running your code on a very large problem very often leads to unexpected (and wrong) results, if the code actually ever successfully finishes executing.
There is therefore a tremendous amount of literature where these questions are answered, all containing a meticulous amount of careful detail as well as deep insights coming from all the relevant branches: linear algebra, physics, functional analysis.
The problem however is that as we gain more understanding and knowledge the math hasn't gotten any easier. Sometimes the arguments are so sophisticated that it really leads me to doubt whether the result can be trusted at all.
This leads into something which I know very little:
A better understanding of foundations really is called for here, and a foundation which lends itself better to computation than what is currently available. Computers need to start being able to verify proofs better. Proof assistants exist today, but their use is currently limited to computer scientists because they rely on deep results in that field relating type theory to mathematics - it represents a tremendous barrier to practicing mathematicians.
I hope in the future that "reproducibility" in my field means not only submitting your code so that other people can reproduce your performance claims, but submitting proof documents to be independently verified on someone else's computer. Whenever I read the small bits about univalent foundations it sounds like they are adding magic sauce to make this possible, and so I follow it closely (but don't understand it all yet).
The interesting path I spoke of earlier: I'm now learning type theory and functional programming just so that I can make sense of this branch of computer science that I originally didn't know existed.
- chas 13y agoYou might be interested in Edward Kmett's automatic differentiation[0] package, ad[1]. It is one of my favorite non-trivial blendings of computer science techniques and more traditional mathematics. In specific, it uses Haskell's type system to prevent subtle numerical errors which other automatic differentiation libraries require the user to prevent by being very careful. The resulting code is much more trustworthy. [0] http://en.wikipedia.org/wiki/Automatic_differentiation http://en.wikipedia.org/wiki/Automatic_differentiation [1] https://github.com/ekmett/ad/ https://github.com/ekmett/ad/
- oggy 13y agoI'm not sure if it's really the foundations that are the biggest barrier to entry for mathematicians (at least for most fields of math). Admittedly, I don't have experience with dependent-type based systems such as Coq/Agda, which, incidentally, are what the authors use to formalize their Univalent Foundations. But at least for HOL-based systems (e.g. Isabelle/HOL or HOL4), you don't really need to understand their foundations in order to work with them. Oddly enough, they're neither the standard (first-order, that is, predicate logic based) ZFC theory, nor the Univalent foundations. Isabelle in particular already has reasonably large formalizations of classic results in analysis and linear algebra. It also has a nice structured input language which makes the proofs relatively similar to the standard mathematical language. Here's a formalization of the Hahn-Banach theorem (a central result of functional analysis): http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL-Hahn_Banach/Hahn_Banach.html http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/H... (the rendering is not complete, as many special symbols aren't replaced in the HTML version - it looks nicer when opened in Isabelle itself). If you're interested in learning more, you can start with the "new" tutorial: http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/prog-prove.pdf http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2... Anyway, I think that computer proofs are going to remain harder for the foreseeable future, no matter what the foundations. Human written proofs tend to skip and conflate many small steps, and this is exactly what makes them easier and faster to write. Ideally, the verification system would perform this small steps automatically on your behalf. They're getting better at that (the sledgehammer tool in Isabelle is great), but still very far away from what you'd need. Until that happens I don't expect to see pervasive machine-assisted proofs anywhere. Not least because of the dynamics of modern academia. It's publish or perish, and if doing computer proofs slows you down, a lot of people are going to chose not to do them, and this sets a standard in the field (where such proofs are not particularly valued). The whole post of course comes with a big caveat: I'm not familiar with Univalent Foundations (I watched the video but that doesn't really discuss them). If I'm wrong in my views I would love some UF experts to chime in.