Since that unveiling of Wolfram|Alpha, I have heard a few people complain that it can’t do this, that, or the other thing which Google, Wikipedia, or Mathematica can currently do, and therefore Google, Wikipedia, or Mathematica will remain their first choice for everything. To them, I have this to say:

You guys who expect it to be Google + Wikipedia + Mathematica + fluent in English are just setting up unreasonable expectations. If I build a new power plant and expect it to match the energy output of the sun, I’ll be disappointed too.

It was designed to be first and foremost a computation engine. It’s not intended to replace Wikipedia, or Google, or Mathematica. Read here for more details. Note a few things:

Goals
Wolfram|Alpha’s long-term goal is to make all systematic knowledge immediately computable and accessible to everyone.

It’s not intended to be a dictionary, or a math/physics text, or anything of the sort. It’s meant to give you immediate access to data, and be able to offer some relevant graphs and computations with that data. It doesn’t have all the worlds data in it yet (and probably never will, considering how fast data is generated), but it has a lot.

Our goal is to accept completely free-form input

I think considering that I can’t even understand what some people type onto the internet, it will never be completely free form. They’re going to try to get as close to that as possible. They do this much better than Wikipedia, but perhaps not as well as Google (though you don’t get the proverbial digital diarrhea of websites that you do from Google). It needs some work to perfect, and I expect this to improve over time, though as long as there are people typing things online which I can’t make sense of, I don’t expect their algorithm to make sense of it either.

As of now, Wolfram|Alpha contains 10+ trillion of pieces of data, 50,000+ types of algorithms and models, and linguistic capabilities for 1000+ domains

This should make it abundantly clear that it’s designed for retrieval and calculation of data, rather than general definitions/education.

Future
Wolfram|Alpha, as it exists today, is just the beginning. We have both short- and long-term plans to dramatically expand all aspects of Wolfram|Alpha, broadening and deepening our data, our computation, our linguistics, our presentation, and more.

This is, like Wikipedia, a never ending effort. There will always be more to add, as well as simply changing things to better reflect the expectations of the current generation of users. It’s impossible to release it completely “finished”, since it will never be completely finished.

Wikipedia, Mathematica, Wolfram|Alpha, and Google are all very different. Each one excels at some things, and fails at others. You don’t search Wikipedia for instructions on how to sew, you don’t ask Mathematica to define terms for you, you don’t ask Google to solve differential equations, and you don’t ask Wolfram|Alpha for introductory calculus lessons. There is some overlap between each of them, but as long as you use each of them as they were intended, you’ll be able to get the most out of all of them.

In his 1912 book The Problems of Philosophy, Bertrand Russell wrote the following three laws of thought, which he considered “self-evident logical principles”.

  1. Law of Identity: Whatever is, is.  Symbolically:  \mathbf{A} \equiv \mathbf{A}
  2. Law of Noncontradiction: Nothing can both be, and not be.  Symbolically: \neg \big(\mathbf{A}\wedge \neg \mathbf{A}\big)
  3. Law of Excluded Middle: Everything must either be, or not be.  Symbolically: \mathbf{A}\vee\neg\mathbf{A}

These all, at first glance, seem self-evident.  However, upon closer inspection it turns out that all three are wrong (or at least, are limited in scope).  In most common cases, Russell is correct, and all three apply.  Any time a mathematician does a proof by reductio ad absurdum

\big(\mathbf{A}\Rightarrow\neg\mathbf{A}\big)\Rightarrow\neg\mathbf{A}
he is applying the second and third assumptions (#2 states that if \mathbf{A}\Rightarrow\neg\mathbf{A} then \mathbf{A} cannot be true, but #3 states that if \mathbf{A} is not true, then \neg\mathbf{A} must be true).

1.  Law of Identity: Whatever is, is.  \mathbf{A} \equiv \mathbf{A}

The law of identity holds if we only restrict ourselves to equivalence relations (it is, in fact, one of the three properties in the definition of equivalence relations, the other two being symmetry and transitivity).  If we consider all possible relations it may or may not hold.  It is trivial to find an example which does not hold:  the “less than” operator.  5<5 is clearly not true.  Relations which have this property are called reflexive relations, but they certainly do not make up all possible relations.  When considering more complex relations than “equals” or “less than”, it is worthwhile to check if you are dealing with a reflexive relation or not, rather than to assume that all relations are reflexive.

2.  Law of Noncontradiction: Nothing can both be, and not be.  \neg \big(\mathbf{A}\wedge \neg \mathbf{A}\big)

The law of noncontradiction is actually an assumption on the theory you are working within, the assumption of consistency.  Unfortunately, thanks to Gödel, given a sufficiently complex logical theory, it is impossible to prove that it is consistent (or rather, if you can prove that it is consistent, then it is inconsistent).  Further, not all logical systems are consistent, so this clearly doesn’t hold in all cases.

3.  Law of Excluded Middle: Everything must either be, or not be.  \mathbf{A}\vee\neg\mathbf{A}

For the law of excluded middle, we will look at Russel’s paradox, given a consistent logical system.  Russel’s paradox is roughly this:  Define the set of all sets which do not contain themselves, and then ask if this set is a member of itself.  Formally:

\mathbf{A} = \big\{\mathbf{X}|\mathbf{X}\not\in\mathbf{X}\big\}
  What is the truth value of the statement \mathbf{P} = \big(\mathbf{A}\in\mathbf{A}\big)?

Assume for a moment that \mathbf{P} holds, that is, \mathbf{A} is a member of itself.  In that case, by the definition of \mathbf{A}, \mathbf{A} is not a member of itself, \neg\mathbf{P}.  As well, if \neg\mathbf{P} holds, then \mathbf{A} is not a member of itself.  In that case, by the definition of \mathbf{A}, \mathbf{A} is a member of itself, \mathbf{P}.

If we assume that #2 holds, that is, we cannot have \mathbf{P}\wedge\neg\mathbf{P}, then we must have neither \mathbf{P} nor, \neg\mathbf{P}.

If on the other hand, we assume that #2 doesn’t hold, then the theory is inconsistent, and everything can be proven true and not true.  If 2 doesn’t hold, then there exists at least one \mathbf{X} such that \mathbf{X}\wedge\neg\mathbf{X}.  Given \mathbf{X}, we know that the statement \mathbf{P} = \big(\mathbf{X}\vee\mathbf{Y}\big) must be true for any \mathbf{Y}.  But given \neg\mathbf{X} and \mathbf{P} we conclude that \mathbf{Y}.  The same holds for \neg\mathbf{Y}, therefore, letting \mathbf{Y} = \big(\mathbf{A}\vee\neg\mathbf{A}\big), \neg\big(\mathbf{A}\vee\neg\mathbf{A}\big), and #3 doesn’t hold.

Notes:

I am aware that my treatement of #3 uses the assumption of #3 in it’s proof (that is, I assumed either #2 or not #2) this is perfectly acceptable, since if the assumption is wrong, we are already done.

A treatment of #3, which is less interesting, can be seen with the statement “This statement is false”.  Symbolically: \mathbf{P} = \neg\mathbf{P}.

This is meant to be an interesting discussion of formal logic, rather than a thorough treatment of the subject, which would take several university courses, and even then you wouldn’t cover it all.  As such, it is far from rigorous, intentionally so.

I came across this and then this, and couldn’t not comment.

Everyone who knows me knows that I used my computer to automate as much as possible while researching.  Almost everyone doing experimental science has used computers to collect data, and control equipment.  Almost everyone doing theoretical work has used computers to create their data by writing a simulation.  Almost everyone doing any type of science has used computers for data processing and analysis.  Drawing conclusions has, thus far, been up to the researchers.  These Cornell scientists are trying to change that by developing a computer program that actually derives the fundamental laws… sort of.

The proof of concept they used was to derive Newton’s laws of motion, a process that took early “physicists” hundreds of years to grasp, in a couple of hours, simply by observing a chaotic double pendulum.  It doesn’t explicitly give you \vec F = m\vec a, rather it analyses the data, and returns to the researcher the invariant quantities (such as energy and momentum) in that data.  It’s not clear from the articles what the inputs for the simulation were, or how much known physics and math was required by the program to solve this, but it’s still impressive.  Afterwards, it is still up to the researcher to determine which quantities correspond to known physical laws, and which ones represent something fundamentally new.  The plan is to apply this to complex systems, such as biological ones, to try to find new “laws” governing them.  Complex systems are easy to study on a macroscopic scale (give patient X, Y happens), and on a microscopic scale (X reacts with Z  to form W), but to measure things in between is notoriously difficult (not only will X react with Z, but also with A, B, C, and D, which in turn can react with E, F, G, H, and I…).  Many mathematical and computation tools have been developed for analyzing these systems, and not being a biologist, I don’t know how well knowing the invariant quantities in a process will compare to the current tools, but I can envision it being helpful in certain condensed matter physics problems I have worked on in the past.

If/when the paper appears, and more results of the applications are shown, I’ll try to post an update with the new information.