Hacker News new | past | comments | ask | show | jobs | submit login
Toward an exploratory medium for mathematics (cognitivemedium.com)
111 points by oskarth on Feb 28, 2016 | hide | past | favorite | 23 comments



Are these videos of an functioning piece of software, or mockups? There are a lot of interactions that are glossed over, and it's not obvious to me how this software would function.

I'm also skeptical about the characterization of an exploration of the properties of a single 2D matrix as "real mathematical work."


this looks really cool!

I think it's weird that the author dings matlab and mathematica for being unable to do counterfactual reasoning. matlab and mathematica are computational tools, they don't do "reasoning" the way that say coq or other proof assistants do. and proof assistants can do counterfactual reasoning, so what's the deal? beyond that it would take a lot of work to encode these graphical diagrams into coq I guess...


I think he is arguing that they don't aid in counterfactual reasoning. They provide no facilities to help you yourself discover contradictions. This isn't about automating proofs, just helping you think through the problem.


Bah, I totally wrote this wrong. What I really meant to say was that it is not an automated system for doing a proof. It is a tool that helps you do reasoning and thinking. Augmenting human intelligence rather than replacing it.


I think the proponents of proof assistants would say that the proof assistant is also there to help you do reasoning and thinking.


I think they would! But a proof assistant aides you by checking your abstract thinking; you are still responsible for doing all the thinking yourself. This kind of tool aides in reasoning via a concrete example that can be tweaked in real time to see different sides of the problem.


> But a proof assistant aides you by checking your abstract thinking; you are still responsible for doing all the thinking yourself.

This isn't really true. Nowadays, Coq can automate much of the process of coming up with a full proof - which is exactly what requires “abstract thinking”. (Of course, you still need to identify “strategic lemmas”, but even these lemmas can often be proven mostly automatically.) The downside is that machine-generated proofs are often gibberish from the point of view of human intelligibility, but that's okay if you're only interested in the truth of what is being proven.

> This kind of tool aides in reasoning via a concrete example

Actually, going from a concrete example to a more general abstract concept requires you to do the thinking yourself. At least if you want the result of the generalization process to be valid.


Surely Coq can fill in the wholes, but it is completely abstract; it doesn't use concrete examples to do this, and anyways, you really have to understand what it is doing.

The point of this kind of work is that it augments your thinking by allowing you to visualize and manipulate your concrete example. Before, you'd just have pen and paper for that, with no assistance from the computer at all. The whole formal kick really comes after you have enough intuition about the problem, this comes before that and aides in the intuition accumulation process.


Why do I need an intuition when I can just manipulate formulas?


Hey, isn't that it? Some people can just spend all their time in abstracting thinking land, manipulating formulas without concrete examples providing any context, because they have some amazing super power that many of us (maybe most?) don't have.

Others need context. We need to see concrete examples of the problem, play around with them, explore them, until our brains can "get" a generalization.

And in the end, maybe we all benefit from concrete context? When you are manipulating formulas, do you impose a concrete example in your head to guide that manipulation? Wouldn't it be great to get that out onto the computer somehow?


I see two concerns being conflated here: (0) how to motivate the study of a formal system, and (1) how to actually study the formal system.

To motivate the study of a formal system, that is, to convince someone that the system is useful, obviosuly you need examples and applications. To a non-mathematician like me, that motivation must come from outside mathematics, e.g., how to design and write reliable programs that are easy to understand and maintain.

But, once you have decided that a formal system is useful, you really need to understand it in its own terms. You seem to view formulas as “too abstract”, and in need of “explanation” (not just motivation) in terms of something “more concrete”. I don't see why. By itself, a formula is nothing but a well-formed syntax tree, that is, a data structure just like lists or arrays (though usually with more complex internal invariants). Do you think lists and arrays are in need of “explanation”? The rules for manipulating formulas are themselves also fairly mechanical and concrete, just like the rules for manipulating lists and arrays.

Or am I missing something?


This isn't about motivation. Its not even about study, rather how do you go about doing formal reasoning at all? Prove X has property P, what is even the first step? How do we get to the second step, and so on? Doing a proof is not a mechanical process, there isn't an algorithm for deciding what to do next to reach your goal!

Programming is a great example of this. Those lists and arrays don't appear out of nowhere. Someone has to write the code, how do they write the code? Why use a list to store those elements? Programs are generalized to operate on a wide variety of inputs to create a wide variety of outputs, but when you are writing code, you are thinking about just a few examples of those, you imagine them in your head and they guide the code you write. But perhaps the computer could help there as well.


> This isn't about motivation. Its not even about study, rather how do you go about doing formal reasoning at all? Prove X has property P, what is even the first step? How do we get to the second step, and so on? Doing a proof is not a mechanical process, there isn't an algorithm for deciding what to do next to reach your goal!

Yep, there's no general algorithm for coming up with proofs. Practice, experience and good heuristics help, though. And if they don't, then you redesign the formal system until they do.

> Programming is a great example of this. Those lists and arrays don't appear out of nowhere. Someone has to write the code, how do they write the code?

Same as above. Just replace “proofs” with “programs”, and “formal system” with “programming language”.

> Why use a list to store those elements?

The desired invariants (see below) and complexity bounds for your code will tell you what data structures might be more convenient than others.

> Programs are generalized to operate on a wide variety of inputs to create a wide variety of outputs, but when you are writing code, you are thinking about just a few examples of those, you imagine them in your head and they guide the code you write.

I can't speak for others, but I really don't think that way. When I'm designing an algorithm, or when I'm trying to understand someone else's design, what matters to me first and foremost is its invariants - what the program preserves, even though the process' state is changing. Only if I can't see what the invariants are, then I might use some examples to generate plausible candidates, but the job isn't done until I have found and confirmed the invariants themselves. In other words, I don't conflate “works for these few examples” with “works in general”.


> Practice, experience and good heuristics help, though. And if they don't, then you redesign the formal system until they do.

I'm not sure anyone really understands the cognitive processes behind doing math. But maybe?

> The desired invariants (see below) and complexity bounds for your code will tell you what data structures might be more convenient than others.

I rarely write code where I even need to think about complexity bounds! I'd be surprised if that was a dominating concern for even a significant fraction of programmers (systems HPC programmers, for sure, but...UI programmers?).

> Only if I can't see what the invariants are, then I might use some examples to generate plausible candidates, but the job isn't done until I have found and confirmed the invariants themselves. In other words, I don't conflate “works for these few examples” with “works in general”.

We don't. But you need to start somewhere. Don't underestimate the value of a few good examples in the problem solving process.


> I'm not sure anyone really understands the cognitive processes behind doing math.

As long as we all play by the rules of the symbolic game, I don't really need to understand what's going on inside anyone else's (or even my own) head.

> I rarely write code where I even need to think about complexity bounds! I'd be surprised if that was a dominating concern for even a significant fraction of programmers (systems HPC programmers, for sure, but...UI programmers?).

Invariants still remain, e.g., “the textboxes Red, Green, Blue, Hue, Saturation and Brightness must contain each a number between 0 and 255 inclusive; additionally, these numbers must satisfy the following equations (...)”.

> We don't. But you need to start somewhere. Don't underestimate the value of a few good examples in the problem solving process.

Oh, sure, examples can be a useful tool for finding the general rule, as I mentioned in my previous comment. But they don't replace the general rule.


Just to point out, I enjoyed our conversation. This is a debate that I think needs to happen.


Matlab has a package for symbolic computation. It sounds to me like the author would want some of that, although I didn't quite follow through the whole argument.


Can anyone summarize?


Many useful mathematical proofs can be derived based on proving the impossibility of a contradictory assumption. I can try to disprove the triangle angle sum theorem (that the sum of the three angles in any triangle is 180) by attempting to draw a triangle that contradicts that assumption. I may begin by drawing two 90 degree angles. In doing so, I instead demonstrate that the 2 unconnected lines will never intersect in 2D space, and thus the figure cannot be triangle. This is a useful step along the way of formally proving that the sum of angles in any triangle is 180. My attempt at drawing an impossible figure can help visualize exactly why such a figure is impossible.

This suspension of constraint enforcement is easy on pen and paper. I can attempt to draw whatever I wish. However, there is no easy way to experiment in this way with modern mathematical software. How do you formalize a proof by contradiction in software that has these constraints pre-programmed?


That the internal angles of a triangle on the Euclidean plane add up to pi, can be derived directly, without resorting to proof by contradiction. (Hint: Draw a parallel line to one of the edges, which passes through the vertex not contained in that edge.)

Also, a proof by contradiction of an equality is unsatisfactory in constructive mathematics, because, in general, you can't go from “that A and B are not equal implies a contradiction” to “A and B are equal”. (This would require equality to be decidable.)


The way the term medium is used here really bothers me. For one, because I was taught that a medium is a oneway communication channel. Further more, because the plural media has an idiomatic meaning in English, that is the publishing industry. I find it Ironic that it's in the name of the site, even, although I should judge the content by its merit. I don't because it's tl;dr and I got lost around the explanation of SVD (a link to wikipedia would be enough).


I don't know who erroneously taught you that a medium is always a one-way channel.

In the creative sense, it's a cliche to talk about exploring something "through the medium of dance" or to refer to painting or drawing as a medium. The blackboard is a traditional mathematical medium.


It's common to call video games a medium. So that's a good example if it helps.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: